2

UIImageViewをタップすると、ボタンがフェードアウトして戻ってくるアプリがあります。ステータスバーは、すばやく表示されることを除いて、同じように機能します。ボタンのタイミングに合わせてフェードインのタイミングを調整する方法はありますか?これが私の.mファイルで、ボタンとステータスバーのコードがあります。

.m

- (void)viewDidLoad
{
////Loads UIImageView from URL
todaysWallpaper.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.inkdryercreative.com/daily/archive/mondays/images/062-mondays-960x640-A.jpg"]]]; 

_buttonsVisible = false;

[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

  UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]    initWithTarget:self action:@selector(imageTapped:)];
  [todaysWallpaper addGestureRecognizer:tapGesture];
}

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

[[UIApplication sharedApplication] setStatusBarHidden:YES];
}

- (void)imageTapped:(UIGestureRecognizer *)sender {
float targetA = 0;
if(_buttonsVisible == NO) {
 targetA =1.0;
 } else {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(imageTapped:)  object:nil];
  [[UIApplication sharedApplication] setStatusBarHidden:YES];
  [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
  [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];


}

[UIView beginAnimations:@"MoveAndStrech" context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationBeginsFromCurrentState:YES];
homeButton.alpha = targetA;
infoButton.alpha = targetA;
saveButton.alpha = targetA;
tweetButton.alpha = targetA;
[UIView commitAnimations];
_buttonsVisible = !_buttonsVisible;

if(_buttonsVisible) {
[self performSelector:@selector(imageTapped:) withObject:nil afterDelay:100.0];
  [[UIApplication sharedApplication] setStatusBarHidden:NO ];

  [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
}
}

どんな助けやガイダンスも大歓迎です。私のクライアントは、火曜日までにこれを実行するか、他の誰かにこれを実行してもらいたいと考えています。私はこのアプリに私の人生を注ぎ込んだので、知識を共有するのを手伝っていただければ幸いです。ありがとう

4

4 に答える 4

8

アニメーションブロックでラップすることができます。setStatusBarHidden:代わりにメソッドを 使用してくださいsetStatusBarHidden:withAnimation:

[UIView beginAnimations:@"foo" context:nil];
[UIView setAnimationDuration:1.0];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[UIView commitAnimations];
于 2012-04-15T16:34:28.797 に答える
3

これを試すことができます。これは、すべてのiOSデバイスの1行のコードです。

[[UIApplication sharedApplication] setStatusBarHidden:YES
                                        withAnimation:UIStatusBarAnimationFade];

それが役に立てば幸い..

于 2012-11-29T12:41:10.130 に答える
3

以下のコードを使用してステータスバーを設定してみてください。

[[UIApplication sharedApplication] setStatusBarHidden:YES
                                        withAnimation:UIStatusBarAnimationFade];
于 2013-07-18T10:44:20.547 に答える
1

できることは、独自のNavigationBarを作成することです(UINavigationControllerのUINavigationBarは使用しないでください)-次に、それをカスタマイズして、アルファなどの簡単にアニメート可能なプロパティを割り当てることができます。

于 2012-04-15T16:11:27.543 に答える