在方向更改时手动旋转和调整 UILabel 的大小

Manually rotate and resize UILabel on orientation change

在我之前的问题中,我分享了我的问题,我的应用程序在方向更改时出现黑色背景:Black background when view rotates on orientation change

我没有按照我得到的任何建议设法解决问题,我觉得避免黑色背景的唯一方法是在方向更改时手动旋转我的子视图?

我的一个子视图是一个 UILabel,它应该覆盖整个屏幕。使用类似于此的一行代码,轮换进行得非常顺利:

myLabel.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(isLandscape ? 90 : 0));

我的问题是让 UILabel 调整为在横向模式下也占据整个屏幕。我试图切换其边界的高度和宽度,但没有任何反应。

如有任何建议,我们将不胜感激。


以下是更多代码详细信息:

[UIView animateWithDuration:0.5
                 animations:^{
                     myLabel.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(isLandscape ? 90 : 0));
                 }
                 completion:^(BOOL finished) {
                     myLabel.bounds = CGRectMake(0, 0, [self screenWidth], [self screenHeight]);

                     CGFloat fontSize = ((isLandscape ? 0.9649 : 0.9375) * [self screenWidth]) / 2.74;
                     [myLabel setFont:[UIFont fontWithName:FontName size:fontSize]];
                 }
];

哪里

- (CGFloat) screenWidth {
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;
    return isLandscape ? MAX(screenSize.width, screenSize.height) : MIN(screenSize.width, screenSize.height);
}

- (CGFloat) screenHeight {
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;
    return isLandscape ? MIN(screenSize.width, screenSize.height) : MAX(screenSize.width, screenSize.height);
}

也许你在某个地方的标签上调用 sizeToFit

尝试改为设置:

myLabel.adjustsFontSizeToFitWidth  = YES;
myLabel.minimumFontScale      =  0.1; 

这将调整您的标签字体大小以适应标签的宽度。

我发现在取消选中自动布局复选框后我可以调整标签大小。