淘先锋技术网

首页 1 2 3 4 5 6 7

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;
}