UIView在界面旋转方面究竟做了什么?

时间:2012-09-25 06:11:44

标签: iphone objective-c ios uiview uinavigationcontroller

有人可以解释iOS在界面旋转方面的作用。我有一个布局问题,一个视图在旋转iPhone后消失了。似乎View设置了一个新框架,边界或其他什么,不知道。无论如何在界面旋转后,布局问题永远消失了。因此,必须在界面旋转时将某些内容设置为视图。

我从NIB文件加载View并使用navigationcontroller显示它:

BirthdayReminderWidgetConfigViewController *vc = [self.storyboard
    instantiateViewControllerWithIdentifier:@"BirthdayConfigController"];
self.navigationController pushViewController:vc animated:true];

为了在不旋转界面的情况下显示正确的视图,我可能需要做一些设置。

我的nib文件加载的视图存在布局问题,如下所示:

该项目包含一个MainStoryboard。在其中,我从一个nib文件加载一个视图。

NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.configViewController = [xib objectAtIndex:0];

故事板有一个导航控制器,加载的视图如下所示:

    if (currentWidgetConfigViewController != nil)
    {
      [self.navigationController pushViewController:currentWidgetConfigViewController animated:true];
    }

所以在我看来没有错? (第一个问题) 但现在问题出在了。

我的设计是:

enter image description here

iOS的作用如下

enter image description here

控件安排得不好。

除此之外,通过新视图上的按钮,我打开了一个包含该代码的PeoplePicker:

[self presentViewController:self.picker animated:YES completion:nil];

使用[self.picker dismissViewControllerAnimated:true completion:nil];关闭人员选择器后,我得到了这个结果:

enter image description here

那么这里出了什么问题?

1 个答案:

答案 0 :(得分:1)

在视图中覆盖-setFrame:-setBounds:,看看会发生什么:

- (void) setFrame: (CGRect) newFrame
{
    NSLog(@"New frame: %@", NSStringFromCGRect(newFrame));
    [super setFrame:newFrame];
}

此外,transform通常会在轮换期间发生变化。 Orientation Zoo可能有所帮助,它是一个示例Xcode项目,展示了各种轮换用例中发生的情况。但是,长时间没碰到它,所以我不知道它是否仍然有用。