垂直对齐工具栏内的条形按钮

时间:2017-04-25 13:18:05

标签: swift xcode swift3

我正在使用以下代码在用户点击UITextfield时显示日期选择器。这工作正常,但问题是左右按钮没有正确垂直居中对齐。有没有办法实现这个目标?我尝试在按钮上使用UIOffset但没有结果。

private func setupDatePicker() {
    let toolBar = UIToolbar(frame: CGRect(x: 0, y: self.view.frame.size.height/6,
                                          width:  self.view.frame.size.width, height: 40.0))
    toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0)
    toolBar.barStyle = UIBarStyle.blackTranslucent
    toolBar.tintColor = UIColor.white
    toolBar.backgroundColor = UIColor.black
    let cancelBtn = UIBarButtonItem(title: "cancel".localized(lang: Localize.currentLanguage()), style: UIBarButtonItemStyle.plain, target: self,
                                    action: #selector(tapppedToolBarBtn))


    let okBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self,
                                   action: #selector(donePressed))
    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace,
                                    target: self, action: nil)
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width / 3,
                                      height: self.view.frame.size.height))
    label.font = UIFont(name: "Roboto-Regular", size: 12)
    label.backgroundColor = UIColor.clear
    label.textColor = UIColor.white
    label.text = "selectdate".localized(lang: Localize.currentLanguage())
    label.textAlignment = NSTextAlignment.center
    let textBtn = UIBarButtonItem(customView: label)
    toolBar.setItems([cancelBtn, flexSpace, textBtn, flexSpace, okBarBtn], animated: true)
    startDateTxf.inputAccessoryView = toolBar
}

结果: Result of the datepicker toolbar

1 个答案:

答案 0 :(得分:1)

我设法通过使用以下代码修复此对齐问题:

let toolBar = UIToolbar(frame: CGRect(x: 0, y: self.view.frame.size.height/6,
                                          width:  self.view.frame.size.width, height: 40.0))
    toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0)
    toolBar.barStyle = UIBarStyle.blackTranslucent
    toolBar.tintColor = UIColor.white
    toolBar.backgroundColor = UIColor.black
    let cancelBtn1 = UIButton(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width / 4,
                                            height: self.view.frame.size.height))
    cancelBtn1.setTitle("cancel".localized(lang: Localize.currentLanguage()), for: .normal)
    cancelBtn1.addTarget(self, action: #selector(tapppedToolBarBtn), for: .touchUpInside)
    let cancelBtn = UIBarButtonItem(customView: cancelBtn1)

    let okBarBtn1 = UIButton(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width / 4,
                                            height: self.view.frame.size.height))
    okBarBtn1.setTitle("Done", for: .normal)
    okBarBtn1.addTarget(self, action: #selector(donePressed(sender:)), for: .touchUpInside)
    let okBarBtn = UIBarButtonItem(customView: okBarBtn1)
    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace,
                                    target: self, action: nil)
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width / 3,
                                      height: self.view.frame.size.height))
    label.font = UIFont(name: "Roboto-Regular", size: 12)
    label.backgroundColor = UIColor.clear
    label.textColor = UIColor.white
    label.text = "selectdate".localized(lang: Localize.currentLanguage())
    label.textAlignment = NSTextAlignment.center
    let textBtn = UIBarButtonItem(customView: label)
    toolBar.setItems([cancelBtn, flexSpace, textBtn, flexSpace, okBarBtn], animated: true)
    startDateTxf.inputAccessoryView = toolBar

结果是:result in simulator