UIScrollView的常用方法,属性

示例代码

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //定义并且创建一个滚动视图
    //可以对视图的内容进行滚屏查看
    UIScrollView* sv = [[UIScrollView alloc] init];

    //设置滚屏视图的位置,使用矩形来定位视图位置
    sv.frame = CGRectMake(0, 0, 320, 576);

    //是否按照整页来滚动视图
    sv.pagingEnabled = YES;
    //是否可以开启滚动效果
    sv.scrollEnabled = YES;
    //设置画布大小,画布显示在滚动视图内部,一般大于Frame大小
    sv.contentSize = CGSizeMake(320*5, 576);
    //是否可以边缘弹动效果
    sv.bounces = YES;
    //开启横向弹动效果
    sv.alwaysBounceHorizontal = YES;
    //开启纵向弹动效果
    sv.alwaysBounceVertical = YES;
    //显示横向滚动条
    sv.showsHorizontalScrollIndicator = YES;
    //是否实现纵向滚动条
    sv.showsVerticalScrollIndicator  = YES;

    //设置背景颜色
    sv.backgroundColor = [UIColor yellowColor];
    //使用循环创建图片视图
    for (int i = 0; i < 2; i++) {
        NSString* strName = [NSString stringWithFormat:@"%d.jpg", i+1];

        UIImage* image = [UIImage imageNamed:strName];

        UIImageView* iView = [[UIImageView alloc] initWithImage:image];

        iView.frame = CGRectMake(320*i, 0, 320, 576);

        [sv addSubview:iView];
    }

    [self.view addSubview:sv];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIScrollViewDelegate>
    //当前视图控制器要实现协议的UIScrollView的协议函数
{
    //定义滚动视图成团变量
    UIScrollView* _scrollView;
}

@end
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //创建滚动视图
    _scrollView = [[UIScrollView alloc] init];

    //设定滚动视图位置
    _scrollView.frame = CGRectMake(10, 50, 300, 400);

    //取消弹动效果
    _scrollView.bounces = NO;

    //是否允许通过点击屏幕让滚动视图响应事件
    //YES:滚动视图可以接受触碰事件
    //NO:不接受触碰售事件
    //_scrollView.userInteractionEnabled = NO;

    _scrollView.contentSize = CGSizeMake(300, 400*2);

    for (int i = 0; i < 2; i++) {
        //生成图片名称
        NSString* strName = [NSString stringWithFormat:@"%d.jpg", i+1];
        UIImage* image = [UIImage imageNamed:strName];
        //创建图像视图对象
        UIImageView* iView = [[UIImageView alloc] init];
        //图像赋值
        iView.image = image;
        //设置图像在画布中的位置
        iView.frame = CGRectMake(0, 400*i, 300, 400);

        [_scrollView addSubview:iView];
    }

    [self.view addSubview:_scrollView];

    //取消按页滚动效果
    _scrollView.pagingEnabled = YES;

    //滚动视图画布的移动位置,偏移位置
    //功能:决定画布显示的最终图像结果
    _scrollView.contentOffset = CGPointMake(0, 0);

    //将当前视图控制器作为代理对象
    _scrollView.delegate = self;

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    _scrollView.contentOffset = CGPointMake(0, 0);
}


//当滚动视图移动时,只要offset坐标发生变化,都会调用此函数
// 参数:调用此协议的滚动视图对象
//使用此函数监控位置
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    //NSLog(@"y = %f", scrollView.contentOffset.y);
}

//当滚动结束时,调用此函数
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"Did End Drag!");
}

//滚动视图即将开始被拖动
//
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"Will Begin Drag");
}

//视图即将结束拖动时调用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
    NSLog(@"Will End Drag!");
}

//视图即将减速时调用
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"Will Begin Deceleratg");
}

//视图已经结束减速时调用,视图停止的瞬间调用
- (void)didReceiveMemoryWarning
{
    NSLog(@"ting");
}

@end

心得体会

  1. 应该说滚屏就好像设置了屏幕大小,而画布想象成连续的一块布垫在滚屏下面(或者说滚屏是一个框,内容已经放在了画布上,通过移动框看见不同的图片)
  2. 一旦取消触碰事件就等于是变成静止图片,难以对其操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值