我试图建立一个UIView的社交媒体用户的个人资料和得到卡住的权利在一开始-当添加一个用户图像(UIImage)到我的UIView。下面是我尝试使用的代码:
import UIKit
class ProfileHeaderView: UIView {
private lazy var profileImage: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "hipsterCat"))
// Making Image Round
imageView.layer.cornerRadius = imageView.frame.size.width / 2
imageView.clipsToBounds = true
imageView.layer.borderColor = UIColor.white.cgColor
imageView.layer.borderWidth = 3
return imageView
}()
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
private func setupView() {
backgroundColor = .lightGray
addSubview(profileImage)
}
override func layoutSubviews() {
super.layoutSubviews()
profileImage.frame = CGRect(
x: bounds.midX - 64,
y: bounds.midY - 64,
width: 128,
height: 128
)
}
}
我的任务是使用CGRect在superView上定位UIImage,但是一旦我运行项目,它就不会出现在屏幕上(只有浅灰色的背景)。
UIImageView没问题,在注解layoutSubviews()覆盖时出现图像,但没有定位。
2条答案
按热度按时间xnifntxz1#
有很多事情可能会出错。你看到的最奇怪的结果是,一旦调整了大小,你根本看不到图像。
我最好的猜测是,您也在为
ProfileHeaderView
示例设置框架。请注意,有2个API用于郊游;一个是使用frame
,另一个是自动布局。在自动布局中,将调用一个方法layoutSubviews
。但是使用frame
,则只能调用frame
。所以你可能错过了另一个超驰器。尝试添加以下内容:
除了添加框架覆盖之外,我还添加了选项来确定视图的内容模式。您可能想将其移动到您的设置方法中,但如果它留在这里也不算太坏。另一个是设置拐角半径,这肯定需要在这里设置。这两个都是@HangarRash的。
最后,为了公平起见,最好有以下这样的东西:
iih3973s2#
我从评论中遵循@HangarRash的建议,并设法解决了这个问题。我做的事情是在
layoutSubViews
中设置角半径(并使图像变圆),同时将.scaleAspectFill
添加到UIImageView。最后的代码是: