2013-05-31 20 views
0

我想用类似于disolvense的效果改变alpha参数,但是图像不会改变beetwen 0和1仅当alpha变为1时才会改变。 PD。在我的代码的图像是具有setAlpha = 0 下面是该方法的代码:我怎样才能重新加载一个ImageView与一个常量chaged setAlpha?

-(void)splash:(UIImageView *)img{  

    for (double i=0.0; i<=1.0; i=i+0.1) { 
     for (int x=0;x<=10000;x++){ 
      for (int h=0;h<=10000;h++){ 

      } 
     } 
     NSLog(@"%g",i); 
     [img setAlpha:i]; 
     [img reloadInputViews]; 
    } 

} 
+0

你在里面做了' x'和'h'(两个内部)循环? – rmaddy

+0

它像一个手动睡眠()像'C'lenguaje –

+0

'睡眠'功能可以在Objective-C中使用。请记住,Objective-C是C的超集。但请注意,使用“sleep”不是正确的解决方案。我只是指出'睡眠'功能在iOS应用程序中可用。 – rmaddy

回答

2

为什么不使用基本视图的动画的图像视图褪色:

- (void)splash:(UIImageView *)img { 
    img.alpha = 0.0; 
    [UIView animateWithDuration:1.0 animations:^{ 
     img.alpha = 1.0; 
    }]; 
} 

设置的持续时间到任何你想要的结果(以秒为单位)。

+0

OOOOOOOH!这是工作坦克你动画后的方式:它的一个街区吧?它需要在工具中使用吗? –

+0

是的,'动画'参数是一个块。这种方法是必要的。你不想使用块吗?如果不是,为什么? – rmaddy

+0

,因为我对块的知识是非常基本的,我不知道这个工具的真正能力,并且做出同样的东西没有块,可以让我明白块的使用 –

1

如果你不想使用的UIView动画(如上建议,你或许应该用这种方式),那么你可以尝试递归循环是这样的:

- (void)performSplashAlpha:(UIImageView *)img 
{ 
    img.alpha += 0.1; 

    if(img.alpha < 1) 
     [self performSelector:@selector(performSplashAlpha:) withObject:img afterDelay:0.1]; //Or whatever timing you want in between alphas 
} 
+0

alpha不能超过1. –

+0

我认为你的意思是阿尔法= 1 – idz

+0

啊,是的,很好的捕捉。修正它,谢谢。 – jfuellert

相关问题