国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

8.3 過(guò)渡

2018-02-24 15:07 更新

過(guò)渡

有時(shí)候?qū)τ趇OS應(yīng)用程序來(lái)說(shuō),希望能通過(guò)屬性動(dòng)畫(huà)來(lái)對(duì)比較難做動(dòng)畫(huà)的布局進(jìn)行一些改變。比如交換一段文本和圖片,或者用一段網(wǎng)格視圖來(lái)替換,等等。屬性動(dòng)畫(huà)只對(duì)圖層的可動(dòng)畫(huà)屬性起作用,所以如果要改變一個(gè)不能動(dòng)畫(huà)的屬性(比如圖片),或者從層級(jí)關(guān)系中添加或者移除圖層,屬性動(dòng)畫(huà)將不起作用。

于是就有了過(guò)渡的概念。過(guò)渡并不像屬性動(dòng)畫(huà)那樣平滑地在兩個(gè)值之間做動(dòng)畫(huà),而是影響到整個(gè)圖層的變化。過(guò)渡動(dòng)畫(huà)首先展示之前的圖層外觀(guān),然后通過(guò)一個(gè)交換過(guò)渡到新的外觀(guān)。

為了創(chuàng)建一個(gè)過(guò)渡動(dòng)畫(huà),我們將使用CATransition,同樣是另一個(gè)CAAnimation的子類(lèi),和別的子類(lèi)不同,CATransition有一個(gè)typesubtype來(lái)標(biāo)識(shí)變換效果。type屬性是一個(gè)NSString類(lèi)型,可以被設(shè)置成如下類(lèi)型:

kCATransitionFade 
kCATransitionMoveIn 
kCATransitionPush 
kCATransitionReveal

到目前為止你只能使用上述四種類(lèi)型,但你可以通過(guò)一些別的方法來(lái)自定義過(guò)渡效果,后續(xù)會(huì)詳細(xì)介紹。

默認(rèn)的過(guò)渡類(lèi)型是kCATransitionFade,當(dāng)你在改變圖層屬性之后,就創(chuàng)建了一個(gè)平滑的淡入淡出效果。

我們?cè)诘谄哒碌睦又芯鸵呀?jīng)用到過(guò)kCATransitionPush,它創(chuàng)建了一個(gè)新的圖層,從邊緣的一側(cè)滑動(dòng)進(jìn)來(lái),把舊圖層從另一側(cè)推出去的效果。

kCATransitionMoveInkCATransitionRevealkCATransitionPush類(lèi)似,都實(shí)現(xiàn)了一個(gè)定向滑動(dòng)的動(dòng)畫(huà),但是有一些細(xì)微的不同,kCATransitionMoveIn從頂部滑動(dòng)進(jìn)入,但不像推送動(dòng)畫(huà)那樣把老土層推走,然而kCATransitionReveal把原始的圖層滑動(dòng)出去來(lái)顯示新的外觀(guān),而不是把新的圖層滑動(dòng)進(jìn)入。

后面三種過(guò)渡類(lèi)型都有一個(gè)默認(rèn)的動(dòng)畫(huà)方向,它們都從左側(cè)滑入,但是你可以通過(guò)subtype來(lái)控制它們的方向,提供了如下四種類(lèi)型:

kCATransitionFromRight 
kCATransitionFromLeft 
kCATransitionFromTop 
kCATransitionFromBottom

一個(gè)簡(jiǎn)單的用CATransition來(lái)對(duì)非動(dòng)畫(huà)屬性做動(dòng)畫(huà)的例子如清單8.11所示,這里我們對(duì)UIImageimage屬性做修改,但是隱式動(dòng)畫(huà)或者CAPropertyAnimation都不能對(duì)它做動(dòng)畫(huà),因?yàn)镃ore Animation不知道如何在插圖圖片。通過(guò)對(duì)圖層應(yīng)用一個(gè)淡入淡出的過(guò)渡,我們可以忽略它的內(nèi)容來(lái)做平滑動(dòng)畫(huà)(圖8.4),我們來(lái)嘗試修改過(guò)渡的type常量來(lái)觀(guān)察其它效果。

清單8.11 使用CATransition來(lái)對(duì)UIImageView做動(dòng)畫(huà)

@interface ViewController ()

@property (nonatomic, weak) IBOutlet UIImageView *imageView;
@property (nonatomic, copy) NSArray *images;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    //set up images
    self.images = @[[UIImage imageNamed:@"Anchor.png"],
                    [UIImage imageNamed:@"Cone.png"],
                    [UIImage imageNamed:@"Igloo.png"],
                    [UIImage imageNamed:@"Spaceship.png"]];
}

- (IBAction)switchImage
{
    //set up crossfade transition
    CATransition *transition = [CATransition animation];
    transition.type = kCATransitionFade;
    //apply transition to imageview backing layer
    [self.imageView.layer addAnimation:transition forKey:nil];
    //cycle to next image
    UIImage *currentImage = self.imageView.image;
    NSUInteger index = [self.images indexOfObject:currentImage];
    index = (index + 1) % [self.images count];
    self.imageView.image = self.images[index];
}

@end

你可以從代碼中看出,過(guò)渡動(dòng)畫(huà)和之前的屬性動(dòng)畫(huà)或者動(dòng)畫(huà)組添加到圖層上的方式一致,都是通過(guò)-addAnimation:forKey:方法。但是和屬性動(dòng)畫(huà)不同的是,對(duì)指定的圖層一次只能使用一次CATransition,因此,無(wú)論你對(duì)動(dòng)畫(huà)的鍵設(shè)置什么值,過(guò)渡動(dòng)畫(huà)都會(huì)對(duì)它的鍵設(shè)置成“transition”,也就是常量kCATransition。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)