我在我的内部有这个动画,viewController
可以缩小并向下滑动我的菜单。
-(void)dismissMenuWithAnimation
{
CGRect originalFrame = self.view.frame;
[UIView animateWithDuration:2
animations:^{
self.view.frame = CGRectMake(originalFrame.origin.x,originalFrame.origin.y+originalFrame.size.height,originalFrame.size.width,10);
}
completion:^(BOOL finished){
[self.view removeFromSuperview];
self.view.frame = originalFrame;
}];
}
在同一内部viewController
,我正在覆盖viewWillLayoutSubviews
:
-(void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
CGRect viewBounds = self.view.bounds;
self.subView1.frame = CGRectMake(self.menuItemMidPosition,viewBounds.size.height-SUBVIEW1_HEIGHT,SUBVIEW1_WIDTH,SUBVIEW1_HEIGHT);
}
我有几个子视图,它们的框架是在这个viewWillLayoutSubviews
方法中设置的。没有在 viewDidLoad 中设置它,因为那时框架仍然不正确。
问题是,当我关闭菜单时,首先调用动画块,并且不知何故 self.view.frame 立即设置为高度 10。(减少的帧)。当它到达 viewWillLayoutSubviews 时,边界高度为 10。这导致我的其他子视图显示不正确。
这似乎很愚蠢,但我不知道如何解决这个问题。有人可以帮忙吗?谢谢。