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