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

时间:2015-06-05 08:33:10

标签: ios objective-c uiinterfaceorientation cgaffinetransform orientation-changes

在上一个问题中,我与我的应用中出现的方向更改中出现的黑色背景分享了我的问题: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);
}

2 个答案:

答案 0 :(得分:1)

也许你在某个地方的标签上打电话给sizeToFit

请尝试设置:

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

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

答案 1 :(得分:1)

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