UIImageView的属性contentMode

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

}];

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

时间: 2024-12-13 16:23:39

UIImageView的属性contentMode的相关文章

UIImageView的属性和用法

UIImageView ? 图片框 ?在storyboard只有仅仅3个属性 但是可以做的事情却是不少,其中就有刷帧动画的显示 ? Image ?就是普通状态的时候,所展示的图片 Highlighted ?就是高亮状态,所展示的图片 State ?这一个BOOl值设置他们是否是高亮状态 ? 在使用代码创建时候 ?可以使用initWithImage: ? ? 根据图片初始化,默认坐标0.0 ?size与图片size相同 下面说刷帧动画 ? UIImageView 它拥有一个属性叫做 ? anima

iOS开发——UIImageView的contentMode、裁剪和layer属性详解

在我们iOS开发过程中,UIImageView是一个非常常见的控件,但是我们未必会用的很溜,因为里面的有些属性不曾注意,或者很难理解.所以会对我们使用该控件带来麻烦,在布局UI过程中可能会造成意想不到的结果.这篇博客主要来讲解UIImageView中的contentMode属性以及和图片裁剪的关系,并且不得不提到就是所有UIView的重要属性:layer(CALayer).文中提到的所有·示例代码上传至 https://github.com/chenyufeng1991/ImageWithMod

iOS图片填充UIImageView(contentMode)

本文主要形象的介绍一下UIView的contentMode属性: 核心代码 [self.prp_imageView setContentMode:UIViewContentModeScaleAspectFill]; self.prp_imageView.clipsToBounds = YES;   UIViewContentModeScaleAspectFit, //这个图片都会在view里面显示,并且比例不变 这就是说 如果图片和view的比例不一样 就会有留白如下图1 UIViewConte

contentMode

UIView有个UIViewContentMode类型的属性contentMode,可以通过它来修改视图的内容显示模式. view sourceprint? 01.typedef NS_ENUM(NSInteger, UIViewContentMode) { 02.UIViewContentModeScaleToFill, 03.UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. r

UIImageView的基本使用

UIImageView,是一个图片的展示框,默认是没有用户交互功能的,如果需要有交互功能,需要自己手动打开 TA 的交互功能. 好了,话不多说,我们就来看看怎么创建与使用的. // 初始化 UIImageView *imageView = [[UIImageView alloc] init]; // 设置frame imageView.frame = CGRectMake(101, 200, 173, 173)]; // 设置一张图片 UIImage *image = [UIImage imag

ios基础篇(二)——UIImageView的常见用法

UIImageView是在界面上显示图片的一个控件,在UIImageView中显示图片的话应该首先把图片加载到UIImage中,然后通过其他方式使用该UIImage. 创建UIImageView有两种方法: 一种是用UIImage来加载:UIImage *image = [UIImageimageNamed:@"picture"];UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 另一种是通过init

##DAY2 UILabel、UITextField、UIButton、UIImageView、UISlider

#pragma mark ———————UILabel——————————— UILabel属性: text:文本内容 textColor:内容的颜色 textAlignment:对齐方式(水平方向) font:字体 numberOfLines:行数 lineBreakMode:断行模式 shadowColor:阴影颜色 shadowOffset:阴影大小(阴影向x正?向偏移a,向y正?向偏移b) #pragma mark ———————UITextField —————————— UIText

学习IOS开发UI篇--UI知识点总结(二) UILabel/UIImageView

UILabel:常用属性 @property(nonatomic,copy)   NSString           *text;            // default is nil @property(nonatomic,retain) UIFont             *font;            // default is nil (system font 17 plain) @property(nonatomic,retain) UIColor            *

UIViewContentMode 图文解说

在iOS应用开发中我们常常要对视图的contentMode属性进行设置,尤其在使用UIImageView视图时设置这个属性的概率很高.我们知道contentMode的类型是UIViewContentMode的枚举,那么其每个值是什么含义,设置后会有什么效果呢?下面就来总结下. UIViewContentModeLeft 如果将UIImageView对象的contentMode设置为UIViewContentModeLeft,其内部的图片会按照原有的尺寸大小,以垂直居中,水平居左的方式显示.见UI