【问题标题】:Corner radius for view after setting text设置文本后视图的角半径
【发布时间】:2016-02-16 04:56:04
【问题描述】:

我有一个包含UILabelUIViewUIView 的大小适应UILabel 的大小。

我希望UIView 是一个圆,所以我设置了圆角半径:

view.clipToBounds = true
label.text = "123"
view.layer.cornerRadius = view.frame.size.height / 2

但是,如果我调用上面的代码,有时不会调整圆角半径。似乎UIView 框架还没有改变它的大小。 UIViewUITableViewCell 内。

【问题讨论】:

  • “不适应有时”?
  • 是的,有时……很奇怪……虽然它是在主线程上执行的。
  • 我实际上注意到不仅圆角半径变化,而且包含标签的视图的大小也变化。

标签: swift cornerradius


【解决方案1】:

如果您不介意子类化,您可以执行以下操作:

import UIKit

class RoundedView: UIView {

    override func layoutSubviews() {
        super.layoutSubviews()
        layer.cornerRadius = frame.height / 2.0
    }

}

这将在调整视图大小时将角半径调整到适当的高度。

【讨论】:

  • 它起作用了,但是圆形视图的大小一直在变化。我发现问题实际上是故事板中的 NSLayoutConstraints 。圆形视图在右侧有一个布局约束,在左侧有一个“大于或等于”另一个 UILabel。约束阻止圆形视图根据其标签子视图调整大小。删除左约束解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
相关资源
最近更新 更多