gpt4 book ai didi

ios - UIButton 使 UIScrollView 弹跳

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:41 26 4
gpt4 key购买 nike

我有一个带分页的水平 UIScrollView。有两个按钮。一个向左滚动 scrollView,另一个向右滚动。

左边的代码:

- (IBAction)goLeftAction:(id)sender
{
CGFloat pageWidth = _theScrollView.frame.size.width;
int page = floor((_theScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
if(page>0){
page -=1;
[_theScrollView scrollRectToVisible:CGRectMake(_theScrollView.frame.size.width*page, 0, self.view.frame.size.width, self.view.frame.size.height) animated:YES];
}
}

当我们在第一页(page=0)并向左推时,我想让按钮使 scrollView 显示弹跳效果。

请帮助找到实现这一目标的方法。

编辑:

如果有人需要,这里是代码。

首先我添加到 goLeftAction:

[_theScrollView setPagingEnabled:NO];
[_theScrollView setScrollEnabled:NO];
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(bounceScrollView) userInfo:nil repeats:NO];

接下来是:

- (void)bounceScrollView
{
[self.theScrollView scrollRectToVisible:CGRectMake(100, 0, self.view.frame.size.width, self.view.frame.size.height) animated:YES];
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(unbounceScrollView) userInfo:nil repeats:NO];
}
- (void)unbounceScrollView
{
[self.theScrollView scrollRectToVisible:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) animated:YES];
[_theScrollView setPagingEnabled:YES];
[_theScrollView setScrollEnabled:YES];
}

最佳答案

这是一个有趣的问题。你见过this similar question吗所以?它垂直弹跳,而不是水平弹跳,但概念是一样的。

  1. 设置 pagingEnabled 和 scrollEnabled 为 NO
  2. 使用 scrollRectToVisible:animated: 动画弹跳
  3. 将 pagingEnabled 和 scrollEnabled 设置回 YES

This discussion还有一些可能有用的示例代码。

编辑:
我尝试了上面您编辑的代码,并设法让弹跳朝着正确的方向工作。我不得不使用 setContentOffset:animated: 而不是 scrollRectToVisible:animated:,并且我还将计时器间隔增加到 0.3(0.1 的时间不足以让弹跳到达在调用 unbounceScrollView 之前的完整距离)。

我在 goLeftAction: 中的代码:

[self.scrollView setPagingEnabled:NO];
[self.scrollView setScrollEnabled:NO];
[NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(bounceScrollView) userInfo:nil repeats:NO];

弹跳方法:

- (void)bounceScrollView
{
[self.scrollView setContentOffset:CGPointMake(-100, 0) animated:YES];
[NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(unbounceScrollView) userInfo:nil repeats:NO];
}
- (void)unbounceScrollView
{
[self.scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
[self.scrollView setPagingEnabled:YES];
[self.scrollView setScrollEnabled:YES];
}

关于ios - UIButton 使 UIScrollView 弹跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18163745/

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