使视图在没有 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 的情况下为圆形的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在没有自动布局的情况下为 iPad 设计视图?

clipsToBounds / maskToBounds 不适用于表格视图单元格中的图像视图?

CALayer

UITableViewCell 在子视图性能问题中调用 .layer.maskToBounds = YES [重复]

使用将 maskToBounds 设置为 true 和cornerRadius 不会更改视图

IOS UIDynamicAnimator maskToBounds 不会使碰撞作为边界工作