iOS开发-图片UIImage

UIImageUIImageView 是 iOS 开发中常用的两个类,分别用于表示图像数据和显示图像。

UIImage

UIImage 是一个表示图像数据的类,可以从文件、数据、图像资源库等加载图像。UIImage 支持多种图像格式,包括 PNG、JPEG、GIF 等。

创建 UIImage

  1. 从文件创建

    UIImage *image = [UIImage imageNamed:@"exampleImage"];
    
  2. 从数据创建

    NSData *imageData = [NSData dataWithContentsOfFile:@"path/to/image"];
    UIImage *image = [UIImage imageWithData:imageData];
    
  3. 从 URL 创建

    NSURL *imageUrl = [NSURL URLWithString:@"https://example.com/image.png"];
    NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];
    UIImage *image = [UIImage imageWithData:imageData];
    
  4. 从颜色创建

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

使用示例

以下是一个完整的示例,展示了如何使用 UIImageUIImageView

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
posted @ 2024-07-06 20:17  机械心  阅读(18)  评论(0编辑  收藏  举报