我有一个包含两个视图的视图控制器。我需要的是,当视图控制器被推入后,位于顶部的视图(_sidepanelview)向左移动,从屏幕上消失。
以下是我写的代码:
问题在于,当我运行应用程序后,视图控制器被推出后,视图_sidepanelview从屏幕上消失,然后再从右侧重新出现在屏幕中心,而不是从x = 0向左移动到x=-_sidepanelview宽度并消失。 我做错了什么?
注意:我关闭自动布局来创建这个应用程序,动画效果很好,但是开启自动布局之后,它就出现异常!
以下是我写的代码:
-(void)viewDidAppear:(BOOL)animated{
CGRect newsidepanelviewposition = _sidepanelview.frame;
newsidepanelviewposition.origin.x = -_sidepanelview.frame.size.width;
[UIView animateWithDuration:0.5 delay:1.0 options:UIViewAnimationOptionCurveEaseIn animations:^{
_sidepanelview.frame = newsidepanelviewposition;
} completion:^(BOOL finished) {
NSLog(@"Done!");
}];
}
问题在于,当我运行应用程序后,视图控制器被推出后,视图_sidepanelview从屏幕上消失,然后再从右侧重新出现在屏幕中心,而不是从x = 0向左移动到x=-_sidepanelview宽度并消失。 我做错了什么?
注意:我关闭自动布局来创建这个应用程序,动画效果很好,但是开启自动布局之后,它就出现异常!
setFrame
与 AutoLayout 的本质相矛盾,因为 frame 更新不会更新约束。如果你正在使用 AutoLayout,请不要使用setFrame
- 总是只更新约束。我已经用一些示例代码更新了我的答案。 - Vinod Vishwanath