我希望它成为我的 Ipad 应用程序的背景。 我在 Objective-C ( native 应用程序)中构建所有内容
我需要一些帮助来弄清楚如何为图像上的每个三角形设置动画(叠加),以便它们彼此独立地淡入和淡出,目标是制作一个恒定的微光效果,这样图像就不会感觉太安静了。我必须独立地为每个三角形制作动画吗?有没有我应该看的算法所以它看起来有点随机但不是。
这是背景图
我需要一些关于从哪里开始以及如何解决这个问题的指导,我们将不胜感激。
最佳答案
a) 我的建议是使用 iOS 4 中引入的 UIViewAnimationWithBlocks。如果您对 block 有扎实的掌握,它们会非常有用。这是我在短短 5 分钟内创建的一个示例来说明:
typedef void(^FadeInOutBlock)(void);
@interface PMViewController ()
@property (nonatomic, copy) FadeInOutBlock fadeInOutBlock;
@end
这里我们声明了一个 typedef 来避免我们重新使用 block 语法。我们还创建了一个属性来保存动画 block 。
@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,最后,再次触发第一个动画。 (动画)
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (self.fadeInOutBlock)
self.fadeInOutBlock();
}
@end
最后,在 View 中确实出现了您第一次启动它。
b)
现在,对于您提到的闪烁动画,我建议您将每个三角形分离到它自己的 UIView 中,并使用上面的技术,使用不同的持续时间和 alpha。
如果您需要许多小的 UIView,请将它们组合成一个更大的 UIView(通过使用 addSubview 方法)并将动画应用于这些“容器”UIView。
例如,您可以有四个独立的 UIView 容器,它们有一堆独立的 UIView 作为它们的 child 。然后您可以创建四个 block 动画,每个容器一个,然后将动画应用到它们。我敢打赌,通过试验,您将能够创造出非常好的效果。
关于objective-c - 在 Objective-C 上设置淡入淡出效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292044/