9

如何将 JSQMessagesController“发送”按钮从 String 更改为 UIImageView?

现在看起来像:

在此处输入图像描述

我可以将此“发送”更改为图像吗?

我试过了:

let sendButton = JSQMessagesInputToolbar()
sendButton.contentView?.rightBarButtonItem?.imageView?.image = UIImage(named: "send.png")

但我认为这是错误的,因为它不起作用 =/

4

3 回答 3

10

创建一个 UIButton 并将其设置为输入工具栏的右栏按钮项。

let rightButton = UIButton(frame: CGRectZero)
let sendImage = UIImage(named: "send_button.png")
rightButton.setImage(sendImage, forState: UIControlState.Normal)

self.inputToolbar.contentView.rightBarButtonItemWidth = CGFloat(34.0)

self.inputToolbar.contentView.rightBarButtonItem = rightButton

希望有帮助!

于 2015-10-12T09:12:42.950 回答
3

无需创建另一个按钮,您可以重复使用现有的按钮:

  override func viewDidLoad() {
    super.viewDidLoad()

    let imageWidth: CGFloat = 21
    let image = UIImage(named: "image-name")

    inputToolbar.contentView.rightBarButtonItemWidth = imageWidth
    inputToolbar.contentView.rightBarButtonItem.setImage(image, for: .normal)

  }

但是如果你想对按钮有更多的控制,你应该创建一个自定义的:

override func viewDidLoad() {
    super.viewDidLoad()

    let buttonWidth = CGFloat(40)
    let buttonHeight = inputToolbar.contentView.leftBarButtonContainerView.frame.size.height

    let customButton = UIButton(frame: CGRect(x: 0, y: 0, width: buttonWidth, height: buttonHeight))
    customButton.backgroundColor = .red
    customButton.setImage(UIImage(named: "send-message"), for: .normal)
    customButton.imageView?.contentMode = .scaleAspectFit

    inputToolbar.contentView.rightBarButtonItemWidth = buttonWidth
    inputToolbar.contentView.rightBarButtonItem = customButton 
}
于 2016-12-19T15:13:23.440 回答
1

可以直接使用 rightBarButtonItem 设置。您的代码不起作用,因为您没有设置按钮的状态。

 self.inputToolbar?.contentView.rightBarButtonItem?.setImage(UIImage(named: "send"), for: .normal)
于 2016-12-17T19:28:10.677 回答