iOS開發-圖片UIImage

机械心發表於2024-07-06

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

相關文章