0

在我刚才的问题我分享我的问题与黑色背景出现在我的应用程序上的方向变化:Black background when view rotates on orientation change手动旋转和调整的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); 
} 
+0

这听起来像是正确的做法。你能发布你的完整代码吗? 如果将其包装在动画块中,则可以在应用变换之前决定视图的所需结束帧。 – EsbenB

+0

你为什么不使用'Autolayout'? –

+0

我已经添加了一些代码,Esben :) Vinay,怎么样? – Stine

回答

1

我发现我能够调整标签大小,一旦我取消选中自动布局复选框。

1

也许你调用某个标签上sizeToFit

尝试,而不是设置:

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

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

+0

谢谢,但不幸的是我不能使它工作:( – Stine