iOS UIScrollview UICollectionVie
2020-04-24 本文已影响0人
老猫_2017
-
ContentInsetAdjustmentBehavior
会影响 contentInset 的变化,设置成 never 完全,手动控制,否则,某些动画,会变化的比较奇怪 -
UICollectionView 直接执行 reloaddata 之后, 不能及时的更新 contenInset , 解决方法有2个,一个执行
[self.collectionView performBatchUpdates:^()
{
} completion:^(BOOL finished) {
// TODO: Whatever it is you want to do now that you know the contentSize.
}];
方法2
[self.collectionView.collectionViewLayout invalidateLayout];
[self.collectionView.collectionViewLayout prepareLayout];
相关的keybarod 动画
if let inputV = Bundle.main.loadNibNamed("TestView", owner: self, options: nil)?.first as? UIView {
view.addSubview(inputV)
inputV.center = view.center
if let textV = inputV.viewWithTag(2) as? UITextView {
textV.inputAccessoryView = inputV
textV.delegate = self
textV.returnKeyType = .send
self.textV = textV
self.containerV = inputV
self.containerV?.backgroundColor = .red
}
}
NotificationCenter.default.rx.notification(UIResponder.keyboardWillShowNotification).subscribe(onNext: {
[weak self] (notification) in
let rect = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect
self!.keyboardFrame = rect
print(rect)
}).disposed(by: disposeBag)
NotificationCenter.default.rx.notification(UIResponder.keyboardWillHideNotification).subscribe(onNext: {
[weak self] (notification) in
let rect = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect
// self!.keyboardFrame = rect
print(rect)
}).disposed(by: disposeBag)
let tap = UITapGestureRecognizer()
view.addGestureRecognizer(tap)
tap.rx.event.bind { [weak self] (tap) in
guard let self = self else { return }
// self.loginVm.userName.onNext("hhh")
// self.view.endEditing(true)
self.textV?.resignFirstResponder()
let r1 = self.view .convert(self.keyboardFrame!, to: nil)
self.view.addSubview(self.containerV!)
self.containerV!.mgl_top = r1.origin.y
self.containerV!.translatesAutoresizingMaskIntoConstraints = true
UIView.animate(withDuration: 0.24, delay: 0, options: UIView.AnimationOptions(rawValue: 7 << 16), animations: {
self.containerV!.mgl_bottom = self.view.mgl_bottom
}) { (finished) in
}
}
scrollview 中的 contentInsert, contentSize, contentOffset 之间的关系
contentoffset-contentinset