2017-04-25 55 views
0

我正在使用下面的代碼來顯示一個用戶點擊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

我設法通過使用下面的代碼來解決這個對齊問題:

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