iOS开发-图片UIImage
UIImage
和 UIImageView
是 iOS 开发中常用的两个类,分别用于表示图像数据和显示图像。
UIImage
UIImage
是一个表示图像数据的类,可以从文件、数据、图像资源库等加载图像。UIImage
支持多种图像格式,包括 PNG、JPEG、GIF 等。
创建 UIImage
-
从文件创建
UIImage *image = [UIImage imageNamed:@"exampleImage"];
-
从数据创建
NSData *imageData = [NSData dataWithContentsOfFile:@"path/to/image"]; UIImage *image = [UIImage imageWithData:imageData];
-
从 URL 创建
NSURL *imageUrl = [NSURL URLWithString:@"https://example.com/image.png"]; NSData *imageData = [NSData dataWithContentsOfURL:imageUrl]; UIImage *image = [UIImage imageWithData:imageData];
-
从颜色创建
UIColor *color = [UIColor redColor]; CGSize size = CGSizeMake(100, 100); UIGraphicsBeginImageContext(size); [color setFill]; UIRectFill(CGRectMake(0, 0, size.width, size.height)); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
处理 UIImage
-
获取图像尺寸
CGSize imageSize = image.size;
-
获取图像的缩放比例
CGFloat scale = image.scale;
-
保存图像到文件
NSData *imageData = UIImagePNGRepresentation(image); [imageData writeToFile:@"path/to/save.png" atomically:YES];
UIImageView
UIImageView
是一个用于显示图像的视图类。它可以显示 UIImage
对象,并提供了一些方便的方法来调整图像的显示方式。
-
创建 UIImageView
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = CGRectMake(50, 50, 100, 100);
配置 UIImageView
-
设置图像
imageView.image = image;
-
内容模式
UIImageView
提供了多种内容模式,用于控制图像如何在视图中显示:imageView.contentMode = UIViewContentModeScaleAspectFit; // 保持比例适应视图 imageView.contentMode = UIViewContentModeScaleAspectFill; // 保持比例填充视图,可能会裁剪图像 imageView.contentMode = UIViewContentModeCenter; // 居中显示图像
-
设置边框和圆角
imageView.layer.borderColor = [UIColor blackColor].CGColor; imageView.layer.borderWidth = 2.0; imageView.layer.cornerRadius = 10.0; imageView.clipsToBounds = YES;
动画 UIImageView
-
逐帧动画
UIImageView
可以通过设置animationImages
属性来播放逐帧动画:imageView.animationImages = @[image1, image2, image3]; imageView.animationDuration = 1.0; // 动画时长 imageView.animationRepeatCount = 0; // 无限循环 [imageView startAnimating];
使用示例
以下是一个完整的示例,展示了如何使用 UIImage
和 UIImageView
:
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
ViewController.m
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
// 创建 UIImage 对象
UIImage *image = [UIImage imageNamed:@"exampleImage"];
// 创建 UIImageView 对象并设置图像
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(50, 50, 200, 200);
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.layer.borderColor = [UIColor blackColor].CGColor;
imageView.layer.borderWidth = 2.0;
imageView.layer.cornerRadius = 10.0;
imageView.clipsToBounds = YES;
[self.view addSubview:imageView];
// 动画 UIImageView
UIImage *image1 = [UIImage imageNamed:@"frame1"];
UIImage *image2 = [UIImage imageNamed:@"frame2"];
UIImage *image3 = [UIImage imageNamed:@"frame3"];
UIImageView *animatedImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 300, 200, 200)];
animatedImageView.animationImages = @[image1, image2, image3];
animatedImageView.animationDuration = 1.0;
animatedImageView.animationRepeatCount = 0;
[animatedImageView startAnimating];
[self.view addSubview:animatedImageView];
}
@end