2

有人可以解释一下iOS在界面旋转方面做了什么。我的一个视图在旋转 iPhone 后消失了。似乎视图设置了一个新的框架、边界或其他什么,不知道。无论如何,一旦布局问题永远消失了,界面旋转后。所以必须在界面旋转时为视图设置一些东西。

我正在从 NIB 文件加载视图并使用导航控制器显示它:

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];
    }

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

我设计的是:

在此处输入图像描述

iOS 所做的如下

在此处输入图像描述

控件安排得不好。

除了在新视图上使用一个按钮之外,我还使用该代码打开了一个 PeoplePicker:

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

关闭人员选择器后,[self.picker dismissViewControllerAnimated:true completion:nil];我得到以下结果:

在此处输入图像描述

那么这里出了什么问题呢?

4

1 回答 1

1

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

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

此外,transform通常在轮换期间会发生变化。Orientation Zoo可能会有所帮助,它是一个示例 Xcode 项目,展示了在各种轮换用例中发生的情况。不过好久没碰了,不知道还能不能用。

于 2012-09-25T06:28:09.440 回答