0

我正在开发一个小型库来创建一个显示 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];

最后,我在视图控制器中为 iOS 5 和 6 设置了所有旋转方法:

# pragma mark - AutoRotation

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}

-(BOOL)shouldAutorotate {
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

但是覆盖似乎从来没有正确调整方向——我可以在设备打开时旋转设备,或者在横向模式下打开一个新实例,同样缺乏结果。

我应该很高兴任何人都可以提供任何帮助。提前致谢!

4

1 回答 1

1

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

于 2013-02-05T04:28:36.207 回答