2015-04-26 3 views
3

Я хочу всегда представлять контроллер представления в поп-устройстве на всех устройствах и всех ориентациях. Я попытался это сделать, приняв UIPopoverPresentationControllerDelegate и установив sourceView и sourceRect. Сегю в раскадровке настроен как «Присутствие как Popover segue». Это работает очень хорошо для всех устройств и ориентации, за исключением iPhone 6 Plus в ландшафте. В этом случае контроллер просмотра соскальзывает со дна экрана в виде листа. Как я могу предотвратить это, чтобы он всегда появлялся в popover?Настройка UIModalPresentationStyle для iPhone 6 Plus в ландшафте?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let popoverPresentationController = segue.destinationViewController.popoverPresentationController 
    popoverPresentationController?.delegate = self 
    popoverPresentationController?.sourceView = self.titleLabel!.superview 
    popoverPresentationController?.sourceRect = self.titleLabel!.frame 
} 

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle { 
    return UIModalPresentationStyle.None 
} 

ответ

7

Реализовать новый (по прошивке 8.3) adaptivePresentationStyleForPresentationController:traitCollection: метода UIAdaptivePresentationControllerDelegate:

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection { 
    // This method is called in iOS 8.3 or later regardless of trait collection, in which case use the original presentation style (UIModalPresentationNone signals no adaptation) 
    return UIModalPresentationNone; 
} 

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

+1

Это больше не работает в Xcode 7. Теперь в документах указано, что вы можете только возвращать FullScreen и OverFullScreen из этого метода. – Joey

+0

@Joey У вас есть ссылка на документы для этого? – Joshua

+0

Конечно, https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIAdaptivePresentationControllerDelegate_protocol/index.html#//apple_ref/occ/intfm/UIAdaptivePresentationControllerDelegate/adaptivePresentationStyleForPresentationController: – Joey

Смежные вопросы