UIScrollView —— 分页控件详解(三)——(第一讲)

1 、 所用知识

须知,要达到分页效果,所以会用到UIScrollView的ContentOffset属性,设置其UIScrollView分页移动位置,要有页码就用到了UIPageControl控件显示页码条,而且不要开始不要忘记了设置UIScrollView的属性ContentSize来设置其展示内容范围,要让UIScrollView达到分页效果,还要设置其属性pagingEnabled为YES。

2 、 案例详情

1> 在storyboard上拖拽一个UIScrollView和UIPageControl控件,然后将其连线到控制器扩展中,作为其属性使用。如下图所示:

2>  参照viewController.m代码实现

 1 #import "ViewController.h"
 2
 3 //#define kImageCount 5
 4 #define IMAGE_COUNT 5
 5 @interface ViewController ()<UIScrollViewDelegate>
 6 @property (weak, nonatomic) IBOutlet UIScrollView *sc;
 7 @property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
 8
 9 // 监听UIPageControl页码的变化
10 //- (IBAction)pageControlClick:(UIPageControl *)sender;
11
12 @end
13
14 @implementation ViewController
15
16 - (void)viewDidLoad {
17     [super viewDidLoad];
18
19     self.sc.showsHorizontalScrollIndicator = NO;
20     self.sc.showsVerticalScrollIndicator = NO;
21
22     // Do any additional setup after loading the view, typically from a nib.
23     CGFloat width = self.sc.frame.size.width;
24     CGFloat height = self.sc.frame.size.height;
25
26     // 1.初始化子控件, 添加图片
27     for (int i = 0; i < IMAGE_COUNT; i++) {
28         // 1.创建UIImageView
29         UIImageView *iv = [[UIImageView alloc] init];
30         // 2.创建图片
31         UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"img_%02i", i + 1]];
32         // 3.设置每个UIImageView的frame
33         iv.frame = CGRectMake(i * width, 0, width, height); // 按照宽度分页
34         iv.image = image;
35         // 4.添加到父控件
36         [self.sc addSubview:iv];
37     }
38
39     // 2.设置滚动范围
40     self.sc.contentSize = CGSizeMake(IMAGE_COUNT * width, height);
41     self.sc.bounces = NO;
42     self.sc.pagingEnabled = YES;
43
44     // 3.监听PageControl的点击事件
45     [self.pageControl addTarget:self action:@selector(pageControlClick:) forControlEvents:UIControlEventValueChanged];
46     self.pageControl.numberOfPages = IMAGE_COUNT;
47
48     /*
49     // 设置未显示的页码颜色
50     self.pageControl.pageIndicatorTintColor = [UIColor blackColor];
51     // 设置当前显示的页码颜色
52     self.pageControl.currentPageIndicatorTintColor = [UIColor purpleColor];
53      */
54
55     // 通过KVC给UIPageControl的私有属性赋值, 设置自定义图片
56     [self.pageControl setValue:[UIImage imageNamed:@"current"] forKeyPath:@"_currentPageImage"];
57     [self.pageControl setValue:[UIImage imageNamed:@"other"] forKeyPath:@"_pageImage"];
58 }
59
60 #pragma mark - UIScrollViewDelegate
61 // 只要滚动就会调用
62 - (void)scrollViewDidScroll:(nonnull UIScrollView *)scrollView
63 {
64     // 1.计算页码
65     // 当前页码 = 偏移位 / UIScrollView的宽度
66     CGFloat page = scrollView.contentOffset.x / scrollView.frame.size.width;
67     int currnetPage = page + 0.5;
68
69     // 2.修改页码
70     self.pageControl.currentPage = currnetPage;
71 }
72
73 #pragma mark - 内部监听
74 - (IBAction)pageControlClick:(UIPageControl *)sender {
75     NSLog(@"%lu", sender.currentPage);
76     self.sc.contentOffset = CGPointMake(sender.currentPage * self.sc.frame.size.width , 0);
77 }
78 @end

下一章节,讲解使用UIScrollView实现图片轮播器,待续。^_^

时间: 2025-01-02 09:11:55

UIScrollView —— 分页控件详解(三)——(第一讲)的相关文章

asp.net验证控件详解

ASP.NET验证控件详解     现在ASP.NET,你不但可以轻松的实现对用户输入的验证,而且,还可以选择验证在服务器端进行还是在客户端进行,再也不必考虑那么多了,程序员们可以将重要精力放在主程序的设计上了. ASP.NET公有六种验证控件,分别如下: 控件名           功能描叙 RequiredFieldValidator(必须字段验证) 用于检查是否有输入值 CompareValidator(比较验证) 按设定比较两个输入 RangeValidator(范围验证) 输入是否在指

IOS—UITextFiled控件详解

IOS—UITextFiled控件详解 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UITextBorderStyleNone, UITextBorderS

ASP.NET 验证控件详解

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

lodoop打印控件详解

注意:使用此打印控件需要引入(在我上传的Demo中都有): install_lodop32.exe install_lodop64.exe LodopFuncs.js jquery-1.10.0.min.js 具体Demo下载地址: http://download.csdn.net/download/l294333475/7697807 <%@ page language="java" import="java.util.*" pageEncoding=&qu

GridView控件详解

一.介绍 GridView控件一表格形式显示数据源中的数据.提供对列进行排序.分页以及编辑.删除单个记录的功能. 二.绑定数据源 第一种使用DataSourceID属性.可以直接把GridView控件绑定到数据源控件上,以利用数据源控件的功能实现编辑.删除.排序.分页等功能.(初级) 第二种可以绑定到ADO.NET数据集和数据读取器对象上,但需要为所有功能编写后台代码.(一般使用这种方式) private void gridViewBind() { //获取GridView排序数据列及排序方向

【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePicker 属性截图 : 1. UIDatePicker 控件属性 (1) Mode 属性 Mode 属性 : 用于设置 UIDatePicker 模式; -- Date 属性值 : 显示日期, 不显示时间; -- Time 属性值 : 显示时间, 不显示日期; -- Date and Time 属性值

安卓ListView控件详解

1.ArrayAdapter 这个是最简单的了,只默认接受TextView控件,而且还只是一个. listView = new ListView(this); //注意没有使用XML文件的 //样式是安卓提供的样式 listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData())); setContentView(listView); 这个就表

ListView控件详解

在Windows的资源管理器中,文件夹或文件信息可以分别以大图标或小图标的方式显示如图: 这样的洁面效果是如何实现的?这就要用到ImageList控件和ListView控件 ImageList控件的属性                  属                                   性                  说                                   明 Images 存储在图像列表中的所有图像 ImageSize 存储在图像列表

Swift编程中字符转为类,代码创建控件详解

在swift编程(http://www.maiziedu.com/course/ios/16-161/)中,我们都会遇到这样两个问题,如何把字符转为类和代码创建控件的方法,下面就具体讲解这两个知识点 在使用类之前要先获得 命名空间 通过json来获取 字符型的类名 然后创建类对象,这时候就要用到字符转类 // 从info字典中获取到 命名空间 转为字符型 let NS = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"