iOS панель инструментов barbuttonitem spacer - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь добавить две панели кнопок на панель инструментов в iOS [Отмена] и [Сохранить] справа и слева соответственно.

Я использовал третью кнопку панели [Spacer] и установил ее на [.f Flexiblewidth] В противном случае при добавлении его появляется только левая кнопка [Отмена] и [Пробел] & и [Сохранить], которые должны исчезнуть в следующий раз?

снимок экрана находится в ссылке: https://ibb.co/cZsaVV

let pickerView = UIPickerView()

override func viewDidLoad() {


pickerView.addSubview(self.setToolBar())
}

func setToolBar() -> UIToolbar {
      let toolBar =  UIToolbar()
        toolBar.isTranslucent  = true
        toolBar.backgroundColor = UIColor.clear
        let barButtonAttr = [NSAttributedString.Key.font : UIFont.systemFont(ofSize: 15),
                             NSAttributedString.Key.foregroundColor : UIColor.black]
        // [Save] BarButtonItem
        let saveBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.save, target: self, action: nil)
        saveBarButtonItem.setTitleTextAttributes(barButtonAttr, for: .normal)
        // [Cancel] BarButtonItem
        let cancelBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.cancel, target: self, action: nil)
        cancelBarButtonItem.setTitleTextAttributes(barButtonAttr, for: .normal)

        let spacerBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace ,
                                                  target: self, action: nil)
        spacerBarButtonItem.setTitleTextAttributes(barButtonAttr, for: .normal)
        // add BarButtonItems to toolBar
        toolBar.items = [cancelBarButtonItem,spacerBarButtonItem,saveBarButtonItem]
        toolBar.sizeToFit()
return toolBar
}

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Наконец-то у меня есть решение.

Я добавляю панель инструментов в PickerView и затем вызываю UIToolBar.SizeToFit (), что необходимо во всех случаях.

проблема была в том, что япозже пришлось изменить размер представления средства выбора, в этом случае размер панели инструментов подпредставления не адаптируется к новой координации размера средства выбора.Поэтому решение просто вызвать снова ToolBar.SizeToFit () после любой модификации родительского представления.вот снимок кода:

// popupView настраивается UIPickerView

popupView.frame = CGRect (x: 0, y: 0, ширина: 100, высота: 100)

// toolBar является объектом UIToolBar пользовательского UIPickerView AddCurrencyPicker

(popupView as! AddCurrencyPicker) .toolBar.sizeToFit ()

0 голосов
/ 23 ноября 2018
func createAccessoryViewWithTarget(_ target: AnyObject, width: CGFloat) -> UIView {

    // Previous button
    let previousButton = UIBarButtonItem(title: "Previous", style: .plain, target: target, action: #selector(self.moveToPreviousTextField))
    previousButton.tintColor = UIColor.white

    //Next button
    let nextButton = UIBarButtonItem(title: "Next", style: .plain, target: target, action: #selector(self.moveToNextTextField))
    nextButton.tintColor = UIColor.white

    // Dismiss/close/done button
    let doneButton = UIBarButtonItem(title: "Done", style: .done, target: target, action: #selector(self.keyboardDoneButtonTapped))
    doneButton.tintColor = UIColor.white

    let keyboardToolbar: UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: width, height: 44))
    keyboardToolbar.barStyle = .black

    let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let fixedSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)

    var itemsArray = [UIBarButtonItem]()
    itemsArray.append(previousButton)
    itemsArray.append(fixedSpace)
    itemsArray.append(nextButton)
    itemsArray.append(flexSpace)
    itemsArray.append(doneButton)
    keyboardToolbar.items = itemsArray
    keyboardToolbar.sizeToFit()

    return keyboardToolbar
}

Этот старый код может быть быстрым3, я думаю.Здесь я добавляю 3 кнопки предыдущая следующая и готовая кнопка.гибкое пространство и фиксированное пространство используются для пробелов между кнопками.Здесь важно отметить, что вы добавляете свои элементы в виде кнопки.В вашем случае используйте свободное место, чтобы расположить 2 кнопки справа и слева в порядке левой кнопки, гибкого пространства, правой кнопки.

...