前言

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UIPageControl : UIControl @available(iOS 2.0, *)       public class UIPageControl : UIControl
  • iPhone 和 iPad 都是通过页控件来展示多个桌面,很多 App 在第一次使用时也会使用页控件来介绍自己的功能,页控件的交互效果非常好,适用于把几个简单的页面充分展示出来。

1、UIPageControl 的创建

  • Objective-C

        // 实例化页控制器UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 0,  300, 30)];// 添加到窗口中[self.view addSubview:pageControl];// 设置位置pageControl.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 50);            // 设置个数pageControl.numberOfPages = 15;
  • Swift

        // 实例化页控制器let pageControl = UIPageControl(frame: CGRectMake(0, 0,  300, 30))// 添加到窗口中self.view.addSubview(pageControl)// 设置位置pageControl.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 50)// 设置个数pageControl.numberOfPages = 15

2、UIPageControl 的设置

  • Objective-C

        // 设置 frame/*高度设置无效*/pageControl.frame = CGRectMake(10, 200, 10, 0);// 设置位置pageControl.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 50);// 设置个数pageControl.numberOfPages = 15;// 设置颜色// 当前页面小圆点的颜色pageControl.currentPageIndicatorTintColor = [UIColor greenColor];// 其它页面小圆点的颜色pageControl.pageIndicatorTintColor = [UIColor redColor];// 设置当前页/*设置高亮显示点*/pageControl.currentPage = 0;// 设置只有一页时是否隐藏页码指示器/*default is NO*/pageControl.hidesForSinglePage = YES;// 设置是否可点击/*点击的是页控制器的左边或右边,依次左移或右移,具体点击某个点时没有反应*/pageControl.userInteractionEnabled = YES;// 添加点击触发事件 /*点击的是页控制器的左边或右边,依次左移或右移,具体点击某个点时没有反应*/[pageControl addTarget:self action:@selector(pageControlClick:) forControlEvents:UIControlEventValueChanged];
  • Swift

        // 设置 frame/*高度设置无效*/pageControl.frame = CGRectMake(10, 200, 10, 0)// 设置位置pageControl.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 50)// 设置个数pageControl.numberOfPages = 15// 设置颜色// 当前页面小圆点的颜色pageControl.currentPageIndicatorTintColor = UIColor.greenColor()// 其它页面小圆点的颜色pageControl.pageIndicatorTintColor = UIColor.redColor()// 设置当前页/*设置高亮显示点*/pageControl.currentPage = 0// 设置只有一页时是否隐藏页码指示器/*default is false*/pageControl.hidesForSinglePage = true// 设置是否可点击/*点击的是页控制器的左边或右边,依次左移或右移,具体点击某个点时没有反应*/pageControl.userInteractionEnabled = true// 添加点击触发事件/*点击的是页控制器的左边或右边,依次左移或右移,具体点击某个点时没有反应*/pageControl.addTarget(self, action: #selector(UiPageViewController1.pageControlClick(_:)), forControlEvents: .ValueChanged)

