循环UIImage淡入多个图像的过渡

时间:2014-09-15 01:25:13

标签: ios objective-c uiimageview

我有一个viewController,其中UIImageView每隔10秒在不同的图像之间转换。这很有效,直到我尝试添加两个以上的图像。我不确定我在这里做错了什么,但是我得到了错误:"没有已知的选择器类方法' imageNamed ::'

这些是我的方法:

带有计时器的

viewDidLoad:

- (void)viewDidLoad {
    i = 0;
    [NSTimer scheduledTimerWithTimeInterval:10.0 target:self 
    selector:@selector(swapImage) userInfo:nil repeats:YES];
}

以下是适用于两张图片的代码:

- (void)swapImage {

    background.image = [UIImage imageNamed:(i % 2) ? @"authBg1.png" : @"authBg2.png"];

    CATransition *transition = [CATransition animation];
    transition.duration = 1.0f;
    transition.timingFunction = [CAMediaTimingFunction 
    functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionFade;

    [background.layer addAnimation:transition forKey:nil];

    i++;
}

如果我更改第一个background.image行添加新图片,我会收到错误:

background.image = [UIImage imageNamed:(i % 3) ? @"authBg1.png" : @"authBg2.png" : 
@"authBg3.png"];

为什么这可能不起作用的任何想法?谢谢!

1 个答案:

答案 0 :(得分:2)

不幸的是,三元运营商只能支持2个条件。

如果您需要更多2个条件,请使用if语句。


如果/其他

if(i%2 == 0){

}elseif(i%3==0){

}else{

}

但如果你真的想要三元,那么你可以通过它更难以阅读

来嵌套它们
background.image = [UIImage imageNamed:(i % 2) ? @"authBg1.png" : (i % 3) ?@"authBg3.png" : @"authBg2.png"];