您的位置:首页 > 产品设计 > UI/UE

iOS开发之UI_UIScrollView(上)

2015-09-22 08:43 627 查看
【UIScrollView介绍】
·UIScrollView继承自UIView

·UIScrollView 可以实现页面的水平或者垂直滚动,其原理是通过对水平坐标的偏移量或者垂直坐标的偏移量来实现的。

·由于UIScrollView继承自UIView,所以UIScrollView的创建可以根据UIView的方式创建,而且UIScrollView没有自己的自定义初始化方法。

·UIScrollView常用在轮播图的使用中,可以和NSTimer一起使用,来实现自动轮播图

【几个常见和常用的属性】
1.【contentSize】

contentSize是UIScrollView的一条重要属性,只有设置了这个属性UIScrollView才可以滚动,在设置这个属性时如果是水平滚动设置width,如果是垂直滚动设置height

scrollView.contentSize =
CGSizeMake(8 *
WIDTH, 0);// 水平滚动设置with

scrollView.contentSize= CGSizeMake(0, 8 * HEIGHT);//
垂直滚动设置height

contentsize是对滚动视图的容量大小进行设置,8 *
WIDTH是总共有8个视图。

2.【pagingEnabled】

pagingEnabled是UIScrollView中对滚动方式进行设置的属性,BOOL类型。默认为NO

scrollView.pagingEnabled =
YES// 按照页进行滚动

3.【bounces】

bounces 是UIScrollView中对边界回弹效果进行设置的属性,为BOOL类型,默认为YES。

scrollView.bounces =
NO;// 关闭边界回弹效果

4.【showsHorizontalScrollIndicator
和showsVerticalScrollIndicator】

showsHorizontalScrollIndicator和showsVerticalScrollIndicator分别是对水平和垂直滚动条状态进行设置的属性,可以设置水平和垂直滚动条是否显示,为BOOL类型,默认为YES.

scrollView.showsHorizontalScrollIndicator =
NO;// 关闭水平滚动条
scrollView.showsVerticalScrollIndicator =
NO;// 关闭垂直滚动条
5.【contentOffset】
contentOffset 是一条重要属性,用来设置偏移量,以此来实现滚动效果
scrollView.contentOffset =
CGPointMake(0,
0);// 偏移量设置
6.【scrollEnabled】

scrollEnabled用来控制滚动的允许与禁止操作

scrollView.scrollEnabled= YES;// 滚动允许

【UIScrollView的使用】
1.【创建一个新的UIScrollView】
#define WIDTH self.view.frame.size.width
#defineHEIGHT self.view.frame.size.height

UIScrollView*scrollView = [[UIScrollView
alloc] initWithFrame:CGRectMake(0,
0, WIDTH,
HEIGHT)];// 创建一个UIScrollView
scrollView.backgroundColor = [UIColor
whiteColor];// 设置背景色
[self.view
addSubview:scrollView];// 添加到当前视图控制器
[scrollView release];// 释放

2.【和NSTimer一起实现自动轮播图】

[NSTimer scheduledTimerWithTimeInterval:0.5target:self selector:@selector(changeImage) userInfo:nil repeats:YES];//
此处时间间隔有误差,不能设置太小,否则不能实现图片轮播的效果
- (void)changeImage {
// 通过tag值找scrollview
UIScrollView *scrollView = (UIScrollView *)[self.view
viewWithTag:1000];
// 通过设置偏移量,进而设置让哪一张视图显示在屏幕上,这条属性很重要
// scrollView.contentOffset =CGPointMake(scrollView.contentOffset.x + WIDTH, 0);
[scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x +
WIDTH, 0)
animated:YES];//
带有偏移量的偏移量设置
// 判断是否到当前最后一页,如果到了需要把偏移量设置到第一章图片位置
if (scrollView.contentOffset.x ==
7 * WIDTH) {
scrollView.contentOffset =
CGPointMake(0,
0);
}
}
【滚动相关的两个方法】
以下两个方法为协议方法,经常用到,需要遵守UIScrollViewDelegate协议,并且设置代理人
#pragma mark 只要一拖拽以滚动就会触发这个协议方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"%g", scrollView.contentOffset.x);
}
#pragma mark 当滑动结束,稳定了之后会被触发
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"我被触发了");
if (scrollView.contentOffset.x ==
7 * WIDTH) {// 如果偏移量为7 *
WIDTH,则把偏移量改为(0, 0),实现向右无限滚动
scrollView.contentOffset =
CGPointMake(0,
0);
}
}
说明:为了能够实现滚动效果流畅没有明显的卡顿现象,一般在向右滚动的处理中,在所有图片的最后再加一张第一幅图片,当滚动到最后一张图片时,让偏移量自动跳转到第一幅图。
// 把图片放到scrollview上
for (NSInteger i =
1; i < 8; i++) {
// 拼接图片名
NSString *imageName = [NSString
stringWithFormat:@"h%ld.jpeg", i];
// 把图片放到imageView上
UIImageView *imageView = [[UIImageView
alloc] initWithFrame:CGRectMake(WIDTH * (i -
1), 0,
WIDTH, HEIGHT)];//
此处设置坐标时要注意
imageView.image = [UIImage
imageNamed:imageName];
[scrollView addSubview:imageView];
[imageView release];
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: