IOS基础UI之(八)UIScrollView
来源:互联网 发布:windows已停止工作 编辑:程序博客网 时间:2024/04/29 01:11
什么是UIScrollView
移动设备的屏幕大小是极其有限的,当展示的内容比较多,超出了一个屏幕时就无法显示了。因此有了UIScrollView,它可以使使用通过滚动手势查看屏幕外的内容。
UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有内容。 应用例子如:手机上的“设置”
UIScrollView 常见属性
// 这个属性用来表示UIScrollView滚动的位置@property(nonatomic) CGPoint contentOffset; //这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)@property(nonatomic) CGSize contentSize; //这个属性能够在UIScrollView的4周增加额外的滚动区域@property(nonatomic) UIEdgeInsets contentInset; //设置UIScrollView是否需要弹簧效果@property(nonatomic) BOOL bounces;//设置UIScrollView是否能滚动@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled; //是否显示水平滚动条@property(nonatomic) BOOL showsHorizontalScrollIndicator;//是否显示垂直滚动条@property(nonatomic) BOOL showsVerticalScrollIndicator;
UIScrollView的常用代理方法:
//当用户开始拖拽scrollView时就会调用-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ NSLog(@"=============开始拖拽===========");}//只要scrollView正在滚动,就会调用-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ NSLog(@"============== 正在拖拽 ==========%@",NSStringFromCGPoint(scrollView.contentOffset));}//用户停止拖拽时调用-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ NSLog(@"============用户停止拖拽时调用===========");}//只要scrollView正在缩放,就会调用-(void)scrollViewDidZoom:(UIScrollView *)scrollView{ NSLog(@"============正在缩放===========");}//当用户使用捏合手势的时候会调用-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ NSLog(@"============开始缩放==========="); return self.imageView;}
UIScrollView设置代理的步骤
1.设置控制器delegate,一般情况下,就设置UIScrollView所在的控制器 为UIScrollView的delegate。
设置控制器为UIScrollView的delegate有2种方法:
(1)通过代码(self就是控制器)
self.scrollView.delegate =self;
(2)通过storyboard拖线(右击UIScrollView)
2.控制器应该遵守UIScrollViewDelegate协议
@interface ViewController ()<UIScrollViewDelegate>
3.实现协议中相应的方法,就可以监听UIScrollView的滚动过程了
UIScrollView的缩放
原理:
当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容)
当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的viewForZoomingInScrollView:方法,这个方法返回的控件就是需要进行缩放的控件
实现步骤:
1.设置UIScrollView的id<UISCrollViewDelegate> delegate代理对象
2.设置minimumZoomScale:缩小的最小比例
3.设置maximumZoomScale:放大的最大比例
4.让代理对象实现下面的方法,返回需要缩放的视图控件
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
跟缩放相关的其他代理方法
缩放完毕的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
图片缩放例子:
1.设置storyboard,添加UIScrollView和UIImageView
2.设置scollView的尺寸、缩放比例以及让控制器成为代理,并重现代理方法实现缩放功能。
//// ViewController.m// 图片缩放scrollview#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@property (weak, nonatomic) IBOutlet UIImageView *imageView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //设置尺寸 self.scrollView.contentSize = self.imageView.frame.size; //设置代理 self.scrollView.delegate = self; // 设置最大和最小的缩放比例 self.scrollView.maximumZoomScale = 2.0; self.scrollView.minimumZoomScale = 0.5;}#pragma mark 代理方法//当用户开始拖拽scrollView时就会调用-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ NSLog(@"=============开始拖拽===========");}//只要scrollView正在滚动,就会调用-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ NSLog(@"============== 正在拖拽 ==========%@",NSStringFromCGPoint(scrollView.contentOffset));}//用户停止拖拽时调用-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ NSLog(@"============用户停止拖拽时调用===========");}//只要scrollView正在缩放,就会调用-(void)scrollViewDidZoom:(UIScrollView *)scrollView{ NSLog(@"============正在缩放===========");}//当用户使用捏合手势的时候会调用-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ NSLog(@"============开始缩放==========="); return self.imageView;}@end
喜马拉雅例子:
1.设置storyboard,添加UIScrollView(包括里面内容)、头部view以及底部view
2.设置scollView
//// ViewController.m// 喜马拉雅#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@property (weak, nonatomic) IBOutlet UIButton *lastBtn;@property (weak, nonatomic) IBOutlet UIView *topView;@property (weak, nonatomic) IBOutlet UIView *bottomView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //设置尺寸 //CGFloat contentY = self.lastBtn.frame.origin.y + self.lastBtn.frame.size.height+10; //CGRectGetMaxY 获取最大的y值 CGFloat contentY = CGRectGetMaxY(self.lastBtn.frame) + 10; self.scrollView.contentSize = CGSizeMake(0, contentY); CGFloat topH = self.topView.frame.size.height; CGFloat bottomH = self.bottomView.frame.size.height; //设置一开始的滚动位置 self.scrollView.contentOffset = CGPointMake(0, -topH); //额外增加滚动区域 self.scrollView.contentInset = UIEdgeInsetsMake(topH, 0, bottomH + 10, 0);}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }@end
图片缩放demo:点击打开链接
喜马拉雅demo:点击打开链接
-----------------------------文字至此!
- IOS基础UI之(八)UIScrollView
- iOS基础开发-UI基础之UIScrollview
- iOS UI基础-7.0 UIScrollView
- ioS开发之UI基础--UIScrollView的基本使用
- 猫猫学IOS(八)UI之热门_喜马拉雅UI实现-UIScrollView的使用
- iOS之UI随笔-UIScrollView
- (素材源码)猫猫学IOS(八)UI之热门_喜马拉雅UI实现-UIScrollView的使用
- UI基础之—UIScrollView,UIPageControl
- UI基础学习之(十一):UIScrollView
- iOS开发UI系列之UIScrollView
- IOS基础UI之(九) UIPageControl结合UIScrollView实现分页效果
- UIScrollView 基础学习 - UI
- UI 06 UIScrollView基础
- UI基础-UIScrollView、UIPageControl
- IOS UI控件-UIScrollView
- iOS-UI控件-UIScrollView
- iOS开发UI基础—16UIScrollView控件介绍
- IOS 基础开发之 UIScrollView的使用
- jsp中的js代码调用EL表达式
- Codevs_P1066 引水入城(BFS+贪心)
- 滋浊砖自佐左着仔
- 从数据库的历史看未来
- 指针相关基础
- IOS基础UI之(八)UIScrollView
- stm32存储器结构、 IAR 开发环境下的.icf 文件、.map文件 解析
- JavaScript 面向对象
- linux 下汉化 0.A.D游戏
- IOS UI控件-UIScrollView
- 第六周--数据结构 项目之顺序环形队列
- 柞谆酌自卒浊姿祝
- 字符串匹配的KMP算法
- jQuery dialog实现登陆,增删改操作