通常要展示圖片,一般都會用到 UIImageView,若是要縮放功能可以將 UIImageView 放入 UIScrollView 裡面,但是如果要展示一張超過 iOS 裝置顯示範圍的圖片,而你想要以特定大小在 iOS 裝置顯示全圖時,該如何執行? 用 CALayer 。
在開始前由於我們有使用到 QuartzCore 的類別,所以必須要先匯入其標頭檔與 Framework。
#import <QuartzCore/QuartzCore.h>
如果不知道如何新增 Framework 的讀者們,可以參考 Xcode 4 新增 Framework 的方法一文。
我們以一張大小為1024 x 680 的圖片為例,將他放入不同大小的 CALayer,然後展示出來,我們設定三個 CALayer,每一個 CALayer 的大小都不同,並且不超過 iPhone 視窗大小。我們在 ViewController 的 viewDidLoad 中置入下列程式碼。
//宣告image物件
UIImage *aImage = [UIImage imageNamed:@"myPhoto.jpg"];
//使用"layer" class method建立CALayer物件
CALayer *layer1 = [CALayer layer];
//設定CALayer的frame大小
layer1.frame = CGRectMake(110, 20, 100, 66);
//設定CALayer的內容為image物件
layer1.contents = (id)aImage.CGImage;
//將CALayer置入view
[self.view.layer addSublayer:layer1];
//以下用同樣方式設定大小不同的CALayer
CALayer *layer2 = [CALayer layer];
layer2.frame = CGRectMake(85, 106, 150, 100);
layer2.contents = (id)aImage.CGImage;
[self.view.layer addSublayer:layer2];
CALayer *layer3 = [CALayer layer];
layer3.frame = CGRectMake(0, 226, 320, 213);
layer3.contents = (id)aImage.CGImage;
[self.view.layer addSublayer:layer3];
使用以上的程式碼,我們將超出 iPhone 顯示範圍的圖片,以三種大小不同的影像展示出來。要注意的是設定 CALayer 的 contents 時,是將 UIImage 轉換為 CGImageRef type,再回傳給 contents 。
沒有留言:
張貼留言