en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

11.19.2010

Core Graphic 的圖片淡入與放大

 

首先把要使用的圖片檔放入專案內的 Resource 中,接著鍵入以下程式碼。(View-based Template)

- (void)viewDidLoad {
    [super viewDidLoad];

    //設定顯示圖片的邊界大小並加入圖片
    CGRect imageRect = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
    UIImageView *image = [[UIImageView alloc] initWithFrame:imageRect];
    [image setImage:[UIImage imageNamed:@"demo.jpg"]];

    //將圖片設定成不透明(預設)
    image.opaque = YES;

    //將圖片顯示於View上
    [self.view addSubview:image];

而程式碼到這裡已經可以在畫面上顯示所設定的圖片,下面程式碼將要來製作圖片的淡入與放大效果。

    //設定動畫開始時的圖片狀態(透明度與縮放比例)
    image.alpha = 0.1;
    image.transform = CGAffineTransformMakeScale(0.1, 0.1);

    //動畫的參數設定(動畫名稱、速度、動畫開始與結束時的委託處理)
    [UIView beginAnimations:@"animation" context:nil];
    [UIView setAnimationDuration:1.5];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop)];

    //設定動畫結束時的圖片狀態(透明度與縮放比例)
    image.alpha = 1.0;
    image.transform = CGAffineTransformMakeScale(1.0, 1.0);

    //產生動畫
    [UIView commitAnimations];

    [image release];
}

在動畫開始之前把 alpha 透明度設定為 0.1,圖片 X,Y 軸比例也設成 0.1,而動畫結束時的參數又設回正常,所以在整個動畫執行時會出現範入與放大的效果。
除了這裡所使用的 alpha 和 MakeScale,還有很多不同的 method 可用,如旋轉、倒置、移動等,有興趣的讀者可以自行研究。





4 則留言:

  1. 匿名6/18/2012

    請問淡入淡出效果如何輪播index張圖片?

    回覆刪除
    回覆
    1. 您好:

      iOS SDK 並未提供相關的動畫設定函式,這點還必須仰賴使用者自行設計喔。

      你可以考慮寫一個 NSArray 來存放所有圖片的名稱,之後使用動畫結束時的方法函式來處理下一個圖片的淡入淡出動畫。

      刪除
  2. 从头浏览了一次你的博客,每篇都写的很用心详细,赞一个。
    于是我准备从头到尾认真的学习一遍你的每一篇博客。
    :p

    回覆刪除
    回覆
    1. yinhan 您好:

      也謝謝您喜歡我們的網站!

      刪除