【问题标题】:Next Button like Navigation's Back Button下一个按钮,如导航的后退按钮
【发布时间】:2017-06-11 11:20:13
【问题描述】:

我想像 Back Button 一样显示 Next Button,但 rightBarButton 不像 back barButton 那样触摸到屏幕末尾。

        let button = UIButton(type: .system)
        button.setImage(UIImage(named: "ic_next_button"), for: .normal) // 22x22 1x, 44x44 2x, 66x66 3x
        button.setTitle("Next", for: .normal)
        button.sizeToFit()
        button.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
        button.titleLabel?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
        button.imageView?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)

【问题讨论】:

  • “但是 rightBarButton 不像后面的 barButton 那样触摸到屏幕的末端”是什么意思?
  • @RashwanL 检查后退按钮的箭头和前导空格。我希望下一个按钮看起来相似。
  • @RashwanL,你明白我的意思吗?
  • 如果您想要实现的是对称外观,您也可以使用navigationItem.setLeftBarButtonItems 方法设置左键。
  • 不,我只想添加 rightBarButton。

标签: ios swift uinavigationbar uibarbuttonitem


【解决方案1】:

正如前面的答案所指出的,您需要做的就是在您的nextButton 的左侧添加一个负的固定空间,它将被推到右侧。

此代码创建了一个 8 磅的负固定宽度(在您的情况下这似乎足够了,但您可以根据需要随意调整):

let negativeWidthButtonItem = UIBarButtonItem(barButtonSystemItem: .fixedSpace, 
                                              target: nil, 
                                              action: nil)
negativeWidthButtonItem.width = -8

创建此按钮后,将其添加到 rightBarButtonItems 数组中:

self.navigationItem.rightBarButtonItems = [negativeWidthButtonItem, nextButton]

StackOverflow 上的其他一些答案也参考了相同的解决方案:

【讨论】:

    【解决方案2】:

    创建另一个UIBarButtonItem,类型为.fixedSpace,宽度为负值。然后将两个按钮添加为右栏按钮项。

          let button = UIButton(type: .system)
          button.setImage(UIImage(named: "right"), for: .normal) // 22x22 1x, 44x44 2x, 66x66 3x
          button.setTitle("Next", for: .normal)
          button.sizeToFit()
          button.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
          button.titleLabel?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
          button.imageView?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
          let nextBtn = UIBarButtonItem(customView: button)
          let spaceBtn = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
          spaceBtn.width = -8// Change this value as per your need
          self.navigationItem.rightBarButtonItems = [spaceBtn, nextBtn];
    

    【讨论】:

    • 虽然代码可能会回答问题,但解释一下代码也会很好
    【解决方案3】:

    添加UIBarButtonSystemItem.fixedSpace 将占用BarButtonItem 之前的额外空间。

        let button = UIButton(type: .system)
        button.setImage(UIImage(named: "ic_next_button"), for: .normal) // 22x22 1x, 44x44 2x, 66x66 3x
        button.setTitle("Next", for: .normal)
        button.sizeToFit()
        button.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
        button.titleLabel?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
        button.imageView?.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
    
        let rightBarButton = UIBarButtonItem()
        rightBarButton.customView = button
    
        let negativeSpacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil)
        negativeSpacer.width = -25;
    
        self.navigationItem.setRightBarButtonItems([negativeSpacer, rightBarButton ], animated: false)
    

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多