码迷,mamicode.com
首页 > 其他好文 > 详细

UIScrollView控件的一些简单介绍

时间:2015-03-02 13:17:18      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:ios开发   ios   uiscrollview   控件   

1.UIScrollView控件是什么

(1)移动设备的屏幕大小是有限的,因此直接展示在用户眼前的数据内容也是有限的

(2)当展示的内容过多,超出屏幕时,用户可以通过滚动手势来查看屏幕以外的内容

(3)普通的UIView不具备滚动功能,不能显示过多的内容

(4)UIScrollView是一个可以滚动的视图控件,可以展示大量内容,并且可以通过滚动手势查看所有内容

2. UIScrollView的简单使用

(1)将要展示的内容添加到UIScrollView中

(2)设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺寸,也就是告诉UIScrollView滚动的范围(能滚多远,滚到哪里才是尽头)

3.属性

(1)常用属性:

1)@property(nonatomic)CGPointcontentOffset;这个属性?用来表?示UIScrollView滚动的位置

2)@property(nonatomic)CGSizecontentSize;这个属性?用来表?示UIScrollView内容的尺?寸,滚动范围(能滚多远)

3)@property(nonatomic)UIEdgeInsetscontentInset;这个属性能够在UIScrollView4周增加额外的滚动区域 

(2)其他属性:

1)@property(nonatomic)BOOL bounces;  设置UIScrollView是否需要弹簧效果 

2)@property(nonatomic,getter=isScrollEnabled)BOOLscrollEnabled;设置UIScrollView是否能滚动 

3)@property(nonatomic)BOOL showsHorizontalScrollIndicator; 是否显?示?水平滚动条 

4)@property(nonatomic)BOOL showsVerticalScrollIndicator; 是否显?示垂直滚动条 

4.注意点

? 如果UIScrollView?无法滚动,可能是以下原因:

(1)没有设置contentSize

(2) scrollEnabled = NO

(3) 没有接收到触摸事件:userInteractionEnabled = NO

(4)没有取消autolayout功能(要想scrollView滚动,必须取消autolayout) 


一、缩放

1.简单说明:

有些时候,我们可能要对某些内容进行手势缩放,如下图所示

技术分享

 

UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理。也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中

2.缩放原理

当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容)

技术分享

当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的viewForZoomingInScrollView:方法,这个方法返回的控件就是需要进行缩放的控件。

二、实现缩放功能

1.代码示例:

技术分享
 1 #import "YYViewController.h"
 2 
 3 @interface YYViewController () <UIScrollViewDelegate>
 4 {
 5     UIScrollView *_scrollview;
 6     UIImageView *_imageview;
 7 }
 8 @end
 9 
10 @implementation YYViewController
11 
12 - (void)viewDidLoad
13 {
14     [super viewDidLoad];
15     
16     //1添加 UIScrollView
17     //设置 UIScrollView的位置与屏幕大小相同
18     _scrollview=[[UIScrollView alloc]initWithFrame:self.view.bounds];
19     [self.view addSubview:_scrollview];
20     
21     //2添加图片
22     //有两种方式
23     //(1)一般方式
24 //    UIImageView  *imageview=[[UIImageView alloc]init];
25 //    UIImage *image=[UIImage imageNamed:@"minion"];
26 //    imageview.image=image;
27 //    imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);
28     
29     //(2)使用构造方法
30     UIImage *image=[UIImage imageNamed:@"minion"];
31     _imageview=[[UIImageView alloc]initWithImage:image];
32     //调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样
33     [_scrollview addSubview:_imageview];
34     
35     //设置UIScrollView的滚动范围和图片的真实尺寸一致
36     _scrollview.contentSize=image.size;
37     
38     
39     //设置实现缩放
40     //设置代理scrollview的代理对象
41     _scrollview.delegate=self;
42     //设置最大伸缩比例
43     _scrollview.maximumZoomScale=2.0;
44     //设置最小伸缩比例
45     _scrollview.minimumZoomScale=0.5;
46     
47 }
48 
49 //告诉scrollview要缩放的是哪个子控件
50 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
51 {
52     return _imageview;
53 }
54 
55 @end
技术分享

2.代码说明

实现缩放功能的4个步骤

(1)为scrollview设置代理(self)

(2)让控制器遵守scrollview的代理协议

(3)调用代理方法,返回需要实现缩放功能的子控件

(4)设置缩放的范围(最大和最小比例)

3.思路:

a.需要告诉scrollview要缩放的时哪一个子控件,这里为scrollview内部的imageview控件

b.谁来告诉scrollview缩放哪一个控件?代理

三、补充知识

两种实例化UIImageView的方法:

