Как сохранить изображение от автоматического поворота?
У меня UIImageView в качестве фонового изображения для моего приложения, которое, как вертолет, терпящий бедствие, автоматически поворачивается. Проблема в том, что когда ориентация автоматически поворачивается, мое изображение смещается повсюду, и мне это не нравится. Так как это простая текстура, я полагаю, что пользователь предпочел бы, чтобы она оставалась на своем месте, а не автоматически. Под этим я подразумеваю, что я бы хотел, чтобы изображение оставалось полноэкранным, и когда пользователь поворачивает телефон, изображение просто поворачивается на 90 градусов, поэтому создается впечатление, что изображение статично для телефона, а не для остальной части приложения.
2 ответа
Вы можете попробовать реализовать willAnimateRotationToInterfaceOrientation:duration:
метод в вашем контроллере зрения и вращая UIImageView
в противоположном направлении.
Код ниже взят из головы, я не могу гарантировать, что он будет работать:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
CGFloat angle = M_PI/2; // Figure out the proper angle
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
imageview.transform = CGAffineTransformMakeRotation(angle);
[UIView commitAnimations];
}
Я предлагаю вращать ваше изображение в программном обеспечении для редактирования изображений и загружать его динамически. Это гораздо, гораздо проще сделать, чем возиться с углами (а также код легче читать).
Как это:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
myBackground.image = [UIImage imageNamed:@"bg.jpg"];
} else { // landscape view
myBackground.image = [UIImage imageNamed:@"bg_landscape.jpg"];
}
}