У меня есть приложение с множеством просмотров. Я хочу, чтобы только несколько видов могли поворачиваться в горизонтальной плоскости при повороте устройства. Я обнаружил, что не могу использовать (BOOL)shouldAutorotateToInterfaceOrientation
, потому что это будет вращать все представления в моем приложении.
Я нашел решение этой проблемы здесь, в Переполнении стека, но теперь у меня есть еще одна проблема, с которой нужно разобраться.
Вид поворачивается, когда я поворачиваю устройство, но он по-прежнему показывает вид, как будто он все еще находится в портретном режиме (прямо вверх и вниз). Верх и низ вида обрезаны. Есть ли способ повернуть вид, а также настроить его размер в соответствии с новой ориентацией?
Я также нашел это , но не смог заставить его работать.
Вот мой код для этого вида:
@implementation businessBank
@synthesize webView, activityIndicator;
- (void)viewDidLoad {
[super viewDidLoad];
NSString *urlAddress = @"website_url";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
- (void)didRotate:(NSNotification *)notification {
UIDeviceOrientation orientation = [[notification object] orientation];
if (orientation == UIDeviceOrientationLandscapeLeft) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI / 2.0)];
} else if (orientation == UIDeviceOrientationLandscapeRight) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI / -2.0)];
} else if (orientation == UIDeviceOrientationPortraitUpsideDown) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI)];
} else if (orientation == UIDeviceOrientationPortrait) {
[self.view setTransform:CGAffineTransformMakeRotation(0.0)];
}
}