UIImageViewcornerRadius 没有使它成为圆形[重复]
Posted
技术标签:
【中文标题】UIImageViewcornerRadius 没有使它成为圆形[重复]【英文标题】:UIImageView cornerRadius is not making it circle [duplicate] 【发布时间】:2017-10-06 05:12:42 【问题描述】:我有一个视图控制器,它显示在 UIView
中,因为我正在使用 CarbonKit 制作像 android 这样的标签。
我有一个userProfileViewController
,我在其中一个选项卡下显示,这有一个UIImageView
,我正在尝试使用此代码在一个圆圈中显示:
self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
self.userDisplayPic.clipsToBounds = true
结果是:
我的猜测是,这可能是因为 UIView
中显示的自动调整大小可能会压缩设计,但其他元素特别是更新按钮似乎很好。那么有什么建议可以解决这个问题吗?
【问题讨论】:
尝试在主线程上做。 我觉得你的图片宽高不一样。 问题可能出在执行此操作时。如果它在viewDidLoad
中,请将其移动到 viewDidLayoutSubviews
或更改您的约束
另一种选择是创建一个新图像以在您的图像视图中使用***.com/questions/29046571/…
【参考方案1】:
尝试在 viewWillLayoutSubviews 中设置cornerRadius,它将使用实际宽度作为半径。
override func viewWillLayoutSubviews()
self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
self.userDisplayPic.clipsToBounds = true
【讨论】:
谢谢,它对我有用。花了我几个小时~【参考方案2】:需要一段时间 self.view.layoutIfNeeded()
试试这个代码
DispatchQueue.main.async
self.view.layoutIfNeeded()
self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
self.userDisplayPic.clipsToBounds = true
self.view.layoutIfNeeded()
【讨论】:
【参考方案3】:这是因为您的self.userDisplayPic
的height 和width 不一样,首先使其相同,然后下面的代码将为您工作。
self.userDisplayPic.layer.cornerRadius = self.userDisplayPic.frame.size.width / 2;
self.userDisplayPic.clipsToBounds = true
并在viewWillLayoutSubviews
或viewWillAppear
方法中编写这些代码
【讨论】:
【参考方案4】: self.userDisplayPic.layer.cornerRadius = userDisplayPic.frame.height/2
self.userDisplayPic.clipsToBounds = true
【讨论】:
以上是关于UIImageViewcornerRadius 没有使它成为圆形[重复]的主要内容,如果未能解决你的问题,请参考以下文章