美文网首页
关于UIImageView的contentMode属性

关于UIImageView的contentMode属性

作者: 紫嫣沁 | 来源:发表于2021-09-02 22:31 被阅读0次

imageV.contentMode =  UIViewContentModeScaleAspectFill;

UIViewContentModeScaleToFill,

UIViewContentModeScaleAspectFit,      

UIViewContentModeScaleAspectFill,  

UIViewContentModeRedraw,             

UIViewContentModeCenter,             

UIViewContentModeTop,

UIViewContentModeBottom,

UIViewContentModeLeft,

UIViewContentModeRight,

UIViewContentModeTopLeft,

UIViewContentModeTopRight,

UIViewContentModeBottomLeft,

凡是不带scale的都是把图片直接丢进去,不进行任何压缩,该切的切不调整比例,这里主要说说前三种:

UIViewContentModeScaleToFill,  //上下左右全部拉伸或者缩小来适应框的大小,会导致图片变形,主要目的是把图片撑大

UIViewContentModeScaleAspectFit, //保持图片比例不变压缩,全部显示在imageView中(以框的最短边为基数把图片进行等比例压缩,保持图片比例不变,可以把图片全部显示出来)

UIViewContentModeScaleAspectFill, //保持图片比例不变压缩,填充整个框,多余剪切(以框的最长边为基数把图片进行等比例压缩,保持图片比例不变,多余的剪切,所以不能把图片全部显示出来,)

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];

相关文章

网友评论

      本文标题:关于UIImageView的contentMode属性

      本文链接:https://www.haomeiwen.com/subject/llrjrxtx.html