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

Я добавил еще код, Эсбен :) Винай, как? – Stine

ответ

1

Я выяснил, что смог отрегулировать размер метки, как только я снял флажок автоматической раскладки.

1

Возможно, вы вызываете sizeToFit на этикетке где-нибудь?

Попробуйте вместо того, чтобы установить:

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

Это будет корректировать свой размер этикетки шрифта, чтобы соответствовать ширине этикетки.

+0

Спасибо, но, к сожалению, я не могу заставить его работать :( – Stine

Смежные вопросы