第一种:

    UIImageView  *imageview=[[UIImageView alloc]init];

    UIImage *image=[UIImage imageNamed:@"minion"];

    imageview.image=image;

    imageview.frame=CGRectMake(0, 0, image.size.width, image.size.height);

    

第二种:

    UIImage *image=[UIImageimageNamed:@"minion"];

    _imageview=[[UIImageViewalloc]initWithImage:image];

    调用initWithImage:方法,它创建出来的imageview的宽高和图片的宽高一样

    [_scrollviewaddSubview:_imageview];

四、跟缩放相关的其他代理方法

缩放完毕的时候调用 

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

正在缩放的时候调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView


三、委托方法

可以赋予滚动视图一个委托,下列委托方法会在特定时刻收到通知。

[java] view plaincopy
  1. -(void)scrollViewDidScroll:(UIScrollView*)scrollView;//会在视图滚动时收到通知。包括一个指向被滚动视图的指针,从中可以读取contentOffset属性以确定其滚动到的位置。  
[java] view plaincopy
  1. -(void)scrollViewWillBeginDragging:(UISCrollView*)scrollView;//当用户首次在某个方向上进行拖动时得到通知。这个方法会得到被作为参数传递的滚动视图指针,也同样可以从中读取 contentOffset 属性。  
[java] view plaincopy
  1. -(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate;  
  2. //当用户抬起拖动到手指时得到通知。还会得到一个布尔值,知名报告滚动视图最后位置之前,是否需要减速。  
[java] view plaincopy
  1. -(void)scrollViewWillBeginDecelerate:(UIScrollView*)scrollView;//当用户抬起手指而视图需要继续移动时,会收到通知。这个方法可以用来读取 contentOffset属性,从而判断出当用户抬起手指钱最后一次滚动到的位置,虽然这个位置并不会使滚动条的最终停止位置。  
[java] view plaincopy
  1. -(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView;//当上面提到的减速完毕、滚动视图停止时得到通知。收到这个通知的时刻,滚动视图的contentOffset属性会反映出滚动条最终停止的位置。  
[java] view plaincopy
  1. -(void)scrollViewDidEndZooming:(UIScrollview*)scrollView withView:(UIView*)view atScale:(float)scale;//当用户对内容进行缩放时,会收到通知。缩放比例表示为一个浮点值,会作为参数传递进来。  
[java] view plaincopy
  1. -(BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView;  
  2. -(void)scrollViewDidScrollToTop:(UIScrollView*)scrollView;  
  3. //当用户点出iPhone状态条时,滚动视图委托可以决定视图是否滚动回到开头。  

OK,都总结完了,后面会写一个页面翻转的例子敬请关注。

属性 作用
CGPoint contentOffSet 监控目前滚动的位置
CGSize contentSize 滚动范围的大小
UIEdgeInsets contentInset 视图在scrollView中的位置
id<UIScrollerViewDelegate>
delegate
设置协议
BOOL directionalLockEnabled 指定控件是否只能在一个方向上滚动
BOOL bounces 控制控件遇到边框是否反弹
BOOL alwaysBounceVertical 控制垂直方向遇到边框是否反弹
BOOL alwaysBounceHorizontal 控制水平方向遇到边框是否反弹
BOOL pagingEnabled 控制控件是否整页翻动
BOOL scrollEnabled 控制控件是否能滚动
BOOL showsHorizontalScrollIndicator 控制是否显示水平方向的滚动条
BOOL
showsVerticalScrollIndicator
控制是否显示垂直方向的滚动条
UIEdgeInsets scrollIndicatorInsets 指定滚动条在scrollerView中的位置
UIScrollViewIndicatorStyle
indicatorStyle
设定滚动条的样式
float decelerationRate 改变scrollerView的减速点位置
BOOL tracking 监控当前目标是否正在被跟踪
BOOL dragging 监控当前目标是否正在被拖拽
BOOL decelerating 监控当前目标是否正在减速
BOOL delaysContentTouches 控制视图是否延时调用开始滚动的方法
BOOL canCancelContentTouches 控制控件是否接触取消touch的事件
float minimumZoomScale 缩小的最小比例
float maximumZoomScale 放大的最大比例
float zoomScale 设置变化比例
BOOL bouncesZoom 控制缩放的时候是否会反弹
BOOL zooming 判断控件的大小是否正在改变
BOOL zoomBouncing 判断是否正在进行缩放反弹
BOOL scrollsToTop 控制控件滚动到顶部



参考链接:http://www.cnblogs.com/wendingding/p/3754268.html

                  http://blog.csdn.net/qijianli/article/details/7781918

UIScrollView控件的一些简单介绍

标签:ios开发   ios   uiscrollview   控件   

原文地址:http://blog.csdn.net/rainshenji/article/details/44016367

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!