淡出fadeout对目标C的影响

时间:2012-09-06 02:06:07

标签: objective-c animation background

我希望这是我的Ipad应用程序的背景。 我正在构建目标C(本机应用程序)

中的所有内容

我需要一点帮助,弄清楚如何在图像上叠加每个三角形(叠加),使其相互独立地淡入和淡出,目标是使效果持续闪烁,使图像感觉不到sos tatic。我是否必须独立制作每个三角形的动画?有没有我应该看的算法所以它似乎有点随机但不是。

这是背景图片

enter image description here

我需要一些指导,说明从哪里开始以及如何解决这个问题,我们将非常感谢您的反馈。

2 个答案:

答案 0 :(得分:4)

a)我的建议是使用iOS 4中引入的UIViewAnimationWithBlocks。如果你对块有很好的把握,它们就会非常有用。以下是我在短短5分钟内创建的示例:

typedef void(^FadeInOutBlock)(void);

@interface PMViewController ()
@property (nonatomic, copy) FadeInOutBlock fadeInOutBlock;
@end

这里我们声明一个typedef来避免重新执行块语法。我们还创建了一个属性来保存动画块。

@implementation PMViewController
@synthesize myView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    __block PMViewController *_self = self;


    self.fadeInOutBlock = ^{

        [UIView animateWithDuration:0.5f animations:^{
            // fade out effect
            _self.myView.alpha = 0.0f;
        } completion:^(BOOL success){
            [UIView animateWithDuration:0.5f animations:^{
                // fade in effect
                _self.myView.alpha = 1.0f;
            } completion:^(BOOL success){
                // recursively fire a new animation
                if (_self.fadeInOutBlock)
                    _self.fadeInOutBlock();
            }];
        }];
    };
}

我们在动画中创建动画。你从淡出开始,myView的alpha将在0.5f秒内减少到0.0f。完成后,将触发第二个动画,将myView的alpha恢复为1.0f,最后再次发出第一个动画。 (Animception)

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if (self.fadeInOutBlock)
        self.fadeInOutBlock();
}

@end

最后,看来确实出现了你第一次发射它。

<强> b)中

现在,对于你提到的闪烁动画,我建议你将每个三角形分成它自己的UIView并使用上面的技术,使用不同的持续时间和alpha。

如果您需要使用许多小型UIViews,请将它们分组为更大的UIView(使用addSubview方法)并将动画应用于那些“容器”UIViews。

例如,你可以有四个独立的UIView容器,它们有一堆独立的UIViews作为它们的子容器。然后,您可以创建四个块动画,每个容器一个,然后将动画应用于它们。我打赌尝试一下,你就能创造出非常好的效果。

答案 1 :(得分:0)

您可以在没有任何特殊库的情况下执行此操作。因此,您需要创建一个字母为0的黑色UIView。然后创建一个NSTimer,以增加UIView的alpha。