为什么更改帧的原点不更新其在屏幕上的位置?(iOS 8)

为什么更改帧的原点不更新其在屏幕上的位置?(iOS 8),ios,xcode,frame,uisplitviewcontroller,master,Ios,Xcode,Frame,Uisplitviewcontroller,Master,我有一个分割视图控制器,有一个主视图和一个详细视图。在纵向视图中,如果母版部分覆盖了细节视图(iPad),我希望将细节视图滑出,使其看起来离开屏幕,而不是被母版遮住。当我在屏幕上滑动母版时,我通过动画实现了这一点 但是,当单击主控形状(也称为菜单)中的项目以打开新的局部视图控制器时,该视图控制器的视图会被主控形状遮挡。因此,为了解决这个问题,我在细节视图的控制器中实现了以下代码: -(void)viewWillAppear:(BOOL)animated { [super viewWill

我有一个分割视图控制器,有一个主视图和一个详细视图。在纵向视图中,如果母版部分覆盖了细节视图(iPad),我希望将细节视图滑出,使其看起来离开屏幕,而不是被母版遮住。当我在屏幕上滑动母版时,我通过动画实现了这一点

但是,当单击主控形状(也称为菜单)中的项目以打开新的局部视图控制器时,该视图控制器的视图会被主控形状遮挡。因此,为了解决这个问题,我在细节视图的控制器中实现了以下代码:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    CGRect detailFrame = self.view.frame;

   detailFrame.origin.x += (self.splitViewController.maximumPrimaryColumnWidth);

    self.view.frame = detailFrame;
}

我使用了NSLog并验证了self.view.frame.origin.x确实被更新为正确的值,但是当视图出现在屏幕上时,它的位置仍然是origin 0。为什么会发生这种情况?

您打开了自动布局。它不喜欢你这样改变它的布局。关闭它,或者使用约束。第二步。想知道为什么你要把它作为一个注释而不是一个答案来发布。就像在以编程方式设置一个约束并在菜单显示时移动它一样?我不确定我是否理解你的意思,你能更具体一点吗?我尝试将视图中的约束添加到容器边距,但没有帮助。我已关闭自动布局,但视图的原点仍没有更新。