UIKit框架- 08.UIScrollView基本使用

1.概述

  • 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限
  • 通常在展示的内容超出屏幕的时候,用户可以通过手势滑动来查看屏幕之外的内容
  • 我们一般显示内容是在控制器的UIView上显示的,但是UIView不具备滚动(滑动)功能,不适合显示超出屏幕的内容
  • 在IOS中,苹果为我们提供了具备滚动功能的视图控件UIScrollView,可以用来展示大量的内容,我们可以通过滚动查看所有的内容

2.基本属性

// 0.在Storyboard中拖拽了UIScrollView到视图上,并将UIScrollView和控制器中的属性SC连线
@property (weak, nonatomic) IBOutlet UIScrollView *sc;
// 1.创建子控件
// 根据图片创建UIImageView,一创建出来UIImageView的尺寸就是图片的尺寸
    UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"big"]];
// 2.添加到sc中
    [self.sc addSubview:iv];

/******************SC基本属性****************************/
// 3.设置contentSize滚动区域(滚动区域为iv的size,iv的size由图片大小决定,即最终SC的滚动位置为整个图片的size)
    self.sc.backgroundColor = [UIColor yellowColor];
    self.sc.contentSize = iv.frame.size;

// 4.设置滚动条样式,以及滚动条不可见,滚动条为SC的子控件,设置滚动条不可见,即将滚动条从SC上移除(在没有移除滚动条的情况下,建议不要使用subViews提取scrollView的子控件,可能取出的事滚动条)
    /**
     UIScrollViewIndicatorStyleDefault,     // 默认是黑的白底
     UIScrollViewIndicatorStyleBlack,       // 黑色滚动条
     UIScrollViewIndicatorStyleWhite        // 小的白色滚动条
     */
    self.sc.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    self.sc.showsHorizontalScrollIndicator = NO;
    self.sc.showsVerticalScrollIndicator = NO;

    // 5.1 默认情况下只要设置了contentSize属性就会有回弹效果,在没有设置contentSize属性的情况下我们也可以设置默认情况下的回弹效果
        self.sc.alwaysBounceHorizontal = YES;
        self.sc.alwaysBounceVertical = YES;
    // 5.2 设置弹簧效果无效
    self.sc.bounces = NO;

    // 6.SC不能滚动的情况
    // 6.1没有设置contentSize属性
    // 6.2scrollEnabled属性为NO
    // 6.3userInteractionEnabled属性为NO
//    self.sc.scrollEnabled = NO;
//    self.sc.userInteractionEnabled = NO;

    // 7.设置SC的contentInset属性,可以在contentSize四周设置额外的滚动区域
    self.sc.contentInset = UIEdgeInsetsMake(10, 20, 30, 40);

3.contentOffset属性

  • contentOffset属性就是位偏移,其实就是设置scrollView的滚动位置
  • contentOffset是一个CGPoint的结构体,它以滚动区域的左上角为坐标原点,所以设置scrollView的contentOffset属性就是设置它在滚动视图上的坐标位置
  • 代码演示
// 通过动画设置SC滚动到x为100的位置
/*
    [UIView animateWithDuration:1.0 animations:^{
        self.sc.contentOffset = CGPointMake(100, 0);
    }];
*/
    // ScollView本身有提供滚动的动画方法(建议在SC中使用自带的动画方法)
    // 取出Scrollview的size
    CGFloat scollViewW = self.sc.frame.size.width;
    CGFloat scollViewH = self.sc.frame.size.height;
    // 取出内容视图的size
    CGFloat contentW = self.sc.contentSize.width;
    CGFloat contentH = self.sc.contentSize.height;
    // 滚动到左上角
//    [self.sc setContentOffset:CGPointMake(0, 0) animated:YES];
    // 滚动到左下角
//    [self.sc setContentOffset:CGPointMake(0, contentH - scollViewH) animated:YES];
    // 滚动到右上角
//    [self.sc setContentOffset:CGPointMake(contentW - scollViewW, 0) animated:YES];
    // 滚动到右下角
    [self.sc setContentOffset:CGPointMake(contentW - scollViewW, contentH - scollViewH) animated:YES];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值