UIScrollview

UIScrollView是实现滚屏的View, 是实现所有滚动视图的基类.

UIScrollview主要专⻓于两个⽅⾯:
1. 滚动:contentSize⼤于frame.size的时候,能够滚动。
2. 缩放:⾃带缩放,可以指定缩放倍数。
UIScrollView是实现滚屏的View, 是实现所有滚动视图的基类.

这是UIScrollView其中几个滚动代理⽅法:

delegate
 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView //滚动就会触发
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView //开始拖拽时触发
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate //结束拖拽时触发
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView //开始减速时触发
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView //结束减速时触发(停⽌止时)

UIScrollView 缩放代理⽅法

delegate
 
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale //完成放大缩⼩触发
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView //指定某个UIScrollView的⼦视图可以被放大缩⼩


下面用代码介绍 UIScrollView的属性:
#import "RootViewController.h"
@interface RootViewController () <UIScrollViewDelegate>
@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, assign) NSInteger numberOfPage;
@property (nonatomic, assign) NSInteger currentOfPage;
@property (nonatomic, assign) BOOL hidesForSinglePage;
@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    //初始化一个跟屏幕一样大的UIScrollView
    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
    
#pragma mark - 设置 UIScrollView 的 contentSize 属性 (显示区域)
    //设置显示区域大小
    
    //只能上下滑动
    self.scrollView.contentSize = CGSizeMake(0, kScreenHeight * 2);
    
    //只能左右滑动
    self.scrollView.contentSize = CGSizeMake(kScreenWidth * 2, 0);
    
    self.scrollView.contentSize = CGSizeMake(kScreenWidth, kScreenHeight*2);
    
    //添加一张图片 为了看出明显效果可以添加图片观察
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:(CGRectMake(0, 0, kScreenWidth, kScreenHeight))];
    UIImage *image = [UIImage imageNamed:@"09.png"];
    imageView.image = image;
    imageView.tag = 100;
    [self.scrollView addSubview:imageView];
    [imageView release];

#pragma mark - 设置 UIScrollView 的 bounces 属性 (边界回弹)
    //边界回弹的属性
    self.scrollView.bounces = YES;
    
    //设置水平回弹
    self.scrollView.alwaysBounceHorizontal = YES;
    
    //控制是否显⽰⽔平⽅向的滚动条
    self.scrollView.showsHorizontalScrollIndicator = YES;
    
    //设置垂直回弹
    self.scrollView.alwaysBounceVertical = YES;
    
    //控制是否显⽰示垂直⽅方向的滚动条
    self.scrollView.showsVerticalScrollIndicator = YES;
    
    //设置scrollView是否滚动
    self.scrollView.scrollEnabled = YES;
    
#pragma mark - 设置 UIScrollView 的缩放和扩大
    
    //设置图片缩放的倍数 (扩大的倍数)
    self.scrollView.maximumZoomScale = 3.0;
    
    //设置图片缩小的倍数
    self.scrollView.minimumZoomScale = 0.5;
    
    
#pragma mark - 设置 UIScrollView 的代理完成缩放功能

    //设置代理
    self.scrollView.delegate = self;
    self.scrollView.tag = 200;


    //是否整屏翻动
    self.scrollView.pagingEnabled = YES;

    //设置变化比例
    self.scrollView.zoomScale = 0.5;
    
    //判断是否正在进⾏缩放反弹
    NSLog(@"%d", self.scrollView.zooming);
    
    //控制缩放时是否会反弹
    self.scrollView.bouncesZoom = YES;
    
    //添加背景颜色
    self.scrollView.backgroundColor = [UIColor orangeColor];
    
    //显示视图
    [self.view addSubview:self.scrollView];
    
    
    
#pragma mark - 设置button添加一个scrollView的动画, 测试代理方法
    //添加一个不受滑动影响位置的button
    UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];
    button.frame = CGRectMake((kScreenWidth - 100) / 2, 50, 100, 30);
    button.backgroundColor = [UIColor colorWithRed:0.918 green:0.500 blue:0.500 alpha:1.000];
    [button setTitle:@"添加动画" forState:(UIControlStateNormal)];
    [button addTarget:self action:@selector(buttonClick:) forControlEvents:(UIControlEventTouchUpInside)];
    [self.view addSubview:button];
#pragma mark - 设置button复原缩放
    UIButton *button2 = [UIButton buttonWithType:(UIButtonTypeCustom)];
    button2.frame = CGRectMake((kScreenWidth - 100) / 2, 100, 100, 30);
    button2.backgroundColor = [UIColor colorWithRed:0.918 green:0.567 blue:0.500 alpha:1.000];
    [button2 setTitle:@"缩放复原" forState:(UIControlStateNormal)];
    [button2 addTarget:self action:@selector(button2Click:) forControlEvents:(UIControlEventTouchUpInside)];
    [self.view addSubview:button2];
    
}

#pragma mark - 利用button添加一个scrollView的动画, 测试代理方法,点击方法的实现
- (void)buttonClick:(UIButton *)button {
    UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:200];
    
    //ContentOffset 是scrollView的重要属性
    [scrollView setContentOffset:(CGPointMake(kScreenWidth * 2, 0)) animated:YES];
}
//实现缩放复原
- (void)button2Click:(UIButton *)button {
    UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:200];
    [scrollView setZoomScale:1.0 animated:YES];
}

#pragma mark - scrollView的代理

//开始减速时触发
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    NSLog(@"将要开始减速时触发");
}
//结束减速时触发(停⽌止时)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"已经结束减速时触发.");
}

//开始拖拽时触发
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    NSLog(@"将要开始拖拽时触发");
}
//将要结束拖拽时触发
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
    NSLog(@"将要结束拖拽时触发");
}
//结束拖拽时触发
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    
    NSLog(@"已经结束拖拽时触发.");
}
//修改动画时触发
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    NSLog(@"scrollView触发动画效果, 修改动画时触发");
}
//开始缩放时触发
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
  NSLog(@"将要开始缩放时触发");
}
//完成放大缩⼩触发, 结束缩放时触发
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
    NSLog(@"已经结束缩放时触发");
    float value = scrollView.zoomScale;
    NSLog(@"%f",value);
    
}

//滚动时触发(不管是移动还是缩放都触发)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"只要滚动就触发");
    CGPoint point = scrollView.contentOffset;
    NSLog(@"%f,%f",point.x,point.y);
}
//顶部回弹时触发
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {
    NSLog(@"点击顶部时回弹效果触发");
}

//设置是否可以实现点击顶部时回弹效果触发, 默认为yes.
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
    return YES;
}
//只要缩放就触发
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    NSLog(@"只要缩放就触发");
    UIImageView *imageView = (UIImageView *)[self.view viewWithTag:100];
    imageView.center = self.view.center;
}

#pragma mark - 完成缩放功能的方法(代理方法)
//指定某个UIScrollView的⼦视图可以被放大缩⼩, 这里的参数就是要缩放的scrollView
//缩放扩大这个功能是scrollView的并不是上面的imageView
//返回的view是scrollView上的子视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    UIImageView *imageView = (UIImageView *)[self.view viewWithTag:100];
    return imageView;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值