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];
}
·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];
}
相关文章推荐
- easyUI之datebox
- IOS巅峰之UICollectionView详解
- Servlet中The requested resource is not available错误
- 【android】uiselectoer 自动化测试
- UIAlertAction 和UIAlertController (UIAlertViewUIActionSheet)
- The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server
- UIButton的竖排图片和文本
- QtQuick学习笔记(三)组件
- UITouch
- 【UIKit-124-2】#import <UIKit/UIView.h>
- 认识基本的UI资源
- POJ 1904 King's Quest(强连通分量+匹配)
- Distinct Subsequences——Leetcode
- Git可视化极简易教程 — Git GUI使用方法
- does not contain bitcode. You must rebuild it with
- 远丰MallBuilder:促进线上线下融合发展
- 上海远丰ExpBuilder :助企业布局跨境电商
- GCD-创建queue的特殊参数DISPATCH_QUEUE_SERIAL
- 【UIKit-124-1】#import <UIKit/UIView.h>
- 在UITextView上写入手机图库中的图片