在页面控制方面,我是初学者,这就是为什么我不确定100%我的标题是否与我想要的一致。我想创建一个UIPageControl,当用户在屏幕上滑动时,视图将切换到另一个视图,屏幕底部的UIPageController将自动更新。另外,为了让我的请求更加令人困惑,我希望屏幕底部的标签栏会随着视图的变化而保持不变。
这是一个很好的例子是The Iconfactory的Ramp Champ: http://img.slidetoplay.com/screenshots/ramp-champ_5.jpg
底部的栏保持不动,而屏幕上的其他项目移动。最简单的方法是什么?
编辑:我知道我必须使用UISrollView,我只是不知道如何实现它......答案 0 :(得分:22)
我相信你所寻找的实际上是UIScrollView,其中pagingEnabled设置为YES。您可以将滚动视图保留为常规UITabBar上方的视图。你将使用UIPageControl获取小点。当UIScrollView通过实现滚动视图的适当委托方法滚动到页面时,您可以以编程方式更新它,可能是-scrollViewDidScroll:。
假设您有两个ivars:scrollView和pageControl。当您知道滚动视图将包含多少页面时,您可以设置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;
}
答案 1 :(得分:2)
您需要使用UIScrollView
假设您有一个名为scrollView的名为ivar的
int amountOfFrames = 10;
scrollView.pagingEnabled = TRUE;
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * amountOfFrames, scrollView.frame.size.height);
scrollView.delegate = self;
然后,您需要实现所需的委托方法,以便更新页面控件
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
// Switch the indicator when more than 50% of the previous/next page is visible
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;
}
您需要在这些scrollview中放置您想要滚动的任何内容,理想情况下是lazyload,如果您要显示的内容需要大量堆内存,请使用scrollviewDidScroll删除并在所需位置添加内容< / p>