最近有遇到过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的设置
class="p1">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>