From ee4c2b501f5a7b1fe0574df5823cbf3591808c30 Mon Sep 17 00:00:00 2001 From: miniOS Date: Mon, 14 Feb 2022 11:56:43 +0900 Subject: [PATCH 1/2] Update swift syntax from Example We can erase backticks in `guard let self = self` from swift 4.2 --- .../Sources/ViewControllers/MessageListViewController.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Example/Sources/ViewControllers/MessageListViewController.swift b/Example/Sources/ViewControllers/MessageListViewController.swift index be904ec..8e6f8a1 100644 --- a/Example/Sources/ViewControllers/MessageListViewController.swift +++ b/Example/Sources/ViewControllers/MessageListViewController.swift @@ -91,7 +91,7 @@ class MessageListViewController: UIViewController { RxKeyboard.instance.visibleHeight .drive(onNext: { [weak self] keyboardVisibleHeight in - guard let `self` = self, self.didSetupViewConstraints else { return } + guard let self = self, self.didSetupViewConstraints else { return } self.messageInputBar.snp.updateConstraints { make in if #available(iOS 11.0, *) { make.bottom.equalTo(self.view.safeAreaLayoutGuide.snp.bottom).offset(-keyboardVisibleHeight) @@ -116,7 +116,7 @@ class MessageListViewController: UIViewController { self.messageInputBar.rx.sendButtonTap .subscribe(onNext: { [weak self] text in - guard let `self` = self else { return } + guard let self = self else { return } let message = Message(user: .me, text: text) self.messages.append(message) let indexPath = IndexPath(item: self.messages.count - 1, section: 0) From 1b1bcc3381780dbeec1237edde866c63a74aa74c Mon Sep 17 00:00:00 2001 From: miniOS Date: Mon, 14 Feb 2022 12:29:15 +0900 Subject: [PATCH 2/2] Update RxSwift 6.0 syntax from Example Apply `withUnretained`, new operator in RxSwift 6.0 --- .../MessageListViewController.swift | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/Example/Sources/ViewControllers/MessageListViewController.swift b/Example/Sources/ViewControllers/MessageListViewController.swift index 8e6f8a1..1919cfc 100644 --- a/Example/Sources/ViewControllers/MessageListViewController.swift +++ b/Example/Sources/ViewControllers/MessageListViewController.swift @@ -90,38 +90,40 @@ class MessageListViewController: UIViewController { } RxKeyboard.instance.visibleHeight - .drive(onNext: { [weak self] keyboardVisibleHeight in - guard let self = self, self.didSetupViewConstraints else { return } - self.messageInputBar.snp.updateConstraints { make in + .withUnretained(self) + .drive(onNext: { (owner, keyboardVisibleHeight) in + guard owner.didSetupViewConstraints else { return } + owner.messageInputBar.snp.updateConstraints { make in if #available(iOS 11.0, *) { - make.bottom.equalTo(self.view.safeAreaLayoutGuide.snp.bottom).offset(-keyboardVisibleHeight) + make.bottom.equalTo(owner.view.safeAreaLayoutGuide.snp.bottom).offset(-keyboardVisibleHeight) } else { - make.bottom.equalTo(self.bottomLayoutGuide.snp.top).offset(-keyboardVisibleHeight) + make.bottom.equalTo(owner.bottomLayoutGuide.snp.top).offset(-keyboardVisibleHeight) } } - self.view.setNeedsLayout() + owner.view.setNeedsLayout() UIView.animate(withDuration: 0) { - self.collectionView.contentInset.bottom = keyboardVisibleHeight + self.messageInputBar.height - self.collectionView.scrollIndicatorInsets.bottom = self.collectionView.contentInset.bottom - self.view.layoutIfNeeded() + owner.collectionView.contentInset.bottom = keyboardVisibleHeight + owner.messageInputBar.height + owner.collectionView.scrollIndicatorInsets.bottom = owner.collectionView.contentInset.bottom + owner.view.layoutIfNeeded() } }) .disposed(by: self.disposeBag) RxKeyboard.instance.willShowVisibleHeight - .drive(onNext: { keyboardVisibleHeight in - self.collectionView.contentOffset.y += keyboardVisibleHeight + .withUnretained(self) + .drive(onNext: { (owner, keyboardVisibleHeight) in + owner.collectionView.contentOffset.y += keyboardVisibleHeight }) .disposed(by: self.disposeBag) self.messageInputBar.rx.sendButtonTap - .subscribe(onNext: { [weak self] text in - guard let self = self else { return } + .withUnretained(self) + .subscribe(onNext: { (owner, text) in let message = Message(user: .me, text: text) - self.messages.append(message) - let indexPath = IndexPath(item: self.messages.count - 1, section: 0) - self.collectionView.insertItems(at: [indexPath]) - self.collectionView.scrollToItem(at: indexPath, at: [], animated: true) + owner.messages.append(message) + let indexPath = IndexPath(item: owner.messages.count - 1, section: 0) + owner.collectionView.insertItems(at: [indexPath]) + owner.collectionView.scrollToItem(at: indexPath, at: [], animated: true) }) .disposed(by: self.disposeBag) }