2015-06-02 32 views
0

我有一个图像的循环,我试图从一个到另一个使用kCAMediaTimingFunctionEaseInEaseOut淡出,所以它不那么突然。我的UIImageView正在接收来自MutableArray的对象。这是我用来实现淡入淡出效果的代码。kCAMediaTimingFunctionEaseInEaseOut不影响UIImageView

imageViewContainer = [UIView new]; 
imageViewContainer.frame = CGRectMake(0, 0, 320, 620); 
imageViewContainer.backgroundColor = [UIColor clearColor]; 
[self.view1 addSubview:imageViewContainer]; 
for (int i = 0; i < [homescreenPictureArray count]; i++) { 
    homescreenPictureView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 50, 320, 620)]; 
    homescreenPictureView.animationImages = homescreenPictureArray; 
    homescreenPictureView.animationDuration = 15; 
    [homescreenPictureView setAlpha:1.0f]; 
    homescreenPictureView.contentMode = UIViewContentModeScaleAspectFill; 
    [imageViewContainer.layer addAnimation:pictureDisolve forKey:nil]; 
    [imageViewContainer addSubview:homescreenPictureView]; 

    pictureDisolve = [CATransition animation]; 
    pictureDisolve.duration = 1.0f; 
    pictureDisolve.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    pictureDisolve.type = kCATransitionFade; 
    [homescreenPictureView.layer addAnimation:pictureDisolve forKey:@"imageViewContainer"]; 
    [homescreenPictureView startAnimating]; 

编译尚未影响图像时,我收到没有错误。澄清为什么它不工作将不胜感激。提前致谢!

回答

0

您使用的过渡类型是错误的。您需要使用kCATransitionFade

0

您需要指定key值。例如@"subviews"。它定义了什么时候以及将要转换什么。

pictureDisolve = [CATransition animation]; 
    pictureDisolve.duration = 1.0f; 
    pictureDisolve.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    pictureDisolve.type = kCATransition; 
    [homescreenPictureView.layer addAnimation:pictureDisolve forKey:@"subviews"]; 
+0

所以,我对你的回答有点摆弄周围。我不太清楚,如果我在这里丢失了一些明显的东西。我更新了代码,以便您可以看到完全发生了什么。任何想法,为什么它不影响它将不胜感激:)。 –

0

所以我现在正在开发不同的项目,但我想我会给kCATransitionFade的人谁在未来的看法就是一个很好的例子。

' - (无效)淡入{

view1.image = background1; 
view2.image = background2; 

CATransition *fadeIn = [CATransition animation]; 
fadeIn.duration = 2.0f; 
fadeIn.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
fadeIn.type = kCATransitionFade; 
fadeIn.delegate = self; 
[self.view.layer addAnimation:fadeIn forKey:nil]; 
view1.hidden = YES; 
view2.hidden = NO; 

NSLog(@"Image 1"); 

}

- (无效)淡出{

view1.image = background1; 
view2.image = background2; 

CATransition *fadeIn = [CATransition animation]; 
fadeIn.duration = 2.0f; 
fadeIn.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
fadeIn.type = kCATransitionFade; 
fadeIn.delegate = self; 
[self.view.layer addAnimation:fadeIn forKey:nil]; 
view1.hidden = NO; 
view2.hidden = YES; 

NSLog(@"Image 2"); 

} `

对于我的项目,我离开了用作[self fadeIn]或[self fadeOut],但如果您希望将它们组合成单一功能ñ通过调用

-(void) fadeFunction { 

if (self.view == view1) { 
    [self fadeIn]; 
} else { 
    [self fadeOut]; 
} 

}