UIView 的 cornerRadius 不均匀影响视图

UIView's cornerRadius does not affect view evenly

我通常将 cornerRadius 应用于自定义视图:

self.layer.cornerRadius = self.frame.size.height/2

但是,我注意到 UIView 上的合成角没有均匀应用。具体来说,如所附照片所示,顶部比底部更早开始淡入角落。放大后,即使在正常视角下也能看到不均匀的转角。

有没有人也遇到过这个问题能够解决的?

你在哪里调用这条线?

self.layer.cornerRadius = self.frame.size.height/2

如果 cornerRadius 不是最终大小的一半,通常会发生此错误。 例如:你在viewDidLoad中设置了这个,self的高度是100,cornerRadius现在是50,但是自己完成布局后,它的高度变成了90,cornerRadius仍然是50.

有两种方法可以解决这个问题:

  1. 如果你对高度使用固定约束,你可以在任何你想要的地方设置cornerRadius:self.layer.cornerRadius = self.someHeightConstraint.constraint / 2

  2. 如果不这样做,请在视图完成布局后设置 cornerRadius(在其父视图的 viewDidLayoutSubviews 中)