自动将 UIView 的角半径设置为视图宽度的一半

uni*_*b0y 2 cornerradius ios swift

我有一些视图的大小不是硬编码的,而是通过约束确定的,我需要这些视图是圆形的。
有没有办法“动态”设置cornerRadius 属性,例如根据对象的实际大小?
我知道如果这个视图在 UIViewController 中,我可以通过它获取宽度roundView.frame.width并在那里设置 layer.cornerRadius 属性,但是圆形视图不包含在 viewController 中,而是由另一个简单的 UIView 管理。
先感谢您!
戴夫

emr*_*pun 8

您可以覆盖 View 类的 layoutSubviews 方法并在那里设置 cornerRadius 值。假设您希望cornerRadius 为视图宽度的一半:

override func layoutSubviews() {
    super.layoutSubviews()
    self.layer.cornerRadius = self.bounds.width * 0.5
}
Run Code Online (Sandbox Code Playgroud)

  • 通常添加一个 `super.layoutSubviews()` imo 是个好主意。 (2认同)