В моем предыдущем вопросе я разделил мою проблему с черным фоном появляться в моем приложении изменения ориентации: 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);
}
Звучит как правильный подход. Можете ли вы опубликовать свой полный код? Если вы завернете его в блок анимации, вы можете выбрать желаемый конечный кадр вашего представления перед применением преобразования. – EsbenB
Почему вы не используете 'Autolayout'? –
Я добавил еще код, Эсбен :) Винай, как? – Stine