4

これをiPad用アプリの背景にしたい。私はObjective C(ネイティブアプリ)ですべてを構築しています

画像(オーバーレイ)上の各三角形をアニメーション化して、互いに独立してフェードインおよびフェードアウトする方法を理解するのに少し助けが必要です. 各三角形を個別にアニメーション化する必要がありますか? 私が見なければならないアルゴリズムはありますか?それはちょっとランダムに見えますが、そうではありません.

背景画像はこちら

ここに画像の説明を入力

どこから始めて、この問題にどのように取り組むべきかについてのガイダンスが必要です。フィードバックをいただければ幸いです。

4

2 に答える 2

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 のアルファが 0.5f 秒で 0.0f に減少するフェードアウトから始めます。完了すると、2 番目のアニメーションが起動され、myView のアルファが 1.0f に戻され、最後に最初のアニメーションが再び起動されます。(アニメセプション)

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

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

@end

そして最後に、あなたが初めてそれを発射したように見えました。

b)

さて、あなたが言及したきらめくアニメーションについては、各三角形を独自の UIView に分離し、上記の手法を使用して、異なる期間とアルファを使用することをお勧めします。

小さな UIView が多数ある場合は、(addSubview メソッドを使用して) 大きな UIView にグループ化し、それらの「コンテナ」UIView にアニメーションを適用します。

たとえば、4 つの個別の UIView コンテナーを作成し、それらのコンテナーの子として個別の UIView を多数持つことができます。次に、コンテナごとに 1 つずつ、合計 4 つのブロック アニメーションを作成し、それらにアニメーションを適用できます。それを試してみると、かなり良い効果を生み出すことができるでしょう。

于 2012-09-06T02:40:28.647 に答える
0

特別なライブラリなしでこれを行うことができます。UIViewしたがって、アルファ 0の黒を作成する必要があります。次にNSTimer、 のアルファを増加させる を作成しますUIView

于 2012-09-06T02:12:43.030 に答える