2016-04-04 8 views
1

Ich habe ein ImageView auf einem UIView. Ich versuche, die Tastaturgröße der Ansicht zu ändern, aber alle Inhalte werden ordnungsgemäß anstelle von UIImageView verschoben.Warum verschiebt UIView UIImageView nicht auf derselben Ansicht?

-(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]; 
} 

Jeder hatte das gleiche Problem oder einen Vorschlag? Ich habe sogar versucht, UIImagage zu bewegen, aber es bewegt sich nicht.

enter image description here

Wie Sie alles bewegt außer Imageview sehen können!

enter image description here

Antwort

1

Wenn Sie zwei Ansichten zusammen zu bewegen versuchen, und man ein Subview des anderen ist, sollten Sie sie nicht einzeln animieren müssen.

Beim Animieren der übergeordneten Ansicht sollten alle Unteransichten automatisch mitbewegt werden. Der Versuch, sie einzeln zur gleichen Zeit zu animieren, kann nach meiner Erfahrung zu seltsamen Ergebnissen führen. Dieser Animationsblock sollte alles sein, was Sie brauchen. Sie können auch die Einstellungen für das automatische Layout in den Ansichten der Registerkarte "Datei-Inspektor" überprüfen.

Wenn Sie mehr als eine Animation gleichzeitig ausführen möchten, können Sie auch mehrere Aufrufe in demselben Animationsblock hinzufügen.

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

Zuerst habe ich nur eine Animation als Ihre Antwort, aber bewegend geordneten Ansicht nicht Kind Ansicht bewegen dann habe ich versucht, dass man! – Bernard

+0

nehmen Sie einfach eine andere Ansicht in der Hauptansicht und versuchen, den Rahmen davon zu bearbeiten. und auch nicht versuchen, den Rahmen der Hauptansicht zu bearbeiten, d. h – TheMall

Verwandte Themen