UIView的sizeToFit和sizeThatFits

字数 156阅读 71

1. 两个方法

  • sizeToFit()
  • sizeThatFits(_ size: CGSize) { }

2. sizeThatFit(_ size: CGSize)

看下文档中,sizeThatFit(_ size: CGSize) {}的注释,

return 'best' size to fit given size. does not actually resize view. Default is return existing view size
对于给到的size参数,返回“最佳”的size,实际上并没有改变view的size。默认情况下返回当前view的size。

3. sizeToFit()

再看下文档中sizeToFit的解释,

calls sizeThatFits: with current view bounds and changes bounds size.
该方法会触发sizeThatFits方法,参数就是当前view的bounds,同时会改变该bounds的size。

4. 在UIToolBar子类中的使用

class CustomToolBar: UIToolBar {}
fileprivate extension CustomToolBar {

  override func sizeThatFits(_ size: CGSize) {
    var size = super.sizeThatFits(size)
    size.height = 44
    return size
  }
  func _setupUI() {
    sizeToFit() // 会触发sizeThatFit(_ size: CGSize)
    ...
    ...
  }
}

推荐阅读更多精彩内容