0

Apple のコア アニメーションの紹介を読み、「ios tweening」、「ios easing」、および関連するシンをあちこち検索しましたが、驚くべきことに手ぶらで出てきました。

UILabel を表示したまま、UILabel コントラクトを作成し、そのサブビュー ボタンを非表示にするにはどうすればよいですか? リンク、コード、設計の概要、またはこれを実現するものは非常に役立ちます。

4

1 に答える 1

0

誰もこれに足を踏み入れていないことに驚きましたが、答えは非常に簡単です。しかし、それが理由かもしれません。

UILabel 自体をアニメーション化するかどうかはわかりませんが、UIView のサブクラスであるため、かなり正常であると思います。

これを行う最も簡単な方法は、UIView 静的メソッドを使用することです。

+ (void)animateWithDuration:(NSTimeInterval)duration 
                 animations:(void (^)(void))animations

私の場合、UIButtonmyLabelを持つ UIView の上にUILabel があります。クリックしたときにロールアップしたいと仮定すると、ボタンを適切な場所に Crtl キーを押しながらドラッグし、メソッドに次のように記述します。myContainerdismissButtondismissButtonmyContainerdismissButtonviewController.m-(IBAction)

-(IBAction)dismissButtonPressed:(id)sender
{
   [UIView animateWithDuration:1.0
                    animations:^{ 
           [self.myContainer.frame = CGRectMake(0,0,frame.bounds.size.width,20)];
           [self.dismissButton removeFromSuperView]; }];
}

注:これは私の限られた記憶からのものですので、間違いを指摘してください。

注 2: これを使用して自分自身を助ける場合は、セミコロン、ブラケット、およびブレースに注意してください。

さて、参照用にこれを読んでいるほとんどの人は、ビューを永遠にロールアップするボタンをクリックするよりも多くの機能を望んでいるかもしれません. より詳細な animateWith* メソッドがあります。

がある

+(void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

これにより、ビューのアニメーションが終了したら、完了ブロックを実行できます。Paul Hegarty の iOS クラスからのメモ:完了ブロックからより多くのアニメーション メソッドを呼び出すことができます。

アニメーション オプションを指定できる別のアニメーション メソッドがあります。

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

オプションは次のとおりです。

enum {
   UIViewAnimationOptionLayoutSubviews            = 1 <<  0,
   UIViewAnimationOptionAllowUserInteraction      = 1 <<  1,
   UIViewAnimationOptionBeginFromCurrentState     = 1 <<  2,
   UIViewAnimationOptionRepeat                    = 1 <<  3,
   UIViewAnimationOptionAutoreverse               = 1 <<  4,
   UIViewAnimationOptionOverrideInheritedDuration = 1 <<  5,
   UIViewAnimationOptionOverrideInheritedCurve    = 1 <<  6,
   UIViewAnimationOptionAllowAnimatedContent      = 1 <<  7,
   UIViewAnimationOptionShowHideTransitionViews   = 1 <<  8,

   UIViewAnimationOptionCurveEaseInOut            = 0 << 16,
   UIViewAnimationOptionCurveEaseIn               = 1 << 16,
   UIViewAnimationOptionCurveEaseOut              = 2 << 16,
   UIViewAnimationOptionCurveLinear               = 3 << 16,

   UIViewAnimationOptionTransitionNone            = 0 << 20,
   UIViewAnimationOptionTransitionFlipFromLeft    = 1 << 20,
   UIViewAnimationOptionTransitionFlipFromRight   = 2 << 20,
   UIViewAnimationOptionTransitionCurlUp          = 3 << 20,
   UIViewAnimationOptionTransitionCurlDown        = 4 << 20,
   UIViewAnimationOptionTransitionCrossDissolve   = 5 << 20,
   UIViewAnimationOptionTransitionFlipFromTop     = 6 << 20,
   UIViewAnimationOptionTransitionFlipFromBottom  = 7 << 20,
};
typedef NSUInteger UIViewAnimationOptions;

うまくいけば、UIView のアニメーション化に関するこの長々としたイントロから誰かが恩恵を受けることができます。

于 2013-06-11T01:46:44.833 に答える