首页 > 代码库 > UIScrollView

UIScrollView

UIScrollView

1,作用

UIScrollView //可以用于显示多于一个屏幕的内容,超出屏幕范围的内容可以通过滑动来查看

 

2,常见属性

CGSize contentSize : //设置 UIScrollView 的滚动范围

CGPoint contentOffset :  //UIScrollview 当前滚动的位置

UIEdgeInsets contentInset :  //这个属性可以在四周增加滚动范围

id<UIScrollViewDelegate> delegate  //代理对象

 

3,其他属性

BOOL bounces //是否有弹簧效果

BOOL scrollEnabled //是否能滚动

BOOL showsHorizontalScrollIndicator //是否显示水平方向的滚动条

BOOL showsVerticalScrollIndicator  //是否显示垂直滚动条

BOOL pagingEnabled  //是否分页
 

4, 捏合手指缩放

缩放原理详解

(1)当用户尝试缩放 UIScrollView 的时候, UIScrollView 会尝试向它的 delegate发送一条信息,询问要缩放哪一个子控件

(2)换种说法,UIScrollView 会尝试调用 delegate 的某个方法,询问要缩放哪一个子空间

 

缩放原理总结

(1)UIScrollView 先设置 delegate 对象

(2)UIScrollView 必须知道 delegate 是通过哪个方法返回需要的子控件

(3)UIScrollView 要跟 delegate 对象协商好,用哪一个方法返回需要缩放的子控件

(4)返回需要缩放子控件的方法就是:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

 

缩放的一般实现步骤(比如缩放 UIScrollView 内部的 UIimageView

(1)设置 UIScrollView 的 delegate 为控制器

(2)控制器遵守 UIScrollViewDelegate 协议  <UIScrollViewDelegate>

(3)控制器实现  -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView,返回需要缩放的子控件

 

(4)设置最大和最小缩放比例

 

 

缩放图片代码


#import "KSViewController.h"

 

@interface KSViewController ()  <UIScrollViewDelegate]] >

{

    UIImageView *_imageView;

}

@end

 

@implementation KSViewController

 

- (void)viewDidLoad

{

    [super viewDidLoad];

 

    //1,添加 UIScrollView

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: self.view.bounds];

    [self.view addSubview:scrollView];

    

    //2, 添加 imageView,并将其添加到 scrollView 中

    UIImage *image = [UIImage imageNamed:@"big.jpg"];

    

    _imageView = [[UIImageView alloc] initWithImage:image];

    //使用 initWithImage: 方法创建出来的 UIImageView ,它的宽高默认跟图片宽高一样

//    _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];

//    //设置图片

//    _imageView.image = image;

    [scrollView addSubview:_imageView];

    

    //3,设置 scrollView 的滚动内容范围

    scrollView.contentSize = image.size;

    

    //4,设置 scrollView 为控制器

    scrollView.delegate = self;

    

    //5,遵守协议

    

    //6,实现方法

    

    //7,设置最大和最小比例

    scrollView.maximumZoomScale = 2.0;

    scrollView.minimumZoomScale = 0.3;

}

 

#pragma mark - UIScrollView 的 代理方法

#pragma mark 这个方法返回的控件就能进行捏合手势缩放操作

#pragma mark 当UIScrollView尝试进行缩放的时候就会调用

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

    return _imageView;

}

 

#pragma mark 当缩放完毕的时候调用

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale

{

//    NSLog(@"结束缩放 - %f", scale);

}

 

#pragma mark 当正在缩放的时候调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView

{

//    NSLog(@"-----");

 

}

@end


 

二、代理设计模式

 

1,使用场合

(1)A 想让 B 帮忙做一些事情,就让 B 称为 A 的代理

(2)A 想通知一下 B 发生了某些事情,或者想传递一些数据给 B,就让 B 称为 A 的代理

(3)B 想监听 A 所做的一些事情,就让 B 成为 A 的代理

 

 

三、分页 UIPageControl

 

UIPageControl

 

1,常用属性

NSInteger numberOfPages    //总页数

NSInteger currentPage   //当前页码

BOOL hidesForSinglePage     //当只有一页的时候,是否要隐藏视图

UIColor *pageIndicatorTintColor     //设置非选中页的原点颜色

UIColor *currentPageIndicatorTintColor  //设置选中页的原点颜色

BOOL enabled    //禁止默认的点击功能

 

2,用 scrollView 中的代理方法实现选中页的改变

 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView  

//当scrollView正在滚动的时候调用

    int page = scrollView.contentOffset.x / scrollView.frame.size.width;

    

    // 设置页码

    _pageControl.currentPage = page;

 

}


self.automaticallyAdjustsScrollViewInsets = YES;

//ios7之后有了自动布局,默认 YES

UIScrollView