iOS基础篇(十五)——UIScrollView的基本用法

滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图。

一、基本属性

1、CGSize contentSize :设置UIScrollView的滚动范围

2、CGPoint contentOffset :UIScrollView当前滚动的位置

3、UIEdgeInsets contentInset :设置内容的边缘

4、BOOL bounces 当超出边界时表示是否可以反弹

5、BOOL scrollEnabled 是否能滚动

6、BOOL showsHorizontalScrollIndicator 是否显示水平方向的滚动条

7、BOOL showsVerticalScrollIndicator     是否显示垂直方向的滚动条

8、UIScrollViewIndicatorStyle indicatorStyle  设定滚动条的样式

9、BOOL tracking  监控当前目标是否正在被跟踪

10、BOOL dragging 监控当前目标是否正在被拖拽

11、BOOL decelerating 监控当前目标是否正在减速

12、BOOL zooming 判断控件的大小是否正在改变

13、BOOL zoomBouncing 判断是否正在进行缩放反弹

14、minimumZoomScale  缩小的最小比例

15、maximumZoomScale 放大的最大比例

16、BOOL scrollsToTop 点击设备的状态栏时,是scrollsToTop = YES的控件滚动返回至顶部

 1 //初始化,设置尺寸和大小
 2     scrollView = [[UIScrollView alloc] initWithFrame:(CGRect){0,0,frame.size.width,frame.size.height}];
 3 //添加到视图
 4     [self.view addSubview:scrollView];
 5 //背景颜色
 6      scrollView.backgroundColor = [UIColor orangeColor];
 7 //滚动范围
 8     scrollView.contentSize = CGSizeMake(frame.size.width+100, frame.size.height+200);
 9 //设置代理
10     scrollView.delegate = self;
11 //是否分页
12     scrollView.pagingEnabled = YES;
13 //是否滚动
14     scrollView.scrollEnabled = YES;
15 //是否显示滚动条
16     scrollView.showsHorizontalScrollIndicator = YES;
17     scrollView.showsVerticalScrollIndicator = NO;
18 //滚动条风格
19     scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
20 //内容边缘和indicator边缘
21     scrollView.contentInset = UIEdgeInsetsMake(0, 20, 20, 20);
22     scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 50, 0, 0);

二、常见方法

1、返回一个放大或者缩小的视图

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;

2、开始放大或者缩小

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view;

3、缩放结束时

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;

4、视图已经放大或缩小

- (void)scrollViewDidZoom:(UIScrollView *)scrollView;

5、是否支持滑动至顶部

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;

6、滑动到顶部时调用该方法

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;

7、scrollView 已经滑动

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

8、scrollView 开始拖动

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

9、scrollView 结束拖动

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

10、scrollView 开始减速

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;

11、scrollview 减速停止

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

三、UIScrollView和UIPageControl实现图片切换

首先简单介绍下UIPageControl:

UIPageControll 是继承于UIControl的一个IOS系统UI控件,可以提供给开发者设计分页效果的功能。

 1     //初始化
 2     pageCtrl=[[UIPageControl alloc] initWithFrame:CGRectMake(0, 170, 375, 20)];
 3     [self.view addSubview:pageCtrl];
 4     //设置控制器页数(默认为0)
 5     pageCtrl.numberOfPages=3;
 6     //设置当前所在页码
 7     pageCtrl.currentPage = 1;
 8     //设置当总页数为1时,是否自动隐藏控制器
 9     pageCtrl.hidesForSinglePage = YES;
10     //设置控制器页码点得颜色
11     pageCtrl.pageIndicatorTintColor = [UIColor orangeColor];
12     //设置控制器当前所在页码点的颜色
13     pageCtrl.currentPageIndicatorTintColor = [UIColor greenColor];
14     pageCtrl.tag=100;
15
16     //给pageControl添加点击事件
17     [pageCtrl addTarget:self action:@selector(turnPage:) forControlEvents:UIControlEventTouchUpInside];
18     

