为什么移动UIView不会在同一视图上移动UIImageView?

时间:2016-04-04 00:02:12

标签: ios objective-c uiview uiimageview

我在UIView上有一个ImageView。我试图移动视图键盘大小,但所有内容都正常移动而不是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 个答案:

答案 0 :(得分:1)

如果您尝试将两个视图一起移动,而另一个是另一个视图的子视图,则不需要单独为它们设置动画。

动画显示父视图应自动移动所有子视图。试图同时为它们单独制作动画可能会导致我的经验出现奇怪的结果。这个动画块应该是你所需要的。您可能还需要在视图“文件检查器”选项卡中检查“自动布局”设置。

如果您想同时执行多个动画,您也可以在同一个动画块中添加多个调用。

[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];