第一次寫技術博客,之前沒有寫,主要因為認為自己對iOS技術還沒有研究的那么深,怕寫出來誤人子弟。第二個,也是自己比較懶吧。為了督促自己,也是為了和更多的iOS開發愛好者一起交流和共同進步,絕對以后有什么心得,都會分享。(畢竟稍后等於永不)同時也希望大家積極指出我的錯誤和不完整的地方。
好,接下我們進入正題:
sizeToFit()使用心得:
很多的初學者,包括我在內,當初在學習的時候,特別糾結什么時候用這個sizeToFit()。 下面我就來分享一下我的一些使用心得。
一.我們先來看看官方文檔對sizeToFit()的聲明:(Swift版本的)
// calls sizeThatFits: with current view bounds and changes bounds size.
// 翻譯:調用sizeThatFits方法:參數(與當前視圖范圍和變化的界限大小)。
public func sizeToFit()
// return 'best' size to fit given size. does not actually resize view. Default is return existing view size
// 翻譯:返回'最好'的大小以適合給定大小。實際上不調整視圖。默認值是返回現有的視圖大小
public func sizeThatFits(size: CGSize) -> CGSize
從官方文檔中我們可以看出,調用sizeToFit的時候,類似於系統會根據內容的幫我布局一個它認為最合適的大小。
另外sizeToFit()聲明在UIView中,所以我們的所有的視圖控件,都可以調用這個方法
二.既然所有的控件都可以調用這個方法,但是實際的開發中,我們好像也不經常使用它,來做一些布局什么的?
原因:我們一般在不方便手動布局的時候才調用sizeToFit方法,下面我們就具體的看看哪些場合,不適合手動布局:
1.navigationBar中對navigationItem的設置,(添加兩個視圖以上的控件到Item)
2. toolBar中的對UIBarButtonItem的設置(一般我們還要添加彈簧控件)
上述兩種場合就可以用sizeToFit這個方法,來讓系統給我們做自動布局。(注意:如果就添加一個控件的話,我們直接設置fram也是可以的)
3.在tabBar中我們不能手動的添加的子控件,因為tabBar是根據控制器系統默認自動添加的tabBarItem。(猜想系統可能也會自動調用了這個方法)
4.UILabel中添加文字,然后讓調整label的大小來適應文字,我們也調用sizeToFit的方法
上述只是個人的心得和猜想,歡迎大家指正和批評