実装するもの:TextViewを動的に可変するやつ
↑これをRxswiftで実装していきます。
(ネットにあまり情報がなかったので、初学者のために掲載します.)
早速はじめましょう。
①配置とオートレイアウト
以下のようになっています。
TextViewを可変にするにあたって重要な点は、Heghtを変動させることです。
今回の仕組みはこれが全てです。
しっかりオートレイアウトをしましょう。
②コーディング
全体は以下のようになっています。
HogeViewController.swift
class HogeViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
@IBOutlet weak var textViewHeightConstraint: NSLayoutConstraint!
private let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
private func setup(){
textView.rx.text
.asDriver()
.drive(onNext: { [ weak self ] _ in
let size:CGSize = self!.textView.sizeThatFits(self!.textView.frame.size)
self!.textView.frame.size.height = size.height
self!.textViewHeightConstraint.constant = size.height
self!.view.setNeedsLayout()
}, onCompleted: {
print("完了")
}) {
self.disposeBag
}
}
}
一文ずつ見てもらえれば、だいたいわかるので特に解説はしないのですが、
一つだけ注意点として
@IBOutlet weak var textViewHeightConstraint: NSLayoutConstraint!
これは、TextViewのオートレイアウトで固定したHeghtだってことです。
終わりに
RxSwiftでUIを制御するのはとても便利なのですが、やはり初学者にとっては難しい場面もあります。
API周辺を交えたものをプロジェクトに組み込めるところまで、頑張りましょう、、、、💦
