1基本使用
UIScrollView继承自UIView,有关UIView的所有的属性它都是有的,包括设置背景等。
UIScrollView的子类,UICollectionView,UITableView,UITextView.
常用属性
contentSize:表示UIScrollView内容的尺寸,一般会大于屏幕大小
contentOffset:当前屏幕显示区域的原点(默认左上角原点),在UIScrollView的位置,设置后是屏幕的偏移量。
contentInset:可以在UIScrollView内容的四周增加额外的边框。
bounds:是否有弹簧效果
showsHorizontalScrollIndicator:显示水平提示器
showsVerticalScrollIndicator:显示垂直提示器
pagingEnabed:分页滚动
例子
拖拽scrollview充满整个屏幕
拖拽添加属性:
添加一个比屏幕大的图片:
要显示图片需要一个UIImageView:@property(nonatomic,weak)UIImageView *imageView;
使用懒加载对imageView做简单的初始化。
//
// ViewController.m
// 滚动视图
//
// Created by on 2019/6/10.
// Copyright © 2019 Shae. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property(nonatomic,strong)UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//scrollView的属性
self.scrollView.contentSize=self.imageView.bounds.size;//显示区域为图片的size,图片比手机屏幕大
//self.scrollView.contentOffset=CGPointZero;//开始的原点,前两个属性可以实现基本的scrollView
self.scrollView.contentOffset=CGPointMake(200, 50);//偏移量
self.view.backgroundColor=[UIColor redColor];
self.scrollView.contentInset=UIEdgeInsetsMake(100, 100, 100, 0);//self.scrollView.contentInset=UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>)拉出后弹簧效果弹回后会有一个边框的存在,上左下右分别边框多大多少
self.scrollView.bounces=NO;//默认是有弹簧效果的。设为NO后就不会有弹簧效果,拖动到可拖动的范围就不能 拖了。
self.scrollView.showsHorizontalScrollIndicator=NO;//水平提示器,默认是有的
self.scrollView.showsVerticalScrollIndicator=NO;//垂直提示器,默认是有的
}
- (UIImageView *)imageView{
if (_imageView==nil) {
_imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"2"]];
[self.scrollView addSubview:_imageView];
}
return _imageView;
}
@end
代理
scrollViewDidScroll//当滚动时不断调用(不知道为什么没有滚动程序刚启动的时候也会调几次这个函数)
scrollViewWillBeginDragging//即将开始滚动的时候调用
scrollViewDidEndDragging//手指离开屏幕,停止滚动时调用
实现放大缩小
minimumZoomScale:最小放大比例,取值范围0.0~1.0,默认1.0
maximumZoomScale:最大放大比例,默认1.0
viewForZoomingInScrollView:返回放大的控件,必须实现该方法。
当然还有其他的代理方法,包括开始放大,结束放大等等。
在iPhone模拟器上,按住Option键这时你就能模拟双指触摸了。当然,只能模拟二指水平拖动、旋转效果。
要想模拟捏合手势?按住Option-Shift键就行了。
//
// ViewController.m
// 滚动视图
//
// Created by on 2019/6/10.
// Copyright © 2019 Shae. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property(nonatomic,strong)UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView.delegate=self;
//scrollView的属性
self.scrollView.contentSize=self.imageView.bounds.size;//显示区域为图片的size,图片比手机屏幕大
//self.scrollView.contentOffset=CGPointZero;//开始的原点,前两个属性可以实现基本的scrollView
self.scrollView.contentOffset=CGPointMake(200, 50);//偏移量
self.view.backgroundColor=[UIColor redColor];
self.scrollView.contentInset=UIEdgeInsetsMake(100, 100, 100, 0);//self.scrollView.contentInset=UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>)拉出后弹簧效果弹回后会有一个边框的存在,上左下右分别边框多大多少
self.scrollView.bounces=NO;//默认是有弹簧效果的。设为NO后就不会有弹簧效果,拖动到可拖动的范围就不能 拖了。
self.scrollView.showsHorizontalScrollIndicator=NO;//水平提示器,默认是有的
self.scrollView.showsVerticalScrollIndicator=NO;//垂直提示器,默认是有的
//设置缩放比例
self.scrollView.minimumZoomScale=0.5;
self.scrollView.maximumZoomScale=2;
}
- (UIImageView *)imageView{
if (_imageView==nil) {
_imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"2"]];
[self.scrollView addSubview:_imageView];
}
return _imageView;
}
#pragma mark -UIScrollView代理方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"%s",__func__);
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@"%s",__func__);
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView{
NSLog(@"%s",__func__);
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSLog(@"%s",__func__);
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return _imageView;
}
@end
代码:https://github.com/ShaeZhuJiu/-.git
纯代码创建
- (UIScrollView *)scrollView{
if (_scrollView==nil) {
//前三样创建基本的scrollView
_scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 400, self.frame.size.width , 200)];
_scrollView.contentSize=CGSizeMake(self.frame.size.width*2, 100);
self.scrollView.contentOffset=CGPointZero;
self.scrollView.showsHorizontalScrollIndicator=YES;//水平提示器,默认是有的
self.scrollView.showsVerticalScrollIndicator=NO;//垂直提示器,默认是有的
_scrollView.delegate=self;
_scrollView.backgroundColor=[UIColor yellowColor];
}
return _scrollView;
}