视图载入:

 1 @interface ViewController ()<UIScrollViewDelegate>{
 2
 3     UIScrollView *scrollView;
 4     UIPageControl *pageCtrl;
 5
 6     NSArray *imageArray;
 7
 8 }
 9
10 @end
11
12 @implementation ViewController
13
14 - (void)viewDidLoad {
15     [super viewDidLoad];
16     // Do any additional setup after loading the view, typically from a nib.
17
18     //初始化
19     scrollView = [[UIScrollView alloc] initWithFrame:(CGRect){0,20,self.view.frame.size.width,self.view.frame.size.height}];
20     [self.view addSubview:scrollView];
21     //代理
22     scrollView.delegate = self;
23     //滑动范围
24     scrollView.contentSize = CGSizeMake(375*3, 180);
25     //背景颜色
26     scrollView.backgroundColor = [UIColor clearColor];
27     //是否分页
28     scrollView.pagingEnabled = YES;
29     //是否显示滚动条
30     scrollView.showsHorizontalScrollIndicator = NO;
31     scrollView.showsVerticalScrollIndicator = NO;
32
33     //图片数组
34     imageArray = @[@"u=1522827729,398642494&fm=21&gp=0", @"u=498354980,1967037110&fm=21&gp=0", @"u=455056084,2054881807&fm=21&gp=0"];
35
36     //加载图片
37     for (int i=0; i<3; i++) {
38         UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(i*375, 0, 375, 180)];
39         //imageView.image=[UIImage imageNamed:[NSString stringWithFormat:@"image%d.jpg",i+1]];
40         NSString *image = [imageArray objectAtIndex:i];
41         imageView.image = [UIImage imageNamed:image];
42
43         [scrollView addSubview:imageView];
44
45     }
46     //初始化
47     pageCtrl=[[UIPageControl alloc] initWithFrame:CGRectMake(0, 170, 375, 20)];
48     [self.view addSubview:pageCtrl];
49     //设置控制器页数(默认为0)
50     pageCtrl.numberOfPages=3;
51     //设置当前所在页码
52     pageCtrl.currentPage = 1;
53     //设置当总页数为1时,是否自动隐藏控制器
54     pageCtrl.hidesForSinglePage = YES;
55     //设置控制器页码点得颜色
56     pageCtrl.pageIndicatorTintColor = [UIColor orangeColor];
57     //设置控制器当前所在页码点的颜色
58     pageCtrl.currentPageIndicatorTintColor = [UIColor greenColor];
59     pageCtrl.tag=100;
60
61     //给pageControl添加点击事件
62     [pageCtrl addTarget:self action:@selector(turnPage:) forControlEvents:UIControlEventTouchUpInside];
63
64 }

图片切换:

 1 //UIScrollViewDelegate的scrollViewDidEndDecelerating函数,用户滑动页面停下后调用该函数
 2 - (void)scrollViewWillBeginDecelerating:(UIScrollView *)ScrollView
 3 {
 4     //更新UIPageControl的当前页
 5     int current=scrollView.contentOffset.x/scrollView.frame.size.width;
 6     NSLog(@"scrollview :%f",scrollView.contentOffset.x);
 7     UIPageControl *pageControl = (UIPageControl*)[self.view viewWithTag:100];
 8     pageControl.currentPage = current;
 9
10 }
11
12 //点击UIPageControl时的响应函数turnPage
13 - (void)turnPage:(UIPageControl*)change{
14     ///令UIScrollView做出相应的滑动显示
15     CGSize size = scrollView.frame.size;
16     CGRect rect = (CGRect){change.currentPage*size.width,0,size.width,size.height};
17     [scrollView scrollRectToVisible:rect animated:YES];
18
19 }

如图:

时间: 2024-08-04 06:47:29

iOS基础篇(十五)——UIScrollView的基本用法的相关文章

