我正在开发一个小型库来创建一个显示iOS应用程序辅助功能信息的叠加层。
https://github.com/SeanMcTex/SMAccessibilityOverlay
我已经掌握了一些很好的基础知识,但在创建UILabel时遇到了一个奇怪的问题。当我处于肖像模式时,一切看起来都很好:
但是,当我以横向模式显示叠加层时,所有UILabel的文本都会旋转以匹配纵向方向:
以下是创建叠加窗口的代码:
self.overlayWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.overlayWindow.windowLevel = UIWindowLevelStatusBar;
self.overlayWindow.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.75];
self.overlayWindow.rootViewController = self;
以下是创建每个UILabel的代码:
CGRect elementFrame = [view convertRect:view.bounds toView:view.window];
UILabel *overlayElement = [[UILabel alloc] initWithFrame:elementFrame];
overlayElement.adjustsFontSizeToFitWidth = YES;
overlayElement.minimumScaleFactor = 0.5;
overlayElement.backgroundColor = [UIColor redColor];
overlayElement.textAlignment = NSTextAlignmentCenter;
overlayElement.text = view.accessibilityLabel;
[self.overlayWindow addSubview:overlayElement];
最后,我在View Controllers中为iOS 5和6设置了所有旋转方法:
# pragma mark - AutoRotation
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
-(BOOL)shouldAutorotate {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
但是叠加层似乎从未正确调整方向 - 我可以在设备打开时旋转设备,或者在横向模式下打开新实例,同样缺乏结果。
我很乐意为任何人提供帮助。提前谢谢!
答案 0 :(得分:1)
这只是旋转界面(即UIAlertViews,顶栏等),因为您可能启用了AutoLayout,视图会被拉伸和缩放以填充屏幕但不会旋转本身...您需要手动旋转标签并使用CoreGraphics重新定位它们,或者您需要构建一个已经处于横向状态的单独视图,并在手机旋转时将其添加为SubView。