手动旋转和调整UILabel的方向变化



在我之前的问题中,我分享了我的问题与黑色背景出现在我的应用程序在方向改变:黑色背景时,视图旋转方向改变

我没有设法通过遵循我得到的任何建议来解决问题,我有一种感觉,我可以避免黑色背景的唯一方法是通过手动旋转我的子视图来改变方向?

我的一个子视图是一个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; 

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

我发现我可以调整标签的大小,一旦我选中了自动布局复选框

最新更新