如何在我的应用程序中使用 UIPageControl?
Posted
技术标签:
【中文标题】如何在我的应用程序中使用 UIPageControl?【英文标题】:How do I use UIPageControl in my app? 【发布时间】:2013-10-19 02:25:03 【问题描述】:我正在制作一个需要一些图像的应用程序,可以使用 UIPageControl 滚动浏览。可悲的是,我也不知道如何使用 UIPageControl 或 UIScrollView。非常感谢 Apple 提供的 YouTube 视频或 Xcode 文档链接!
提前致谢!!
【问题讨论】:
developer.apple.com/library/ios/documentation/uikit/reference/… 【参考方案1】:这是一个可以帮助你的代码
CGSize size = [[UIScreen mainScreen] bounds].size;
CGFloat frameX = size.width;
CGFloat frameY = size.height-30; //padding for UIpageControl
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(offsetX, offsetY, frameX, frameY)];
scrollView.pagingEnabled = YES;
scrollView.backgroundColor = [UIColor clearColor];
scrollView.contentSize = CGSizeMake(frameX, frameY);
[self.view addSubview: scrollView];
// 假设您在 imageArray 中有图像数组
for(int i = 0; i < [imageArray]; i++)
UIImage *image = [UIImage imageNamed:[imageArray objectAtIndex:i]];
imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(frameX * i, 0.0, frameX, frameY);
[scrollView addSubview:imageView];
scrollView.contentSize = CGSizeMake(frameX*[imageArray count], frameY);
请根据使用范围声明变量。我已经在本地声明了所有变量,这样可能不会混淆,并且还在视图控制器的底部添加 UIPageControl
实现UIScrollView对当前Page指示器的委托方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
float width = scrollView.frame.size.width;
float xPos = scrollView.contentOffset.x+10;
//Calculate the page we are on based on x coordinate position and width of scroll view
pageControl.currentPage = (int)xPos/width;
pageControl 是在视图控制器底部添加的 UIPageControl
【讨论】:
@CppiLove :请不要说我没有编译代码。会有语法错误,但我的目的是向您解释如何将 UIScrollView 与 UIPagecontrol 一起使用【参考方案2】:滚动视图:
ScrollView 用于显示更多数量的视图/对象。我们可以通过水平或垂直滚动来显示这些视图。 您可以处理缩放、平移、滚动等操作。
您可以浏览其中的一些教程 Are there any good UIScrollView Tutorials on the net?
https://developer.apple.com/library/ios/documentation/windowsviews/conceptual/UIScrollView_pg/CreatingBasicScrollViews/CreatingBasicScrollViews.html
滚动视图的示例代码:
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,self.view.frame.size.width, self.view.frame.size.height)];
//This will create a scrollview of device screen frame
您可以通过以下方式启用滚动
scroll.scrollEnabled = YES;
向滚动视图添加 3 个视图的示例
NSInteger numberOfViews = 3;
for (int i = 0; i < numberOfViews; i++)
CGFloat xOrigin = i * self.view.frame.size.width;
UIView *awesomeView = [[UIView alloc] initWithFrame:CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)];
awesomeView.backgroundColor = [UIColor colorWithRed:0.5/i green:0.5 blue:0.5 alpha:1];
[scroll addSubview:awesomeView];
[awesomeView release];
// 3 views added horizontally to the scrollview by using xOrigin.
其中最重要的部分是了解 xOrigin。这会将每个 UIView 准确地放置在前一个 UIView 停止的位置,换句话说,每个 UIView 都将从前一个 UIView 的末尾开始。 现在我们得到了横向添加了 3 个视图的滚动视图。
设置UIScrollView contentSize
scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
contentSize 就是三个 UIView 的宽度之和,如果每个 UIView 的宽度是 320,而我们有三个 UIView,那么你的 contentSize 宽度就是 920。
[self.view addSubview:scroll];
[scroll release];
//Add scrollview to viewcontroller
页面控制: Page 控件向用户呈现一组代表页面的水平点。当前页面显示为一个白点。用户可以从当前页面转到下一页或上一页。
要启用分页,您需要添加
scroll.pagingEnabled = YES;
pageControl = [[UIPageControl alloc] init]; //SET a property of UIPageControl
pageControl.frame = CGRectMake(100,self.view.frame.size.height-100,self.view.frame.size.width-200,100);
pageControl.numberOfPages = 3; //as we added 3 diff views
pageControl.currentPage = 0;
添加scrollview的委托方法,实现滚动时的页面控制点
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x – pageWidth / 2 ) / pageWidth) + 1; //this provide you the page number
pageControl.currentPage = page;// this displays the white dot as current page
现在您可以看到滚动视图的页面控件。希望你能理解。也参考这个 https://developer.apple.com/library/ios/documentation/uikit/reference/UIPageControl_Class/Reference/Reference.html
【讨论】:
@Cintu 的答案是正确的,但是pageControl
会给出页面设置的不良动画,最好在scrollViewDidEndDecelerating
中设置currentPage
【参考方案3】:
这是 Ray Wenderlich 团队关于如何设置分页滚动视图的非常好的教程:How To Use UIScrollView to Scroll and Zoom Content
Apple 的文档也有一个如何实现分页滚动视图的示例:PhotoScroller
My answer 到 this previous question 也可能对您有用。
【讨论】:
以上是关于如何在我的应用程序中使用 UIPageControl?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的表单处理程序中使用 PHP 来查看输入表单的图像文件是不是已经在我的文件系统中
如何知道我的程序是不是完全在我的 docker 中使用 compose 启动