如何在我的应用程序中使用 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 启动

如何在我的 iphone 应用程序中显示我的应用程序的内存使用情况

如何在我的应用程序中使用 UIPageControl?

如何在我的 Flash 应用程序中制作 cookie?

如何在 Firebase 中使用 onSnapshot?无法在我的应用中运行