【问题标题】:Navigate to specific page in scrollView with paging, programmatically以编程方式使用分页导航到滚动视图中的特定页面
【发布时间】:2011-05-10 06:12:39
【问题描述】:

如何以编程方式导航到特定页面。基本上我有一个带有滚动视图的应用程序,其中填充了一堆子视图(在本例中为 tableViews)。单击子视图时,它会放大,用户可以编辑和导航表格,但是当我缩小时,我会重新加载整个视图,以防用户进行任何更改。当然,重新加载视图会将用户返回到第 0 页。我尝试设置 pageControl.currentpage 属性,但所做的只是更改 pageControl 的点。这是否意味着有问题或我还需要做其他事情??

控制页面滚动的就是这个方法:

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
self.pageControl.currentPage = page;

NSString *listName = [self.wishLists objectAtIndex:self.pageControl.currentPage];
self.labelListName.text = listName;
}

【问题讨论】:

标签: iphone uiscrollview uipagecontrol


【解决方案1】:

您必须手动计算相应的滚动位置。滚动到第 i 页:

[scrollView setContentOffset:CGPointMake(scrollView.frame.size.width*i, 0.0f) animated:YES];

【讨论】:

  • 由于页面宽度等于滚动视图边界宽度,它基本上是这样的:[scrollView setContentOffset:scrollView.bounds.size.width * i animated:YES];
  • 显然您需要为偏移值提供一个 CGPoint,因此创建一个 CGPoint 并将其作为偏移量就像魅力一样!非常感谢大家!
  • 你说得对,小故障。抱歉,我错过了关于 CGPoint 的事情。代码已更正。
【解决方案2】:

Ole Begemann 上述答案的 Swift 5 版本

scrollView.setContentOffset( CGPoint(x: scrollView.frame.size.width * i, y: 0.0), animated: true)

【讨论】:

    【解决方案3】:

    Swift 5你可以轻松使用scrollView.scrollRectToVisible

    如果实现了Horizontal 分页滚动视图,其大小为默认view width of the device 并希望导航到编号n 页面:

    scrollView.scrollRectToVisible(CGRect(x: self.view.center.x * n, y: self.view.center.y, width: self.view.frame.width, height: self.view.frame.height) ,animated: true)
    

    您只需要根据您的滚动视图配置定义 CGRect() 位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 2018-08-29
      • 1970-01-01
      • 2017-07-17
      相关资源
      最近更新 更多