使视图在没有 maskToBounds 的情况下为圆形
Posted
技术标签:
【中文标题】使视图在没有 maskToBounds 的情况下为圆形【英文标题】:Make view circular without masksToBounds 【发布时间】:2016-09-23 13:42:16 【问题描述】:如雷达 (28342777) 所示 - 创建 UIImageView
时,ios10 中存在问题。由于视图是自动生成的 (1000x1000px),因此有时它们不会显示。
关闭masksToBounds
将使它们正确显示,但不允许制作圆形。
我尝试单独使用cornerRadius
,但它不起作用。
有解决办法吗?
【问题讨论】:
你不能在实例化时用较小的框架初始化视图吗? 我在 IB 已经做到了。我对它有限制,说宽度 = 高度 = 64。但它不会改变 您能否尝试对其进行子类化,使用您自己的自定义 init 调用 init 并随后设置框架,这样在设置图像之前就为您完成了? 其实我觉得这里有一个更简单的解决方案,看看:***.com/questions/39475456/… @Woodstock 好的,现在在您的帮助下找到了解决方案。在我的单元格类中,我将 maskToBounds = true - self.layoutIfNeeded() 放在上面。我还需要调用 self.userInteractionEnabled = true 【参考方案1】:如果你需要让你的 UIImageView 循环,你必须在 viewDidLayoutSubviews 而不是 viewDidLoad 方法中这样做,如:
override func viewDidLayoutSubviews()
super.viewDidLayoutSubviews()
self.yourImageView.layer.cornerRadius = self.yourImageView.frame.size.height/2
self.yourImageView.clipsToBounds = true
【讨论】:
以上是关于使视图在没有 maskToBounds 的情况下为圆形的主要内容,如果未能解决你的问题,请参考以下文章
clipsToBounds / maskToBounds 不适用于表格视图单元格中的图像视图?
UITableViewCell 在子视图性能问题中调用 .layer.maskToBounds = YES [重复]