快速圆角在不同的屏幕尺寸上无法正常工作

时间:2019-06-22 10:27:47

标签: ios swift xcode

我正在尝试在imageviews上实现圆角。尽管它在非plus设备上运行良好,但我无法实现plus屏幕设备的目标。顺便说一句,我认识到,字体大小扩大的设备甚至无法正常工作。我应用了可以在每个主题中找到的以下代码。

    mergedImage.image = lastImage
    mergedImage.layer.masksToBounds = false
    mergedImage.layer.cornerRadius = mergedImage.frame.size.height / 2
    mergedImage.clipsToBounds = true

其结果如下图所示。

At iPhone 8 Plus

At iPhone X

At iPhone 5S

1 个答案:

答案 0 :(得分:3)

看起来黑色形状会改变大小。例如,在使用AutoLayout时可能会发生这种情况。如果是这种情况,则每次框架更改时都需要计算拐角半径。

我认为做到这一点的最佳方法是将UIView子类化以创建“黑色形状视图”,然后覆盖其layoutSubviews方法:

override func layoutSubviews() {
  super.layoutSubviews()
  layer.cornerRadius = bounds.height / 2
}

如果没有子类,则可以在UIViewController.viewDidLayoutSubviews中进行此操作:

override func viewDidLayoutSubviews() {
  super.viewDidLayoutSubviews()
  mergedImage.layer.cornerRadius = bounds.height / 2
}