2011年4月12日 星期二

[轉]使用 CALayer 展示大小不同的影像

from : http://www.furnace.idv.tw/

通常要展示圖片,一般都會用到 UIImageView,若是要縮放功能可以將 UIImageView 放入 UIScrollView 裡面,但是如果要展示一張超過 iOS 裝置顯示範圍的圖片,而你想要以特定大小在 iOS 裝置顯示全圖時,該如何執行? 用 CALayer 。 我們以一張大小為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 。

沒有留言:

張貼留言