UIScroollView的使用和注意点

时间:2022-03-07 02:22:00

UIScrollView

通常称为滚动视图,我们可以用它来实现很多的效果,如图片浏览,图片缩放,添加定时器后可以制作成图片轮播器等等

UIScrollView的使用步骤

  • 1.创建UIScrollView
UIScrollView *scrollView = [UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200); 

  • 2.给UIScrollView添加子控件
UIImageView *imgView = [UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]; [scrollView addSubview:imgView]; 

  • 3.设置UIScrollview的contentSize
scrollView.contentSize = imgView.image.size; 

  • UIScrollView不能滚动的几种情况
    • 1.没有设置contentSize
    • 2.scrollEnabled = NO
    • 3.userInteractionEnabled = NO
    • 注意点:userInteractionEnabled不是Disabled, 他们两有本质的区别
      • Disabled代表控件不能使用, 状态是Disabled状态
      • userInteractionEnabled代表控件是否可以交互
    • 注意点:在企业开发中, 千万不要使用subviews来获取UIScrollview中的子控件
      • 因为subviews中包含了UIScrollview中的滚动条, 而且滚动条的顺序是不确定的

UIScrollview常见属性

  • scrollView.bounces = YES;

    • 用于设置UIScrollview是否有回弹效果
  • scrollView.scrollEnabled = YES;

    • 设置是否可以滚动
  • scrollView.userInteractionEnabled = YES;

    • 设置是否可以与用户进行交互,此项设置为否,即使上面设置为可以滚动的也不能滚动
  • scrollView.showsHorizontalScrollIndicator = NO;

    • 隐藏水平滚动条
  • scrollView.showsVerticalScrollIndicator = YES;

    • 显示垂直滚动条
  • scrollView.alwaysBounceHorizontal = YES;

    • 水平回滚效果
  • scrollView.alwaysBounceVertical = YES;

    • 垂直回滚效果 应用场景:下拉刷新
  • scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; // 设置滚动条的样式

  • contentSize
    • 用于设置scrollView的滚动区域
  • contentOffset
    • 作用: 用于设置内容的滚动偏移位
    • 计算公式: 移动的距离 = "控件的左上角" - "内容的左上角"
      • 最好先理解iOS的坐标系, 然后再理解公式
  • 可以利用setContentOffset:offset animated:YES方法设置偏移量, 达到在点击按钮切换视图的目的

  • contentInset

    • 作用: 在contentSize周围添加额外的滚动区域
    • 应用场景: 避免UIScrollview中的内容被遮挡 objc self.tableView.contentInset = UIEdgeInsetsMake( 100, 0, 0, 0); // UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right):上左下右
  • 注意查看PPT中的对比图理解: contentSize/contentOffset/contentInset/frame

    UIScroollView的使用和注意点

    常用方法

  • 设置偏移时带有动画效果

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated; // animate at constant velocity to new offset 

  • 如何监听一个控件
    • 首先需要查看该控件的头文件, 看它继承于谁
      • 如果继承于UIControl, 那么就可以通过addTarget来监听
      • 如果不是继承于UIControl, 那么就必须通过代理来监听