我一直试图创建一个圆形图像但由于某种原因它已经输出为钻石。这是我的代码:
override func viewDidLoad() {
displayEmailFullNameImage()
self.editProfilePictureImage.layer.cornerRadius = editProfilePictureImage.frame.size.width / 2
self.editProfilePictureImage.clipsToBounds = true
self.editProfilePictureImage.contentMode = .scaleAspectFill
}
我对照片的限制:
我尝试过以下解决方案:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
profilePic.layer.cornerRadius = profilePic.frame.width / 2
profilePic.clipsToBounds = true
}
但这也不起作用。
这是图像的外观:
任何帮助都将不胜感激。
答案 0 :(得分:2)
答案 1 :(得分:0)
问题在于viewWillLayoutSubviews
在布局过程中还为时过早。您可以在viewDidLayoutSubviews
中做到这一点。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
profilePic.layer.cornerRadius = min(profilePic.frame.width, profilePic.frame.height) / 2
profilePic.clipsToBounds = true
}
或者,您也可以使用可设计的视图,并由该视图来处理:
@IBDesignable class RoundedImageView: UIImageView {
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = min(bounds.width, bounds.height) / 2
}
}
通过使其可设计,您可以在Interface Builder中看到带有圆角的渲染。
答案 2 :(得分:0)
我遇到了同样的问题,但是因为我已经从另一个视图复制并粘贴了该单元格,所以该单元格类正在为它提供用于另一个单元格的指令。