在UIWindow上添加一个按钮。最佳实践?

时间:2016-06-17 07:49:57

标签: ios xcode swift swift2

所以我一直在努力在屏幕上添加一个按钮,它根本不会移动(即使使用scrollView / Table View)。

所以,基本上是像android一样的浮动动作按钮。

我使用了以下库,它们工作正常但有错误并且不是最佳的:

  • KCFloatingActionButton
  • LiquidFloatingActionButton

所以我决定创建自己的按钮。 现在的问题是我不知道在哪里添加按钮。我正在使用标签栏控制器

我见过这个question

它提出了以下解决方案:

1)使用UIViewController而不是UITableVC,但我不可能这样做。

2)自添加自动布局以来,第二种解决方案无效。

3)如果我有导航控制器,则另一个是在导航控制器上添加按钮。

我个人考虑在UIWindow上添加它。但我不知道我是否应该这样做。添加浮动操作按钮有哪些建议和最佳做法?

这就是我的尝试:

    let fab : UIButton = UIButton()


    fab.translatesAutoresizingMaskIntoConstraints = false
    fab.center.x = (self.navigationController?.view.center.x)! + (self.navigationController?.view.frame.width)!/2 - 50.0
    fab.center.y = (self.navigationController?.view.center.y)! + (self.navigationController?.view.frame.height)!/2 - 110.0
    fab.frame.size = CGSize(width: 60.0, height: 60.0)


    self.navigationController?.view.addSubview(fab)

    var constraintSet = [NSLayoutConstraint]()

    constraintSet.append(fab.centerXAnchor.constraintEqualToAnchor(self.navigationController?.view.centerXAnchor, constant: self.view.frame.width/2 - 50.0))
    constraintSet.append(fab.centerYAnchor.constraintEqualToAnchor(self.navigationController?.view.centerYAnchor, constant: self.view.frame.height/2 - 110.0))
    constraintSet.append(fab.heightAnchor.constraintEqualToConstant(60.0))
    constraintSet.append(fab.widthAnchor.constraintEqualToConstant(60.0))
    self.navigationController?.view.addConstraints(constraintSet)

    fab.layer.zPosition = 3.0
    fab.setImage(UIImage(named: "fab"), forState: .Normal)

这是fab image:如果有人想尝试

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用keyWindow并将按钮添加为子视图。

 var window :UIWindow = UIApplication.sharedApplication().keyWindow
 window.addSubview(yourButton)

答案 1 :(得分:1)

为什么不创建基本视图类UIViewController的子类)并在该视图上添加浮动按钮。将其余视图创建为此基本视图的子类。一个优点是你可以控制隐藏浮动按钮,而不是从窗口中删除它并再次添加它。

修改  enter image description here