我是页面控制的初学者,所以我不确定标题是否符合我的要求,所以我不确定100%。我想制作一个UIPageControl,当用户在屏幕上滑动时, View 将切换到另一个 View ,并且屏幕底部的UIPageController会自动更新。另外,为了使我的请求更加困惑,我希望屏幕底部的选项卡栏随着 View 的变化而保持不变。
Iconfactory的Ramp Champ就是一个很好的例子:
http://img.slidetoplay.com/screenshots/ramp-champ_5.jpg
屏幕上其余项目移动时,底部的栏保持放置状态。最简单的方法是什么?
编辑:我知道我必须使用UISrollView,我只是不知道如何去实现它...
最佳答案
我相信您正在寻找的实际上是一个UIScrollView,其pagingEnabled设置为YES。您可以将滚动 View 保留为常规UITabBar上方的 View 。您将使用UIPageControl来获取小点。您可以通过实现适当的滚动 View 委托(delegate)方法(例如-scrollViewDidScroll :),在UIScrollView滚动到页面时以编程方式对其进行更新。
假设您有两个ivars:scrollView和pageControl。当您知道滚动 View 将有多少页时,可以设置scrollView的contentSize。它应该是scrollView范围的倍数。例如,如果页面数是静态的,则可以在-viewDidLoad ...中对其进行硬编码。
- (void)viewDidLoad {
// Any other code.
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width * 3, scrollView.bounds.size.height); // 3 pages wide.
scrollView.delegate = self;
}
然后,更新您的小点...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat pageWidth = scrollView.bounds.size.width;
NSInteger pageNumber = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = pageNumber;
}