3

私はコーディングに不慣れです。ボタンがクリックされたときにビューを表示する必要があり、ビューがボタン自体からのものであるかのように表示されるアプリケーションを作成しています。そして、ボタンをもう一度クリックすると、ビューはボタン(アニメーション)に戻るはずです。

フリップ、カールなどのアニメーションがありますが、これを行う方法がわかりません。

4

2 に答える 2

6

これが簡単な例です。showView:ボタンのアクションとして設定します。

- (IBAction)showView:(UIButton *)sender {
    // Create a view with the size and position of the tapped button
    UIView *view = [[UIView alloc] initWithFrame:sender.frame];
    // Set a color on the view
    view.backgroundColor = [UIColor redColor];
    // Add the new view to the main view. The new view will be displayed over any other views
    [self.view addSubview:view];
    // Animate the change of the new view's frame. We use the bounds of the main view.
    [UIView animateWithDuration:3.6 animations:^{
        view.frame = self.view.bounds;
    }];
}

完全なソリューション:

まず、ビューとボタンのプロパティを作成します。これらをどのように初期化するかはあなた次第です。

@property (strong, nonatomic) UIButton *button;
@property (strong, nonatomic) UIView *aView;
...
@synthesize button = _button;
@synthesize aView = _aView;

次に、2つのフレーム間のビューをアニメーション化し、必要に応じてアニメーションの最後にスーパービューからビューを削除するメソッドを作成します。

- (void)animateView:(UIView *)view 
           fromRect:(CGRect)from 
             toRect:(CGRect)to 
       inParentView:(UIView *)parent 
     removeWhenDone:(BOOL)remove 
{
    if (!remove) {
        [parent addSubview:view];
    }
    view.frame = from;
    [UIView animateWithDuration:3.6 animations:^{
        view.frame = to;
    } completion:^(BOOL finished) {
        if (remove) {
            [view removeFromSuperview];
        }
    }];
}

次に、ビューが表示されているかどうかを示すブールプロパティを作成し、プロパティのカスタムセッターを実装します。

@property (assign, nonatomic) BOOL viewShown;
...
@synthesize viewShown = _viewShown;

- (void)setViewShown:(BOOL)viewShown
{
    _viewShown = viewShown;
    if (_viewShown) {
        // Insert your own toRect
        [self animateView:self.aView fromRect:self.button.frame toRect:CGRectMake(0, 0, 100, 100) inParentView:self.view removeWhenDone:NO];
    } else {
        [self animateView:self.aView fromRect:self.aView.frame toRect:self.button.frame inParentView:self.view removeWhenDone:YES];
    }
}

最後に、ボタンのアクションでviewShownプロパティを反転します。

- (IBAction)showView:(UIButton *)sender {
    self.viewShown = !self.viewShown;
}
于 2012-05-28T12:17:17.360 に答える
-2

//ここでanimationButtonはボタンの名前です//ここでaViewはビューです

aView.view.center = animationButton.center;

次に、ビューを図のように小さなスケールに拡大縮小して、ビブを作成すると、ボタン自体からのものであるかのように表示されるようにします。

CGAffineTransform trans = CGAffineTransformScale(aView.view.transform, 0.01, 0.01);

aView.view.transform = trans;   // do it instantly, no animation

[self.view addSubview:aView.view];

// now return the view to normal dimension, animating this transformation

//アニメーションを使用して、アニメーションによってビューをある程度拡大します

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationCurveEaseInOut
                 animations:^{
                                  aView.view.transform =   CGAffineTransformScale(aView.view.transform, 70.0, 70.0);
                 }
                 completion:nil];
于 2012-05-29T11:26:36.800 に答える