SplitViewController 按钮重叠

SplitViewController Button overlap

我有一个带有 MasterViewController 和 DetailViewController 的 UISplitViewController。

在我的 MasterViewController 中,我添加了一个分配了目标操作的按钮,它运行良好...但是:

我希望我的按钮位于 MasterViewController 和 DetailViewController 之间的边界上。 但是按钮的一半就消失了..我已经在图层等中尝试了 zPosition..但是它没有用。

有人可以帮我吗?

你的意思是: 分隔主视图和详细视图的边框线顶部的按钮对吗?

然后您可以直接从任何主控制器或从控制器向 window 添加按钮。 (虽然我不确定这是否是最佳做法。)

这里你需要考虑三件事:

  1. 这将在您从 viewDidLayoutSubviews() 添加按钮时起作用。它在 viewDidLoad() 或 viewWillAppear() 中不起作用。

  2. 由于按钮是从 viewDidLayoutSubviews() 添加的,因此可能会多次调用此方法,从而多次创建按钮并使较早的按钮实例泄漏。因此,您可能会考虑为按钮添加一个 class 实例,以深化您的应用程序设计。

  3. 在设备旋转时作用于按钮的位置(或状态)。


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")
}