以编程方式将UILabel添加到UIToolbar

4

我正在尝试使用Swift 3.0语言编写程序,在代码中创建一个UIToolbar,并添加一个UILabel到其中。该工具栏旨在配合用户编辑UITextField时自动调用的键盘。以下是我的函数,用于创建这个工具栏(在viewDidLoad中调用),它包括一个“完成”按钮、一个“取消”按钮和两个之间的空格:

func createToolbar {
let toolBar = UIToolbar()
toolBar.sizetofit()
toolBar.isUserInteractionEnabled = true
textField.inputAccessoryView = toolBar 
let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(EntryViewController.doneButtonTapped))
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(EntryViewController.cancelButtonTapped))
let space = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
toolBar.setItems([doneButton, space, cancelButton], animated: false)

这是一个已经加载的工具栏图片: 工具栏图片 为了创建标签,我正在使用以下代码:
let label = UILabel()
label.text = "Example"
let labelAsBarButtonItem = UIBarButtonItem(customView: label)
toolBar.setItems([doneButton, space, cancelButton, labelAsBarButtonItem], animated: false)
}

然而,这段代码并不起作用,并且无法在创建的工具栏上加载标签。

根据您发布的代码片段,看起来在createToolbar实例化后,您并没有对工具栏进行任何操作。您可能需要将工具栏添加到视图中。 - Adrian
现有的工具栏是什么意思?如果您只想使用它,可以从 self.navigationController.toolbar 获取它。 - koen
你好,我编辑了帖子,所谓的现有工具栏是指我创建的工具栏。 - marco
工具栏应该放在屏幕的哪个位置? - koen
工具栏应该位于键盘上方,通过单击uitextfield触发。 - marco
2个回答

3
以下代码对我有效,尝试将工具栏高度设置为44并将其添加到视图中。
func createToolbar() {
  let toolBar = UIToolbar(frame: CGRect(x: 0, y: 64, width: view.bounds.width, height: 44))
  toolBar.isUserInteractionEnabled = true
  let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: nil)
  let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: nil)
  let space = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
  let label = UILabel(frame: .zero)
  label.text = "Example"
  label.textAlignment = .center
  label.textColor = view.tintColor
  let customBarButton = UIBarButtonItem(customView: label)
  let rightSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
  toolBar.setItems([doneButton, space, cancelButton, rightSpace, customBarButton], animated: false)
        view.addSubview(toolBar)
} 

你好,感谢您的回复。不幸的是,代码没有起作用,并且没有添加标签。我编辑了帖子以提供有关问题的更多细节,您有什么建议吗? - marco

0

修改后的答案

问题出在标签上。 实例化后,您必须使用CGRect绘制它。因此, 例如添加:label.frame = CGRect(x: 20, y:20, width: 100, height: 50)

结果:

let label = UILabel()
label.text = "Example"
label.frame = CGRect(x: 20, y:20, width: 100, height: 50)

你好,感谢您的回复。不幸的是,代码没有起作用:/。我编辑了帖子以提供关于问题的更多详细信息,您有任何建议吗? - marco
你好,谢谢。这段代码很好用。有没有办法在UIToolbar上居中标签?我使用了我创建的可伸缩空间按钮,但它仍然没有被居中。也许通过调整x值或y值可能会起作用? - marco
没关系,我已经找到答案了。我只是使用了 sizeToFit() 属性。 - marco
很高兴能够帮助你 :) - TOUZENE Mohamed Wassim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接