繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM