2

Я работаю с Xcode 7 и Swift 2. Я работаю над интерфейсом с предварительным просмотром камеры и элементы управления, которые отображаются так же, как приложение для родной камеры iOS. Все элементы управления остаются на месте, когда вы поворачиваете устройство, но значки «поворачиваются» на месте, чтобы правильно ориентироваться в ориентации устройства. (Надеюсь, я объяснил это тем, что имеет смысл. Если нет, откройте приложение собственной камеры на своем iPhone и несколько раз поверните устройство, чтобы посмотреть, о чем я говорю.)Нужна помощь в настройке интерфейса, где вращение фиксировано для большинства элементов, но блокировка предупреждений и обмена автоматически с помощью устройства

У меня есть базовый интерфейс работает уже фиксируя общую ориентацию интерфейса с помощью:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
     return UIInterfaceOrientationMask.LandscapeRight 
} 

Затем я использую преобразование, чтобы вращать каждую кнопку для ориентации устройства.

Проблема в следующем: Я должен быть в состоянии представить сообщения предупреждения (UIAlertController) и интерфейс обмена (UIActivityViewController) в этом же интерфейсе. Как заставить эти элементы вращаться в правильной ориентации, сохраняя при этом остальную часть интерфейса статичным?

Как я понимаю, есть два возможных подхода здесь - я просто не знаю, как сделать либо одну работу:

  1. Установите интерфейс для автоматического поворота и поддерживает все направления, но отключить автоматический поворот для просмотров, которые мне нужно сохранить на месте.

  2. Установите интерфейс, чтобы разрешить только .landscapeLeft (который в настоящее время находится в его настройке) и найти способ поворота предупреждающих сообщений и диалогового окна совместного доступа.

+0

Как выглядит оповещение в приложении для родной камеры? ты его видел? – onmyway133

ответ

0

Получил его работу. Мне нужно было получить доступ к представленномуViewController.view, чтобы повернуть оповещение и поделиться представлениями.

//used to periodically trigger a check of orientation 
var updateTimer: NSTimer? 

//Checks if the device has rotated and, if so, rotates the controls. Also prompts the user that portrait orientation is bad. 
func checkOrientation(timer: NSTimer) { 
    //Array of the views that need to be rotated as the device rotates 
    var viewsToRotate = [oneView, anotherView] 

    //This adds the alert or sharing view to the list, if there is one 
    if let presentedVC = presentedViewController?.view { 
     viewsToRotate.append(presentedVC) 
    } 

    //Rotate all of the views identified above 
    for viewToRotate in viewsToRotate { 
     switch UIDevice.currentDevice().orientation { 
     case UIDeviceOrientation.Portrait: 
      viewToRotate.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2)) 
     case UIDeviceOrientation.PortraitUpsideDown: 
      viewToRotate.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 
     case UIDeviceOrientation.LandscapeRight: 
      viewToRotate.transform = CGAffineTransformMakeRotation(CGFloat(2 * M_PI_2)) 
     default: 
      viewToRotate.transform = CGAffineTransformMakeRotation(CGFloat(0)) 
     } 
    } 
} 
+0

Я должен отметить, что окно совместного доступа не центрируется должным образом, когда я поворачиваюсь к портретной ориентации с этим исправлением. Я еще не знаю, почему это или как это исправить. – jreikes