1

次のアクションをトリガーするボタンが必要です。クリックすると、ロゴが上に押し出されてビューから外れ、削除されます。もう一度クリックすると、逆のことが行われるはずです。つまり、画像が作成され、ビューに押し戻されます。ストーリーボードを使用してインターフェイスを設定しています。私の問題は、アニメーションをトリガーできないことです。以下に私のコードを投稿します:

TableViewController.h内

@interface TableViewController : UITableViewController{

    BOOL status;

}

@property (weak, nonatomic) IBOutlet UIImageView *animateLogo;
@property (weak, nonatomic) IBOutlet UIButton *button;

- (IBAction)onClick:(id)sender;
- (void)showHideView;

@end

TableViewController.m内

@synthesize animateLogo, button;

- (void)viewDidLoad{

    [super viewDidLoad];

    status = YES;

}

- (IBAction)onClick:(id)sender{
[self showHideView];
}

if(status){

    [UIView
     animateWithDuration:1.5
     delay:0
     options:UIViewAnimationCurveEaseOut
     animations:^{
         [animateLogo setFrame:CGRectOffset([animateLogo frame], 0, -animateLogo.frame.size.height)];
     }
     completion:^(BOOL completed) {}
    ];

    status = NO;
    [button setTitle:@"Show" forState:UIControlStateNormal];

}
else{

    [UIView
     animateWithDuration:1.5
     delay:0
     options:UIViewAnimationCurveEaseOut
     animations:^{
         [animateLogo setFrame:CGRectOffset([animateLogo frame], 0, animateLogo.frame.size.height)];
     }
     completion:^(BOOL completed) {}
    ];

    status = YES;
    [button setTitle:@"Hide" forState:UIControlStateNormal];

}

}

編集:

UIImageViewをプログラムでコーディングすると、アニメーションは機能します。だから問題はどういうわけかストーリーボードにあります。レイアウトをよりよく見落とすことができるように、これをストーリーボードで機能させることを好みます。

UIImage *test = [UIImage imageNamed:@"logo.png"];
    animateLogo = [[UIImageView alloc] initWithImage:test];
    [self.view addSubview:animateLogo];
    [animateLogo setFrame:CGRectOffset([animateLogo frame], 0, animateLogo.frame.size.height)];
4

1 に答える 1

1

問題は解決しました。UIImageViewの代わりにUIViewをアニメーション化するという、別のアプローチを使用しました。私は今、魅力のように働いています。

于 2012-10-08T07:38:40.177 に答える