9

JSQMessagesControllerの「送信」ボタンを単なる文字列から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 に答える