我在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,但它没有移动。
你可以看到除了imageview之外的所有东西都移动了!
答案 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];