新UIWindow中的UILabel侧面显示

时间:2013-02-05 02:38:36

标签: ios uilabel

我正在开发一个小型库来创建一个显示iOS应用程序辅助功能信息的叠加层。

https://github.com/SeanMcTex/SMAccessibilityOverlay

我已经掌握了一些很好的基础知识,但在创建UILabel时遇到了一个奇怪的问题。当我处于肖像模式时,一切看起来都很好:

Overlay in portrait mode

但是,当我以横向模式显示叠加层时,所有UILabel的文本都会旋转以匹配纵向方向:

enter image description here

以下是创建叠加窗口的代码:

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

但是叠加层似乎从未正确调整方向 - 我可以在设备打开时旋转设备,或者在横向模式下打开新实例,同样缺乏结果。

我很乐意为任何人提供帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

这只是旋转界面(即UIAlertViews,顶栏等),因为您可能启用了AutoLayout,视图会被拉伸和缩放以填充屏幕但不会旋转本身...您需要手动旋转标签并使用CoreGraphics重新定位它们,或者您需要构建一个已经处于横向状态的单独视图,并在手机旋转时将其添加为SubView。