3、页控制器小圆点随视图滚动

  • Objective-C

    • 页控制器小圆点随视图滚动

          - (void)scrollViewDidScroll:(UIScrollView *)scrollView {UIPageControl *pageControl = (id)[self.view viewWithTag:200];// 计算当前页数/*小数四舍五入为整数:(int)(小数 + 0.5)0.3 > (int)(0.3 + 0.5) > 00.6 > (int)(0.6 + 0.5) > 1*/int pageNum = (int)(scrollView.contentOffset.x / scrollView.frame.size.width + 0.5);// 设置当前页pageControl.currentPage = pageNum;}
    • 视图随页控制器小圆点滚动

          /*点击的是页控制器的左边或右边,依次左移或右移,具体点击某个点时没有反应*/- (void)pageControlClick:(UIPageControl *)pageControl {UIScrollView *scrollView = (id)[self.view viewWithTag:100];// 计算点击的页面CGFloat pageOffsetX = scrollView.frame.size.width * pageControl.currentPage;// 设置 scrollView 的偏移量scrollView.contentOffset = CGPointMake(pageOffsetX, 0);}
  • Swift

    • 页控制器小圆点随视图滚动

          func scrollViewDidScroll(scrollView: UIScrollView) {let pageControl = self.view.viewWithTag(200) as! UIPageControl// 计算当前页数/*小数四舍五入为整数:Int(小数 + 0.5)0.3 > (int)(0.3 + 0.5) > 00.6 > (int)(0.6 + 0.5) > 1*/let pageNum = Int(scrollView.contentOffset.x / scrollView.frame.size.width + 0.5)// 设置当前页pageControl.currentPage = pageNum}
    • 视图随页控制器小圆点滚动

          /*点击的是页控制器的左边或右边,依次左移或右移,具体点击某个点时没有反应*/func pageControlClick(pageControl:UIPageControl) {let scrollView = self.view.viewWithTag(100) as! UIScrollView// 计算点击的页面let pageOffsetX = scrollView.frame.size.width * CGFloat(pageControl.currentPage)// 设置 scrollView 的偏移量scrollView.contentOffset = CGPointMake(pageOffsetX, 0)}

4、Storyboard 中设置

  • 在 Storyboard 场景中设置

    • Page View Controller 设置

      Navigation 分页的方向,水平或垂直
      Transition Style 翻页的样式,书卷翻页或滑动翻页
      Page Spacing 页面间距,只有滑动翻页样式有效
      Spine Location 书脊位置,只有书卷翻页样式有效
      -- Double Sided
    • Page Control 设置

      Pages 页面数和当前页
      Behavior
      -- Hides for Single Page 单页面时隐藏
      -- Defers Page Display 延缓页面显示
      Tint Color 页面指示器的颜色
      Current Page 当前页面的指示器的颜色
  • 在 Storyboard 场景绑定的 Controller 中设置

    • pageViewController 的实例化与要显示的页面(ViewControllers)都需在代码中实现。

          // 页面指示器默认为白色,不设置颜色显示不出来UIPageControl *pageControl = [UIPageControl appearance];

转载于:https://www.cnblogs.com/QianChia/p/5758294.html

iOS - UIPageViewController相关推荐

  1. iOS翻页视图控制器UIPageViewController的应用

    2019独角兽企业重金招聘Python工程师标准>>> iOS翻页视图控制器UIPageViewController的应用 一.引言 UIPageViewController是iOS ...

  2. iOS中常见的6种传值方式,UIPageViewController

    通过属性传值.方法传值.代理传值.Block传值.单例传值.通知传值6种方式进行不同视图之间的传值.不同方式只需要在AppDelegate中更改下UINavigationController的根控制器 ...

  3. iOS 开发之 pdf 文档的加载与浏览的 4 种方式

    原文链接:http://www.jianshu.com/p/1d4305a02ea5 在我们的开发中,有些像电子书类型的 app 的开发会涉及到 pdf 文档的加载与展示.由于笔者项目中正好涉及到这块 ...

  4. 开源中国iOS客户端学习——(一)Prefix.pch文件

    2019独角兽企业重金招聘Python工程师标准>>> 当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文件的文件,pch ...

  5. UIPageViewController教程

    UIPageViewController简介 UIPageViewController是iOS 5.0之后提供的一个分页控件可以实现图片轮播效果和翻书效果.使用起来也很简单方便. UIPageView ...

  6. iOS开发那些事-平铺导航-基于Page的导航及案例实现

    基于分页导航实现 在iOS 5之后,可以使用分页控制器(UIPageViewController)构建类似于电子书效果的应用,我们称为基于分页的应用.一个分页应用有很多相关的视图控制器 分页控制器(P ...

  7. iOS 快速实现分页界面的搭建

    级别: ★★☆☆☆ 标签:「iOS」「分页」「QiPageMenuView」 作者: 沐灵洛 审校: QiShare团队 iOS 快速实现分页界面的搭建 项目中我们经常会遇到滚动分页的设计效果,被用来 ...

  8. ios开发之.pch文件的使用

    案例:开源中国iOS客户端       当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文件的文件,pch全称是"precompi ...

  9. iOS UIPageControl

    In this tutorial, we'll be discussing and implementing the UIPageControl element in our iOS Applicat ...

最新文章

  1. 使用ASIHTTPRequest 编译提示找不到libxml/HTMLparser.h的解决方法
  2. 【288天】每日项目总结系列026(2017.11.20)
  3. Lvs Tun隧道模式配置
  4. hibernate session 新增、删除,修改、查询样例
  5. 捡起JavaScript(1)
  6. java 如何导出json文件_java导出json格式文件的示例代码
  7. 使用Anaconda进行环境和包的管理
  8. matplotlib绘制虚线_[Matplotlib习题]虚线绘图练习
  9. double write buffer
  10. VS2015 property manager
  11. 转载:AD的授权还原和主还原:深入浅出Active Directory系列(六)
  12. 《Outlier Analysis》书籍
  13. linux 编译chromium,简易编译Chromium OS内核教程
  14. 修改Linux文件格式为unix
  15. 走进龙芯3A3000(二)安装Gentoo N64
  16. alios是安卓吗_鸿蒙OS系统被质疑,谷歌也有新布局!阿里云OS事件会再现吗?
  17. G1D38-Evaluation Metrics
  18. hive中NULL值问题
  19. 计算机网络用英语怎么表达,网络用英语怎么说
  20. 《重说中国近代史》—张鸣—(4)古老命题新解(1)

热门文章

  1. 关于“数据可视化思考者”的8条军规
  2. Partition函数
  3. 【MongoDB数据库】怎样安装、配置MongoDB
  4. 心有多宽 路就有多宽-- BreezeMH源码公布
  5. 微软发布了Spartan项目的细节,并证实了某些流言
  6. JQUERY的父,子,兄弟节点查找方法
  7. Contact Bubble View
  8. Windows磁盘驱动基础教程
  9. 架构师之路 — 分布式系统 — gRPC 的 4 种服务定义及调用方式
  10. 通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间