2016-04-04 7 views
1

私はUIViewにImageViewを持っています。ビューのキーボードサイズを移動しようとしていますが、UIImageViewではなくすべてのコンテンツが正しく移動します。UIViewを動かすと、同じビューでUIImageViewが動かないのはなぜですか?

-(void) keyboardWillShow:(NSNotification *) notification { 
    NSDictionary* keyboardInfo = [notification userInfo]; 

    // Work out where the keyboard will be 
    NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameBeginUserInfoKey]; 
    CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue]; 

    // Work out animation duration 
    NSTimeInterval animationDuration =[[keyboardInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; 

    UIViewAnimationOptions keyboardAnimationCurve = [[keyboardInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]; 


    // Animate this 
    [UIView animateWithDuration:animationDuration 
          delay:0.0 
         options:keyboardAnimationCurve 
        animations:^(){ 
         self.view.frame = CGRectOffset(self.view.frame, 0, -keyboardFrameBeginRect.size.height); 
        } 
        completion:NULL]; 


    [UIImageView animateWithDuration:animationDuration 
          delay:0.0 
         options:keyboardAnimationCurve 
        animations:^(){ 
         self.imgBankLogo.frame = CGRectOffset(self.imgBankLogo.frame, 0, -keyboardFrameBeginRect.size.height); 
        } 
        completion:NULL]; 
} 

誰でも同じ問題がありましたか?私もUIImageを動こうとしましたが、動いていません。あなたが見ることができるように

enter image description here

はすべてがImageViewのを除いて移動します!

enter image description here

答えて

1

あなたは2つのビューを移動しようとしている、一方が他方のサブビューである場合は、個別にアニメーション化する必要はありません。

親ビューをアニメーション化すると、すべてのサブビューを自動的に移動する必要があります。同時に個々にアニメーション化しようとすると、私の経験では奇妙な結果が生じる可能性があります。このアニメーションブロックは必要なだけのものでなければなりません。ビュー「ファイルインスペクタ」タブの自動レイアウト設定を確認することもできます。

一度に複数のアニメーションを実行する場合は、同じアニメーションブロックに複数の呼び出しを追加することもできます。

+0

最初は答えとしてアニメーションは1つのみでしたが、移動する親ビューでは子ビューが移動しなかったので、私はそれを試しました! – Bernard

+0

メインビュー内で別のビューを表示し、そのフレームを編集しようとします。メインビューのフレーム、つまりself.viewを編集しようとすると、問題が発生する可能性があります – TheMall

関連する問題