UI相关 动画 动态cell UIcollectionviewiOS进阶iOS Developer

iOS回顾笔记(04) -- UIScrollView的基本使

2017-03-05  本文已影响474人  xiaoyouPrince

前言

本文主要讲述了 UIScrollView 的一些常用的属性和方法、引申了delegate的思想和UIScrollView的缩放。这篇文章着重介绍UIScrollView的基本知识,关于UIScrollView的实例使用我会在下一篇iOS回顾笔记(05)中着重讲解。

UIScrollView

UIScrollView的基本使用

UIScrollView的使用很简单,基本使用方式如下:

// 1.创建滚动视图
UIScrollView *scrollView = [[UIScrollView alloc] init];
scrollView.frame = CGRectMake(0,0,375,150);
[self addSubview:scrollView];
        
// 2. 设置内容
[scrollView addSubview:[UIImageView new]];
        
// 3. 设置滚动范围
scrollView.contentSize = CGSizeMake(ImageViewCount * self.bounds.size.width, 0);

UIScrollView的显示内容的小细节

UIScrollView无法滚动可能的原因

UIScrollView的常用属性

@property(nonatomic) CGPoint contentOffset;  // default CGPointZero

contentOffset用来表示UIScrollView的滚动位置。

具体为内容原点与UIScrollView左上角原点的间距值。

@property(nonatomic) CGPoint contentSize;  // default CGSizeZero

contentSize:表示UIScrollView的内容的尺寸,用来设置UIScrollView的滚动范围。

@property(nonatomic) UIEdgeInsets contentInset; // default UIEdgeInsetsZero. add additional scroll area around content

contentInset:可以在UIScrollView的四周增加额外的滚动区域。可以用来避免UIScrollView的内容被其他控件挡住。

以上属性效果如图:

Snip20170305_3.png

UIScrollView的其他属性

@property(nonatomic) BOOL bounces; // default YES. if YES, bounces past edge of content and back again
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled; // default YES. turn off any dragging temporarily
@property(nonatomic) BOOL showsHorizontalScrollIndicator; // default YES. show indicator while we are tracking. fades out after tracking
@property(nonatomic) BOOL showsVerticalScrollIndicator; // default YES. show indicator while we are tracking. fades out after tracking
@property(nullable,nonatomic,weak) id<UIScrollViewDelegate> delegate; // default nil. weak reference

UIScrollView的Delegate

Deleagate 是一个很重要的属性,同时也是一个重要的知识点,所以拿出来着重说一下。

代理思想的引入

实际上UIScrollView通知delegate自己的相关状态就是通过给代理发消息实现的如图:


Snip20170305_4.png

所以想成为UIScrollView的代理是需要遵循如下条件的

@property(nullable,nonatomic,weak) id<UIScrollViewDelegate> delegate;

设置UIScrollView的步骤

@interface ViewController ()<UIScrollViewDelegate>
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    // 监听代码
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2){
    // 监听代码
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    // 监听代码
}

···

UIScrollView内容的缩放

UIScrollView不仅能够展示大量的内容还能进行内容的缩放。

常见场景

图库里面的图片我们可以通过手势来进行缩放

Snip20170305_6.png

要实现这样的功能,我们只需要将图片放到UIScrollView中去,然后设置缩放比例和要缩放的内容

缩放原理

Snip20170305_7.png

缩放实现步骤

缩放相关的两个方法

// 将要开始缩放
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2); // called before the scroll view begins zooming its content

// 结束缩放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; // scale between minimum and maximum. called after any 'bounce' animations

小结

UIScrollView是iOS开发中常常用到的一个控件,通常用来展示比较多的内容,我们可以通过给他设置代理实现它的代理方法进行监听,通过监听不同的状态来做对应的一些操作。
它可以监听用户手势来缩放自己内部子控件。

上一篇下一篇

猜你喜欢

热点阅读