iOS:以编程方式向工具栏添加按钮

时间:2018-04-08 20:24:57

标签: swift uiview uiviewcontroller autolayout uitoolbar

我需要创建工具栏并以编程方式添加按钮。我会为不同的屏幕设置不同的按钮组。

这很容易。

另外,我需要将这些按钮居中。它们之间应该有相同的空间。

而且我还需要所有这些按钮仅在它们之间分隔屏幕宽度。就像,我有5个按钮,总屏幕宽度是300,所以每个按钮的宽度为60.我不知道该怎么做,我尝试了dirrenrt的东西,但他们没有居中或没有这样的宽度。任何想法如何做到这一点?

class OptionsView: UIView {
@IBOutlet weak var toolbar: UIToolbar!

var width: CGFloat {
    return 0//UIScreen.main.bounds.width/5 //was trying to calculate width , but it did not work
}

override func awakeFromNib() {
    super.awakeFromNib()
    toolbar.isTranslucent = true
    toolbar.setBackgroundImage(UIImage(), forToolbarPosition: UIBarPosition.any, barMetrics: UIBarMetrics.default)
    toolbar.setShadowImage(UIImage(), forToolbarPosition: UIBarPosition.any)
    toolbar.barTintColor = .white

    backgroundColor = .clear
}

func addAirPlay(target: Any?, action: Selector) {
    let normalImage = UIImage(named: "player-airplay")
    let button = UIButton(type: .custom)
    button.frame = CGRect(x: 0, y: 0, width: width, height: 100)
    button.setImage(normalImage, for: UIControlState())
    button.addTarget(target, action: action, for: .touchUpInside)

    let item = UIBarButtonItem(customView: button)
    //item.width = width //was trying to play with that
    var items = toolbar.items
    items?.append(item)
    toolbar.items = items
    toolbar.reload()
}

func addOrientation(target: Any?, action: Selector) {
    let button = UIButton(type: .custom)
    button.tag = orientationTag
    button.frame = CGRect(x: 0, y: 0, width: width, height: 100)
    button.addTarget(target, action: action, for: .touchUpInside)

    let item = UIBarButtonItem(customView: button)
    //item.width = width
    var items = toolbar.items
    items?.append(item)
    toolbar.items = items
    toolbar.reload()

    reloadOrientation()
}

func addFlexibleSpace() {
    let item = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    var items = toolbar.items
    items?.append(item)
    toolbar.items = items
    toolbar.reload()
}

创建:

    optionsView = OptionsView.loadFromNib()
    playerView.addSubview(optionsView)
    optionsView.snp.makeConstraints { (make) in
        make.leading.trailing.top.bottom.equalTo(self.optionsPlaceholderView)
    }
  // optionsView.addFlexibleSpace() //was trying that as well
    optionsView.addAirPlay(target: self, action: #selector(airplayButtonAction(_:)))
    optionsView.addFlexibleSpace()
    optionsView.addOrientation(target: self, action: #selector(orientationButtonAction(_:)))
    optionsView.addFlexibleSpace()
    optionsView.addFave(target: self, action: #selector(faveButtonAction(_:)))
    optionsView.addFlexibleSpace()
    optionsView.addExtra(target: self, action: #selector(showExtraButtonAction(_:)))
    optionsView.addFlexibleSpace()
    optionsView.addScenes(target: self, action: #selector(sceneButtonAction(_:)))
  //        optionsView.addFlexibleSpace()

0 个答案:

没有答案