ios 一些api的总结

1>sizeToFit: // calls sizeThatFits: with current view bounds and changes bounds size.布局

[button.titleLabel sizeToFit];

  让按钮内部的label根据文字内容来计算尺寸code

2>layoutIfNeeded:强制布局控件(强制更新子控件的frame)事件

3>UIView的setNeedsDisplay和setNeedsLayout方法it

1.)setNeedsDisplay会调用自动调用drawRect方法class

drawRect在如下状况下会被调用:变量

 一、若是在UIView初始化时没有设置rect大小,将直接致使drawRect不被自动调用。drawRect调用是在Controller->loadView, Controller->viewDidLoad 两方法以后掉用的.因此不用担忧在控制器中,这些View的drawRect就开始画了.这样能够在控制器中设置一些值给View(若是这些View draw的时候须要用到某些变量值).object

二、该方法在调用sizeToFit后被调用,因此能够先调用sizeToFit计算出size。而后系统自动调用drawRect:方法。方法

三、经过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。call

四、直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,可是有个前提条件是rect不能为0。layout

以上1,2推荐;而3,4不提倡

2)而setNeedsLayout会默认调用layoutSubViews

layoutSubviews在如下状况下会被调用:

一、init初始化不会触发layoutSubviews。

二、addSubview会触发layoutSubviews。

三、设置view的Frame会触发layoutSubviews,固然前提是frame的值设置先后发生了变化。

四、滚动一个UIScrollView会触发layoutSubviews。

五、旋转Screen会触发父UIView上的layoutSubviews事件。

六、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。

七、直接调用setLayoutSubviews。

相关文章
相关标签/搜索