2012-09-06 114 views
4

我希望這是我的應用程序Ipad的背景。 我在物體C(原生應用程序)中構建了一切東西淡入淡出對目標C的影響

我需要一些幫助,弄清楚如何在圖像上重疊每個三角形(疊加),以便相互之間淡入淡出,目標使不斷閃爍的效果,使圖像不覺得sos tatic。我是否必須獨立動畫每個三角形?有什麼算法,我應該看看,所以它似乎有點隨機,但不是。

這裏是背景圖像

enter image description here

我需要從哪裏開始,如何解決這個問題,和反饋,將不勝感激一些指導。

+2

任何時候,當我看到廣告爲「不是病毒」的東西時,我會有些le。。出於這個原因,我已經使用imgur,SO的可信圖像提供商在您的文章中插入圖像。 –

+0

謝謝!我沒有足夠的聲望來嵌入圖像 –

+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,並使用上述技術,使用不同的時間和阿爾法。

如果你有很多小的UIViews,將它們組合成一個更大的UIView(通過使用addSubview方法)並將動畫應用到這些'容器'UIViews。

例如,你可能有四個單獨的UIView容器,它們有一堆單獨的UIViews作爲它們的子元素。然後,您可以創建四個塊動畫,每個容器一個,然後將動畫應用到它們。我敢打賭,你可以創造出相當不錯的效果。

+0

順便說一句,這個例子是使用ARC,所以塊的全部內存管理都是自動處理的。記住這一點。 –

+0

嘿pmd,這似乎是有道理的。我會嘗試一下並回復你。謝謝!! –

+1

到目前爲止運氣還不錯? –

0

你可以做到這一點,沒有任何特殊的圖書館。因此,您需要創建一個alpha爲0的黑色UIView。然後創建一個NSTimer,以增加UIView的alpha。

+0

是的,我認爲這是做到這一點的一種方式,與此相關的問題是您將整個圖層從alpha 0移動到100,這並不能真正賦予獨立動畫i正在尋找。給每個三角形生命的最佳方法是什麼? 也許每個三角形成一個數組,並隨機更改一個布爾值淡入和淡出?? 我知道很多其他應用程序想要使用類似這樣的東西,所以我會在git完成後發佈它。 –