美文网首页iOS开发
UIScrollView的介绍和原理

UIScrollView的介绍和原理

作者: 追逐_chase | 来源:发表于2019-04-12 17:00 被阅读2次

UIScrollView 滚动视图

常用的属性

  • 一下3个比较中的属性
  • contentOffset 内容的偏移量
    • 控制内容滚动的位置
    • 可以获取到 内容滚动的位置
    • contentSize.Width - scrollView.frame.Widtn 就是在X抽的偏移量
  • contentSize 内容视图的大小
  • contentInset 内部的内边距
 // 1.UIImageView
    UIImage *image = [UIImage imageNamed:@"minion"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self.scrollView addSubview:imageView];
    
    // 2.设置contentSize 内容的size
    self.scrollView.contentSize = image.size;
    //设置 弹簧效果
    self.scrollView.bounces = YES;
    //设置 水平 和 垂直 方向的弹簧效果 o默认是NO
    //这2个属性一般用于 上啦和下拉 刷新的控件显示
    self.scrollView.alwaysBounceVertical = YES;
    self.scrollView.alwaysBounceHorizontal = YES;
    //是否显示滚动条
    self.scrollView.showsVerticalScrollIndicator = YES;
    self.scrollView.showsHorizontalScrollIndicator = YES;
    //内容便宜量,
    //作用:
    // 控制内容滚动的位置
    // 可以获取到 内容滚动的位置
    self.scrollView.contentOffset = CGPointMake(200, 100);
    //设置代理  组训协议
    self.scrollView.delegate = self;

代理 方法

//开始拖拽的时候调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    
}
// scrollView会自动调用 只要滚动就会调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
}

// 拖拽结束
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    
}


// 滚动结束
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
    
}


//手势缩放代理方法  记得设置缩放比例

- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    
    UIView *view = [[UIView alloc] init];
    //返回需要缩放的子控件
    return view;
}


scrollView的原理

  • scrollView之所以可以滚动式基于bounds这个属性的变化
  • scrollView继承与UIView

bounds属性的深入了解

  • 之前我们对bounds了解是:以自己左上角为原点(0,0),并可以设置自身尺寸大小

  • frame:决定一个视图在它父视图上的显示区域和大小,以父视图左上角为原点(0,0)

  • 正常bounds没有更改的时候

//俯视图View 没有设置bounds属性
UIView *boundsView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 270, 300)];
boundsView.backgroundColor = [UIColor orangeColor];
 [self.view addSubview:boundsView];
 
 //子视图
  UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 50, 50)];
 subView.backgroundColor = [UIColor redColor];
 [boundsView addSubview:subView];

下图:

bounds_01.png
  • 更改boundsView 视图的 bounds属性
    更改bounds属性.png
bounds_02.png

利用原理自己定义个一UIScrollView 下面介绍

相关文章

网友评论

    本文标题:UIScrollView的介绍和原理

    本文链接:https://www.haomeiwen.com/subject/rixvvqtx.html