码迷,mamicode.com
首页 > 其他好文 > 详细

UIImageView的属性contentMode

时间:2016-08-02 14:59:12      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

UIImageView的属性contentMode

  实现网络图片根据UIImageView的大小来等比例缩放显示。

  苹果自带的有设置UIImageView的contentMode属性,

    UIViewContentModeScaleToFill
    UIViewContentModeScaleAspectFit
    UIViewContentModeScaleAspectFill
    UIViewContentModeRedraw
    UIViewContentModeCenter
    UIViewContentModeTop
    UIViewContentModeBottom
    UIViewContentModeLeft
    UIViewContentModeRight
    UIViewContentModeTopLeft
    UIViewContentModeTopRight
    UIViewContentModeBottomLeft
    UIViewContentModeBottomRight

注意以上几个常量,凡是没有带Scale的,当图片尺寸超过 ImageView尺寸时,只有部分显示在ImageView中。UIViewContentModeScaleToFill属性会导致图片变形。 UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView 会有部分空白。UIViewContentModeScaleAspectFill也会证图片比例不变,但是是填充整个ImageView的,可能只有部 分图片显示出来。

 

我们也可下载图片获取图片的原始宽高,然后根据比例重新设置图片的大小也是可以的,不过这种的话就可能会出现问题了,先下载获取一次之后又给imageView赋值时就会出现缓慢延迟的现象,这是在赋值时又下了一遍,不赞成使用。

//获取网络图片的宽高

+ (CGSize)getImageSizeWithURL:(NSURL *)url {

//    1.创建CGImageSourceRef

    CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)url, NULL);

 

    CGFloat width = 0.0f, height = 0.0f;

    

    if (imageSource)

    {

//        获取图像的属性信息

        CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL);

        

        if (imageProperties != NULL)

        {

            CFNumberRef widthNum  = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);

            if (widthNum != NULL) {

                NSNumber *num = (__bridge NSNumber *)(widthNum);

                width = [num floatValue];

                //                CFNumberGetValue(widthNum, kCFNumberFloatType, &width);

            }

            

            CFNumberRef heightNum = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);

            if (heightNum != NULL) {

                NSNumber *num = (__bridge NSNumber *)(heightNum);

                height = [num floatValue];

                //                CFNumberGetValue(heightNum, kCFNumberFloatType, &height);

            }

            

            CFRelease(imageProperties);

        }

        CFRelease(imageSource);

    }

    return CGSizeMake(width, height);

}

 第三种,就是使用SDWebImage的方法了,也可以实现吧,效果还可以

[self.toyImgView sd_setImageWithURL:[NSURL URLWithString:model.picture] placeholderImage:nil options:SDWebImageRetryFailed completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

        

        NSLog(@"*****%lf",image.size.width);

        NSLog(@"******%lf",image.size.height);

        

    }];

 大家根据不同的情况使用不同的方法吧。

 

UIImageView的属性contentMode

标签:

原文地址:http://www.cnblogs.com/19940122yzc/p/5698881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!