gpt4 book ai didi

ios - UIScrollView - 在弹跳动画开始时设置负的 contentOffset

转载 作者:可可西里 更新时间:2023-11-01 04:43:45 26 4
gpt4 key购买 nike

当我将 UITableView 下拉到负数时,我正在使用 UITableView 对用户的个人资料图片(如在 Spotify 应用程序中)实现缩放/不模糊效果contentOffset.y。这一切都很好......

现在,当用户下拉到小于或等于某个值的 contentOffset.y - 我们称它为 maintainOffsetY = 70.0 - 然后他“放手”在 View 中,我想保持这个 contentOffset 直到用户再次“推” View ,而不是 View 自动弹回 contentOffset = (0,0) 再次。

为了实现这一点,我必须知道触摸何时开始和结束,我可以使用以下委托(delegate)方法来做到这一点:

- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView {
// is like touches begin
if ([scrollView isEqual:_tableView]) {
NSLog(@"touches began");
_touchesEnded = NO;
}
}
- (void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
// is like touches ended
NSLog(@"touches ended");
if ([scrollView isEqual:_tableView]) {
_touchesEnded = YES;
}

然后在

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

我检查 contentOffset.y 是否小于或等于 maintainOffsetY 以及用户是否已经“放手”了表,所以它即将弹回(或已经弹回)到 contentOffset = (0,0)

似乎不可能让它只反弹到maintainOffsetY。有没有人知道解决方法或对如何解决这个问题有想法?

非常感谢任何帮助!

最佳答案

要为 ScrollView 设置负偏移量,您可以使用它。

您需要保存 ScrollView 的初始内容插入。例如,如果您有半透明的导航栏,它可能已经不是 0。

    - (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

contentInsetTopInitial = self.tableView.contentInset.top;
}

然后写这个。

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {

CGPoint contentOffset = scrollView.contentOffset; // need to save contentOffset before changing contentInset
CGFloat contentOffsetY = contentOffset.y + contentInsetTopInitial; // calculate pure offset, without inset

if (contentOffsetY < -maintainOffsetY) {
scrollView.contentInset = UIEdgeInsetsMake(contentInsetTopInitial + maintainOffsetY, 0, maintainOffsetY, 0);
[scrollView setContentOffset:contentOffset animated:NO];
}
}

希望这会有所帮助。

关于ios - UIScrollView - 在弹跳动画开始时设置负的 contentOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com