查看顶级景观支持

时间:2013-03-07 23:23:07

标签: ios objective-c uiview

我使用以下代码创建视图并将其放在顶部:

UIWindow* mainWindow = [[UIApplication sharedApplication] keyWindow];
CGRect viewRect = mainWindow.frame;
topView = [[UIView alloc] initWithFrame:viewRect];
[topView setBackgroundColor:[UIColor colorWithWhite:0.2 alpha:0.4]];
[mainWindow addSubview:topView];

它完美无缺,但我的问题是如果我在视图中写任何东西(比如使用标签)并且我的设备处于横向位置,则文本处于垂直位置。我附上了一张照片,以便更清楚。有没有办法解决它?enter image description here

编辑:如果我使用UIApplication.sharedApplication.keyWindow.rootViewController而不是mainWindow,我会得到这个:

enter image description here

2 个答案:

答案 0 :(得分:0)

如果不将给定视图添加到视图控制器,就无法修复它(UIWindow从未打算处理旋转,并且没有逻辑可以这样做。)

您遇到的不稳定的视图轮换结果实际上是UIView默认autoresizingMask的结果

topView = [[UIView alloc] initWithFrame:viewRect];
[topView setBackgroundColor:[UIColor colorWithWhite:0.2 alpha:0.4]];
[topViewsetAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];

答案 1 :(得分:0)

看到这个答案:

View on top of everything: UIWindow subview VS UIViewController subview

基本上,只有主窗口的第一个子视图才能获得旋转事件,因此您必须以其他方式执行此操作。