[英]Manually rotate and resize UILabel 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;
这将调整标签的字体大小以适合标签的宽度。
我发现,一旦取消选中自动布局复选框,便能够调整标签尺寸。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.