我使用以下代码创建视图并将其放在顶部:
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];
它完美无缺,但我的问题是如果我在视图中写任何东西(比如使用标签)并且我的设备处于横向位置,则文本处于垂直位置。我附上了一张照片,以便更清楚。有没有办法解决它?
编辑:如果我使用UIApplication.sharedApplication.keyWindow.rootViewController而不是mainWindow,我会得到这个:
答案 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
基本上,只有主窗口的第一个子视图才能获得旋转事件,因此您必须以其他方式执行此操作。