我设置了 UIVCollectionView 的 contentSize ,希望它能够向上滚动,但它仍然没有增加滚动范围
I set contentSize of UIVCollectionView , want it to be able to scroll up, but it still did not increase scroll range
当键盘出现时,我添加了UIVCollectionView的contentSize,想让它可以向上滚动,但是不行,他还是没有增加滚动范围。
我设置了 contentSize self.collectionView.contentSize = CGSizeMake(0, self.view.frame.size.height + deltaY)
。我 运行 模拟器 5s Xcode7.1 上的应用程序。内容大小为 (0.0, 832.0)。为什么UIcollectionView无法向上滚动
这是方法 keyboardWillShow:
func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
let keyboardBounds = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
let duration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
let keyboardBoundsRect = self.view.convertRect(keyboardBounds, toView: nil)
let deltaY = keyboardBoundsRect.size.height + finishViewHeight
print(self.collectionContentSize)
//here I set contentSize
self.collectionView.contentSize = CGSizeMake(0, self.view.frame.size.height + deltaY)
print(self.collectionView.contentSize)
let animations: (()->Void) = {
self.finishView!.transform = CGAffineTransformMakeTranslation(0, -deltaY)
}
if duration > 0 {
let options = UIViewAnimationOptions(rawValue: UInt((userInfo[UIKeyboardAnimationCurveUserInfoKey] as! NSNumber).integerValue << 16))
UIView.animateWithDuration(duration, delay: 0, options:options, animations: animations, completion: nil)
} else {
animations()
}
}
}
在这种情况下,您需要设置 UICollectionView
的内容插入以提供 space 用于滚动
- (void)registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
- (void)keyboardWasShown:(NSNotification *)aNotification {
NSDictionary *info = aNotification.userInfo;
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
self.collectionView.contentInset = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);;
}
- (void)keyboardWillBeHidden:(NSNotification *)aNotification {
self.collectionView.contentInset = UIEdgeInsetsZero;
}
当键盘出现时,我添加了UIVCollectionView的contentSize,想让它可以向上滚动,但是不行,他还是没有增加滚动范围。
我设置了 contentSize self.collectionView.contentSize = CGSizeMake(0, self.view.frame.size.height + deltaY)
。我 运行 模拟器 5s Xcode7.1 上的应用程序。内容大小为 (0.0, 832.0)。为什么UIcollectionView无法向上滚动
这是方法 keyboardWillShow:
func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
let keyboardBounds = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
let duration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
let keyboardBoundsRect = self.view.convertRect(keyboardBounds, toView: nil)
let deltaY = keyboardBoundsRect.size.height + finishViewHeight
print(self.collectionContentSize)
//here I set contentSize
self.collectionView.contentSize = CGSizeMake(0, self.view.frame.size.height + deltaY)
print(self.collectionView.contentSize)
let animations: (()->Void) = {
self.finishView!.transform = CGAffineTransformMakeTranslation(0, -deltaY)
}
if duration > 0 {
let options = UIViewAnimationOptions(rawValue: UInt((userInfo[UIKeyboardAnimationCurveUserInfoKey] as! NSNumber).integerValue << 16))
UIView.animateWithDuration(duration, delay: 0, options:options, animations: animations, completion: nil)
} else {
animations()
}
}
}
在这种情况下,您需要设置 UICollectionView
的内容插入以提供 space 用于滚动
- (void)registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
- (void)keyboardWasShown:(NSNotification *)aNotification {
NSDictionary *info = aNotification.userInfo;
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
self.collectionView.contentInset = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);;
}
- (void)keyboardWillBeHidden:(NSNotification *)aNotification {
self.collectionView.contentInset = UIEdgeInsetsZero;
}