Я разрабатываю приложение iOS, в котором мне нужно повернуть 6 UIView, чтобы они всегда «смотрели» на пользователя. Остальную часть интерфейса не нужно поворачивать.Проблема вращения по горизонтальному углу
Приведенный ниже код работает в Simulator. Однако, когда я тестировал на своем телефоне, я столкнулся с проблемой. Всякий раз, когда я помещаю телефон в плоский исходный/горизонтальный, он понимает, что он должен вернуться к портрету. Любая идея, что это происходит, и работа вокруг?
#pragma mark Rotation
- (BOOL)shouldAutorotate
{
return NO;
}
- (void)orientationChanged:(NSNotification *)notification
{
CGFloat rotationAngle = [self convertOrientationToRadians];
[UIView animateWithDuration:0.5 animations:^{
for (TimerButton *timerButton in self.timerButtons) {
timerButton.button.transform = CGAffineTransformMakeRotation(rotationAngle);
}
}];
}
- (CGFloat)convertOrientationToRadians
{
UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
CGFloat rotationAngle = 0.0;
switch (orientation) {
case UIDeviceOrientationPortrait:
rotationAngle = 0.0;
break;
case UIDeviceOrientationLandscapeLeft:
rotationAngle = M_PI/2;
break;
case UIDeviceOrientationPortraitUpsideDown:
rotationAngle = M_PI;
break;
case UIDeviceOrientationLandscapeRight:
rotationAngle = - M_PI/2;
break;
default:
break;
}
return rotationAngle;
}
Я не думаю, что могу использовать [[UIApplication sharedApplication] statusBarOrientation], потому что i set - (BOOL) shouldAutorotate { return NO; } но я добавил условие для UIDeviceOrientationFaceUp для возврата -1, и я просто проверяю, равен ли он -1 перед вращением просмотров! благодаря – Marcelo