IOS基础之 (十五)知识点

一 SEL 1. 方法的存储位置 每个类的方法地址列表都存储在类对象中. 每个方法都有一个与之对应的SEL类型的对象. 根据一个SEL对象就可以找到方法的地址,进而调用方法. Person.h 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 5 + (void) test1; 6 7 - (void) test2; 8 9 - (void )test3:(NSString *) abc; 10 11

从零开始学ios开发(十五):Navigation Controllers and Table Views(中)

这篇内容我们继续上一篇的例子接着做下去,为其再添加3个table view的例子,有了之前的基础,学习下面的例子会变得很简单,很多东西都是举一反三,稍稍有些不同的内容,好了,闲话少说,开始这次的学习. 如果没有上一篇的代码,可以从这里下载Nav_1 1)第三个subtableview:Controls on Table Rows这个例子,我们将为每个table view的每一行添加一个按钮,这个按钮将放在accessory icon的位置(之前我们使用过accessoryType,其实这也是一个

iOS 进阶 第十五天(0417)

0417 创建UICollectionViewCell的Xib方法如下图 枚举定义导航跳转方式 js跳转到网页指定锚点 如下图所示: iOS 进阶 第十五天(0417)

Bootstrap &lt;基础二十五&gt;警告(Alerts)

警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个可选的关闭按钮.为了创建一个内联的可取消的警告框,请使用 警告(Alerts) jQuery 插件. 您可以通过创建一个 <div>,并向其添加一个 .alert class 和四个上下文 class(即 .alert-success..alert-info..alert-warning..ale

小猪猪C++笔记基础篇(五)表达式、语句

小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还是有点点收获的东西.那么,我只就一些容易弄糊涂和忽略的地方提出来,为日后变成作参考. 一.表达式 (一)概念 表达式时由一个或者多个运算对象组成的,对一个表达式求值将得到一个结果.把一个运算发和一个或者多个运算对象组合起来可以生成较为复杂的表达式. 作用于一个对象的运算符是一元运算符例如:“&”,“

python基础篇(五)

python基础篇(五) 算法初识 什么是算法 二分查找算法 ?一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大量计算机资源,而且耗时,这个时候就有人对这类计算编写了一些策略,这些策略就是算法.这些策略会加快数据计算时间,大大减少计算机的资源消耗. 在长时间人们编写代码的工作中,一些优秀的算法就被流传下来,但是不是所有的算法都能实现目的一步到位的工作,它只能减少你的代码,提高工作效率,随着知识的不断积累,你会

CSS基础学习十五:盒子模型补充之外边距合并

今天继续接着CSS盒子模型补充,CSS基础学习十三:盒子模型和CSS基础学习十四:盒子模型补充之display属 性设置都是介绍了盒子模型中的内容概括.开始今天的主题:外边距合并. 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合 并的外边距的高度中的较大者. (1)外边距合并 外边距合并叠加是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外 边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的

ios基础篇(十八)——Delegate 、NSNotification 和 KVO用法及其区别

一.Delegate Delegate本质是一种程序设计模型,iOS中使用Delegate主要用于两个页面之间的数据传递.iphone中常用@protocol和delegate的机制来实现接口的功能.例如想在A的功能要在B中实现,可以在A中定义一个Protocol. protocol用法: @interface ClassA :ClassB<protocol1, protocol2> 1.首先声明一个UIView类: @interface myView  :UIView{  } @end: 2

iOs基础篇(二十二)—— UIPickerView、UIDatePicker控件的使用

一.UIPickerView UIPickerView是一个选择器控件,可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活. 1.常用属性 (1)numberOfComponents:获取UIPickerView指定列中包含的列表项的数量. (2)showsSelectionIndicator:控制是否显示UIPickerView中的选中标记(以高亮背景作为选中标记). 2.常见方法 (1)- (NSInteger)numberOfComponen