今天这种日子还在写代码的,一定是真爱。好吧我承认闲的无聊。下面讲一讲UIScrollView的基本使用。
使用场景:一般当手机屏幕不能完全显示需要展示的内容的时候,就会考虑使用UIScrollView了。
可以通过拖拽将屏幕外的内容显示出来。
1.使用前要知道几个属性的含义:
(1)CGSize contentSize:这个属性代表可以滚动的区域大小。
(2)UIEdgeInsets contentInset:这个属性可以设置scrollView距离屏幕上左下右的距离。
(3)BOOL bounces: 设为YES可以有回弹效果
(4) BOOL < showsVerticalScrollIndicator:显示垂直滚动条
<showsHorizontalScrollIndicator:显示水平滚动条
2.UIScrollViewDelegate的几个代理方法也要知道以下
(1)-(void)scrollViewDidScroll:(UIScrollView *)scrollView; //scrollview正在滚动时会触发
(2)-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;//scrollView将要开始拖拽时会触发
(3)-(void)scrollViewDidEndDragging:(UIScrollView *)scrolView willDecelerate:(BOOL)decelerate;//scrollview结束拖拽的时候会触发
(4)-(void)scrollViewWillBeginDecelerating:(UIscrollView *)scrollView;//scrollView将要开始减速滚动的时候会触发
3.下面我们一起来看一个简单的实例体会一下:
#import "ViewController.h"
@interface ViewController ()<UIScrollViewDelegate>
@property(nonatomic,strong)UIScrollView *scrolView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIImageView *imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"111"]];
self.scrolView=[[UIScrollView alloc]initWithFrame:self.view.bounds];
//1.设置UIScrollView的contentSize属性,代表可以滚动的区域大小
self.scrolView.contentSize=imageView.bounds.size;
//self.scrolView.contentSize=CGSizeMake(self.view.frame.size.width, imageView.frame.size.height);
//2. 设置UIEdgeInsets(距离上左下右的距离)
self.scrolView.contentInset=UIEdgeInsetsMake(20, 10, 10, 10);
//3.设置indicator的insets
self.scrolView.scrollIndicatorInsets=UIEdgeInsetsMake(0, 0, 0, 10);
//4.设置不能回弹效果
self.scrolView.bounces=NO;
//
[self.scrolView setBounces:NO];
//3.在UIScrollView中添加子View
[self.scrolView addSubview:imageView];
[self.view addSubview:self.scrolView];
self.scrolView.delegate=self;
}
#pragma mark -UIScrollViewDelegate
//scrollView正在滚动
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScroll");
}
//scrollView将要开始拖拽
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"scrollViewWillBeginDragging");
}
//scrollview结束拖拽
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"scrollViewDidEndDragging");
}
//scrollView将要开始减速滚动
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
NSLog(@"scrollViewWillBeginDecelerating");
}
-(BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
return YES;
}
@end
程序运行后,稍微拖动一下后打印效果是:
很明显,代理触发的先后顺序是:将要拖拽-》开始滚动-》因为就拖拽了一下,所以滚动一小会后就会触发结束拖拽代理-》一旦结束拖拽,scrollView的滚动就会变慢,触发将要开始减速滚动代理-》虽然减速滚动,但是还是在滚动,所以还是会触发scrollDidScroll代理。(PS:也可以试试看拖拽的时候不松开的效果)
4.拖拽后的效果图如下:
注意一地啊,就是垂直滚动条是被设置了距离右边10间距的。对于一些属性的实际效果大家可以自行试试看。