SplitViewController 按钮重叠
SplitViewController Button overlap
我有一个带有 MasterViewController 和 DetailViewController 的 UISplitViewController。
在我的 MasterViewController 中,我添加了一个分配了目标操作的按钮,它运行良好...但是:
我希望我的按钮位于 MasterViewController 和 DetailViewController 之间的边界上。
但是按钮的一半就消失了..我已经在图层等中尝试了 zPosition..但是它没有用。
有人可以帮我吗?
你的意思是:
分隔主视图和详细视图的边框线顶部的按钮对吗?
然后您可以直接从任何主控制器或从控制器向 window 添加按钮。 (虽然我不确定这是否是最佳做法。)
这里你需要考虑三件事:
这将在您从 viewDidLayoutSubviews() 添加按钮时起作用。它在 viewDidLoad() 或 viewWillAppear() 中不起作用。
由于按钮是从 viewDidLayoutSubviews() 添加的,因此可能会多次调用此方法,从而多次创建按钮并使较早的按钮实例泄漏。因此,您可能会考虑为按钮添加一个 class 实例,以深化您的应用程序设计。
在设备旋转时作用于按钮的位置(或状态)。
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")
}
我有一个带有 MasterViewController 和 DetailViewController 的 UISplitViewController。
在我的 MasterViewController 中,我添加了一个分配了目标操作的按钮,它运行良好...但是:
我希望我的按钮位于 MasterViewController 和 DetailViewController 之间的边界上。 但是按钮的一半就消失了..我已经在图层等中尝试了 zPosition..但是它没有用。
有人可以帮我吗?
你的意思是: 分隔主视图和详细视图的边框线顶部的按钮对吗?
然后您可以直接从任何主控制器或从控制器向 window 添加按钮。 (虽然我不确定这是否是最佳做法。)
这里你需要考虑三件事:
这将在您从 viewDidLayoutSubviews() 添加按钮时起作用。它在 viewDidLoad() 或 viewWillAppear() 中不起作用。
由于按钮是从 viewDidLayoutSubviews() 添加的,因此可能会多次调用此方法,从而多次创建按钮并使较早的按钮实例泄漏。因此,您可能会考虑为按钮添加一个 class 实例,以深化您的应用程序设计。
在设备旋转时作用于按钮的位置(或状态)。
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")
}