imageV.contentMode = UIViewContentModeScaleAspectFill;
UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
UIViewContentModeRedraw,
UIViewContentModeCenter,
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
凡是不带scale的都是把图片直接丢进去,不进行任何压缩,该切的切不调整比例,这里主要说说前三种:
UIViewContentModeScaleToFill, //上下左右全部拉伸或者缩小来适应框的大小,会导致图片变形,主要目的是把图片撑大
![](https://img.haomeiwen.com/i6882866/0b1e57abb434eb82.png)
UIViewContentModeScaleAspectFit, //保持图片比例不变压缩,全部显示在imageView中(以框的最短边为基数把图片进行等比例压缩,保持图片比例不变,可以把图片全部显示出来)
![](https://img.haomeiwen.com/i6882866/276eb989ddd0db89.png)
UIViewContentModeScaleAspectFill, //保持图片比例不变压缩,填充整个框,多余剪切(以框的最长边为基数把图片进行等比例压缩,保持图片比例不变,多余的剪切,所以不能把图片全部显示出来,)
![](https://img.haomeiwen.com/i6882866/e22c7bab26f4fb7b.png)
UIViewContentModeScaleAspectFit 使用这个属性加载图片时,图片会不置顶
解决办法:
获取图片的size,设置imageV的宽度是父view的宽度,因为图片是保持图片比例不变压缩的,所以框的高度按照比例计算:图片的宽/图片的高 = 框的宽/框的高,所以使imageView的高度等于通过比例计算出来的值即可,这样imageView就又缩放, 又在顶部开始显示了
网络图片的size获取:
NSURL*url = [NSURLURLWithString: @“ https:image5342232load ”];
UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];
CGSize imageSize = image.size;
CGFloat fx = imageSize.height/imageSize.width;
[self.imageVmas_updateConstraints:^(MASConstraintMaker*make) {
make.size.mas_equalTo(CGSizeMake(self.view.width,self.view.width * fx));
}];
[self.imageV aly_setChannelImage:self.imageStr];
网友评论