0

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

在我的 MasterViewController 中,我添加了一个分配了目标操作的按钮,并且效果很好......但是:

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

有人可以帮我吗?

4

1 回答 1

1

您的意思是:边界线顶部的按钮将主视图和详细视图分开,对吗?

然后,您可以直接从任何 Master 或 Detail 控制器向窗口添加按钮。(我不确定这是否是最佳实践。)

你需要在这里考虑三件事:

  1. 当您从 viewDidLayoutSubviews() 添加按钮时,这将起作用。它不能从 viewDidLoad() 或 viewWillAppear() 工作。

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

  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")
}
于 2017-09-14T11:04:58.463 回答