我希望这是我的 Ipad 应用程序的背景。我正在目标 C 中构建所有内容(本机应用程序)
我需要一点帮助来弄清楚如何为图像上的每个三角形(叠加层)设置动画,使其相互独立地淡入和淡出,目标是制作一个恒定的微光效果,这样图像就不会感觉那么僵硬。我必须独立地为每个三角形设置动画吗?有没有我应该看的算法,所以它看起来有点随机,但不是。
这是背景图片
我需要一些关于从哪里开始以及如何解决这个问题的指导,我们将不胜感激。
我希望这是我的 Ipad 应用程序的背景。我正在目标 C 中构建所有内容(本机应用程序)
我需要一点帮助来弄清楚如何为图像上的每个三角形(叠加层)设置动画,使其相互独立地淡入和淡出,目标是制作一个恒定的微光效果,这样图像就不会感觉那么僵硬。我必须独立地为每个三角形设置动画吗?有没有我应该看的算法,所以它看起来有点随机,但不是。
这是背景图片
我需要一些关于从哪里开始以及如何解决这个问题的指导,我们将不胜感激。
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,最后再次触发第一个动画。(动画)
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (self.fadeInOutBlock)
self.fadeInOutBlock();
}
@end
最后,in view 确实出现了,您第一次将其关闭。
b)
现在,对于您提到的闪烁动画,我建议您将每个三角形分成它自己的 UIView 并使用上面的技术,使用不同的持续时间和 alpha。
如果您有许多小的 UIView,请将它们组合成一个更大的 UIView(通过使用 addSubview 方法)并将动画应用于那些“容器”UIView。
例如,您可以有四个独立的 UIView 容器,它们有一堆独立的 UIView 作为它们的子级。然后,您可以创建四个块动画,每个容器一个,然后将动画应用到它们。我敢打赌,你将能够创造出非常好的效果。
您可以在没有任何特殊库的情况下执行此操作。所以你需要创建一个UIView
alpha 为 0 的黑色。然后创建一个NSTimer
增加 alpha 的UIView
.