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