首页 > 代码库 > 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 //是否显示垂直滚动条
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