У меня странная проблема, когда кажется, что представление в представленном контроллере представления не соответствует размеру отображаемого модала, поэтому центр смещается.
У меня есть следующее представлениенастройка контроллера, которая представляет другой вид контроллера модально.На iPhone все работает, как и ожидалось, однако на iPad, когда модал представлен как UIModalPresentationFormSheet
, который является стилем представления по умолчанию, модальное представление не измеряется в соответствии с размером листа, который смещается от центра (я полагаю)
Как мне исправить это?
представление контроллера представления:
class ViewController: UIViewController {
var button: UIButton?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .red
self.button = UIButton(frame: CGRect(origin: .zero, size: CGSize(width: 120, height: 40)))
self.button?.setTitle("Press Me", for: .normal)
self.button?.addTarget(self, action: #selector(pressedMe), for: .touchUpInside)
self.button?.center = self.view.center
self.button?.backgroundColor = .orange
self.view.addSubview(self.button!)
}
@objc func pressedMe() {
let modal = ModalViewController()
self.present(modal, animated: true, completion: nil)
}
}
представление контроллера представления:
class ModalViewController: UIViewController {
var innerView: UIView?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .blue
self.innerView = UIView(frame: CGRect(origin: self.view.center, size: CGSize(width: 20, height: 20)))
self.innerView!.backgroundColor = .green
self.view.addSubview(self.innerView!)
}
}
результат на iPhone: результат на iPad: