最近有遇到過sizeToFit的方法,比較好奇,所以查了點資料 在官方文檔中 - (void)sizeToFit; // calls sizeThatFits: with current view bounds and changes bounds size. 調用這個方法來改變當前view的大小( ...
最近有遇到過sizeToFit的方法,比較好奇,所以查了點資料
在官方文檔中
- (void)sizeToFit;
// calls sizeThatFits: with current view bounds and changes bounds size. 調用這個方法來改變當前view的大小(讓大小自適應)
現在我從網頁上載入一張圖片並使用sizeToFit方法
//給imageView設置圖片
-(void)setImage{
//從網頁中獲取圖片的URL
NSURL *url = [NSURL URLWithString:@"http://img.taopic.com/uploads/allimg/140403/240438-1404030TT089.jpg"];
//根據url得到data
NSData *data = [NSData dataWithContentsOfURL:url];
//根據data得到圖片
UIImage *image = [UIImage imageWithData:data];
//將image設置到imageView中
self.imageView.image = image;
//調用sizeTofit方法 得到適合當前view的尺寸
[self.imageView sizeToFit];
//手動設置frame
//self.imageView.frame = CGRectMake(0, 0, 375, 667);
NSLog(@"sizeToFit-----%@",NSStringFromCGRect(self.imageView.frame));
//設置scrollView的滾動範圍
self.scrollView.contentSize = image.size;
}
此時列印imageView的大小
2016-05-28 22:33:39.401 測試sizeToFit[20263:1497379] sizeToFit-----{{0, 0}, {1000, 564}}
發現在我們並沒有設置imageView的情況下 , imageView的大小正好等於圖片的大小,所以可以說 sizeToFit 就是讓當前的View根據子元素的大小來調整 他自己的大小(最合適的).
@interface UIView(UIViewGeometry)
因為是UIView的分類 所以UILabel中也可以調用這個方法來是UILable根據文字的大小來調整大小(同理其他的控制項也是可以的);
雖然UIView和它的子控制項都可以用 但是sizeToFit並不適合手動佈局
所以我們一般在實際開發中並不怎麼用 但是在一些系統自動佈局的場合我們用sizeToFit就比較適合了
1.對navigationItem的設置,
2.對UIBarButtonItem的設置
3.UILabel中添加文字,然後讓調整label的大小來適應文字,我們也調用sizeToFit的方法
4.等等
PS:關於從網頁中載入圖片一開始 有報錯 查了資料才知道
iOS9中新增App Transport Security(簡稱ATS)特性, 主要使到原來請求的時候用到的HTTP,都轉向TLS1.2協議進行傳輸。這也意味著所有的HTTP協議都強制使用了HTTPS協議進行傳輸
所以我們需要在info.plist文件中添加一個屬性
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>