Обычно я следовал инструкциям здесь: https://stackoverflow.com/a/24687152/3741933.Как представить UIViewController как Popover в Swift программно на iPhone
Однако, как обсуждалось в его комментариях, popover всегда является полноэкранным независимо от preferredContentSize
или sourceRect
.
Кнопка представить поповер:
func buttonClicked(sender: UIButton!) {
let ac = EmptyViewController() as UIViewController
ac.modalPresentationStyle = .Popover
ac.preferredContentSize = CGSizeMake(200, 200)
let popover = ac.popoverPresentationController
popover?.delegate = self
popover?.permittedArrowDirections = .Any
popover?.sourceView = self.view
popover?.sourceRect = CGRect(x: 100, y: 100, width: 100, height: 100)
presentViewController(ac, animated: true, completion: nil)
}
UIViewController:
import UIKit
class EmptyViewController : UIViewController {
override func viewDidLoad() {
view.backgroundColor = UIColor.redColor()
}
}
Я задаюсь вопросом, как сделать это реальный поповер (не полный размер экрана). Кстати, как отметил @EI Captain, он отлично работает на iPad, но всегда полноэкранный режим на iPhone.
в iPhone с портретным режимом, с этим кодом popover всегда в полноэкранном режиме ... в iPad он отлично работает ... по-прежнему проверяйте это http://richardallen.me/2014/11/28/popovers.html –
@EICaptain Вы правы, что он отлично работает на iPad. Однако учебник работает с IB. Мне интересно, как это сделать программно. –
Возможно, вам нужно сделать индивидуальный просмотр или использовать любую библиотеку для этого –