SplitViewController Кнопка перекрытия
У меня есть UISplitViewController с MasterViewController и DetailViewController.
В моем MasterViewController я добавляю кнопку с назначенным целевым действием, и она работает все хорошо... НО:
Я хочу, чтобы моя кнопка была центрирована на границе между MasterViewController и DetailViewController. Но половина кнопки просто исчезает. Я уже экспериментировал с zPosition в слое и т. Д., Но это не сработало.
Может ли кто-нибудь помочь мне здесь?
1 ответ
Вы имеете в виду: кнопка в верхней части границы, которая разделяет основной вид и подробный вид, верно?
Затем вы можете добавить кнопку в окно непосредственно с любого из контроллеров Master или Detail. (Я не уверен, что это лучшая практика.)
Вы должны рассмотреть три вещи здесь:
Это будет работать, когда вы добавляете кнопку из viewDidLayoutSubviews(). Это не работало от viewDidLoad() или viewWillAppear().
Поскольку кнопка добавляется из viewDidLayoutSubviews(), есть шансы, что этот метод может быть вызван несколько раз, при этом кнопка будет создана несколько раз и оставлены более ранние экземпляры кнопки. Так что вы можете подумать о том, чтобы иметь экземпляр класса для кнопки, который углубит ваш дизайн приложения.
Действуйте на положение (или состояние) кнопки, когда устройство вращается.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
/// Have a precise logic to centre it
let rect = CGRect(x: 270, y: 200, width: 100, height: 30)
let button = UIButton(frame: rect)
button.setTitle("Test Button", for: .normal)
button.backgroundColor = UIColor.red
button.addTarget(self, action: #selector(MasterViewController.testButtonTapped(sender:)), for: .touchUpInside)
let window = self.view.window
window?.addSubview(button)
window?.bringSubview(toFront: button)
}
func testButtonTapped(sender: UIButton) {
debugPrint("Test button tapped")
}