UIImage
A UIImage
object is a high-level way to display image data. You can create images from files, from Quartz image objects, or from raw image data you receive. The UIImage
class also offers several options for drawing images to the current graphics context using different blend modes and opacity values.
一个 UIImage 对象是一个高级别的方式来显示图像数据。你可以从文件,从Quartz图像对象,创建的图像或您收到从原始图像数据。UIImage 类还提供了用于绘制图像到使用不同的混合模式和不透明度值的当前图形上下文的几个选项。
官方推荐用UIImage加载图片尺寸是应该小于1024*1024,否则会有问题
1.普通加载一张图片
根据名字加载一张图片到UIImage;
UIImage *firstImg = [UIImage imageNamed:@"bg"];此时UIImage并未从文件中加载,因为他还没有显示到View中。当第一次显示到View中后,开始从路径中解码图片到内存中,并且缓存一份。
2.指定拉伸区域加载一张图片
这张图片做较大的UIImageView的背景时,如果不处理会是这样
很明显变形了用这个方法处理一下就ok了
– resizableImageWithCapInsets:resizingMode:
– resizableImageWithCapInsets:
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 300, 80)]; [self.view addSubview:imageView]; UIImage *firstImg = [UIImage imageNamed:@"bg"]; // imageView.image = firstImg; self.firstImageView.image = [firstImg resizableImageWithCapInsets:UIEdgeInsetsMake(30 , 30, 30, 30) resizingMode:UIImageResizingModeStretch];
效果如图:
CapInsets:传入四个角的不改变的区域
resizingMode:模式。是一个系统枚举,如果图片的中间是一样的 两种模式随便选择
typedef NS_ENUM(NSInteger, UIImageResizingMode) {
UIImageResizingModeTile, //表示平铺充满 如果要是图片中间有文字会看到重复
UIImageResizingModeStretch,//表示拉伸充满 如果要是图片中间有文字会看到拉伸
};
3.动画加载一组图片
+ (UIImage *)animatedImageNamed:(NSString *)name duration:(NSTimeInterval)duration //加载同名的一组image,逐个显示成动画,注意这一组图片的名字一样,假如图片的名字为image0,image1,image2,image3...等,name只需要填@"image"即可。
+ (UIImage *)animatedImageWithImages:(NSArray *
)images
duration:(NSTimeInterval
)duration//动画逐个显示NSArray里面的图片
//下面这两个方法是
animatedImageNamed:duration: 和第二条中方法的结合
+ (UIImage *)animatedResizableImageNamed:(NSString *
)name
capInsets:(UIEdgeInsets
)capInsets
duration:(NSTimeInterval
)duration
+ (UIImage *)animatedResizableImageNamed:(NSString *
)name
capInsets:(UIEdgeInsets
)capInsets
resizingMode:(UIImageResizingMode
)resizingMode
duration:(NSTimeInterval
)duration