iOS界面编程-UIScrollView
2015-10-20 21:53
429 查看
一、介绍
UIScrollView继承自UIView,它为大于窗口大小的内容提供显示支持。用户可以通过滑动屏幕滚动其它内容还以通过手指捏放大缩小显示内容。UIScroll是一些UIKit的超类,包括UITableView及UITextView
二、相关方法和属性
1.管理内容的显示
a .设置contentView的相对于scrollView的偏移量,可以理解为scrollview当前显示区域顶点相对于frame顶点的偏移量。
- (void)setContentOffset:(CGPoint)contentOffset
animated:(BOOL)animated
b、设置scrollView 内容视图大小,即可显示的区域。
@property(nonatomic)
CGSize contentSize
c、@property(nonatomic)
UIEdgeInsets contentInset
contentInset 是scrollview中contentView.frame.origin与scrollview.frame.origin的关系,比如contentView的frame为(0,30,320,480),那么contentInset则为(0, 30),
2.管理滚动
a、@property(nonatomic,
getter=isScrollEnabled)
BOOL scrollEnabled 可设置是否可以滚动,默认为yes
b.@property(nonatomic,
getter=isDirectionalLockEnabled)
BOOL directionalLockEnabled ,设置为YES滚动某个方向时,另一个方向不能滚动。默认为NO,两个方向都可以同时滚动
c、@property(nonatomic)
BOOL scrollsToTop 布尔值判断滑动到顶点的手势是否可用。
d.- (void)scrollRectToVisible:(CGRect)rect
animated:(BOOL)animated指定坐标空间可见
e。@property(nonatomic,
getter=isPagingEnabled)
BOOL pagingEnabled 默认NO,当设置为YES时,可用
f、@property(nonatomic)
BOOL bounces,设置是否有反弹效果,默认为YES
g、@property(nonatomic)
BOOL alwaysBounceVertical 设置即使内容小于scrollveiw ,水平方向总是有反弹效果,默认是NO
h、@property(nonatomic)
BOOL alwaysBounceHorizontal设置即使内容小于scrollveiw ,垂直方向总是有反弹效果,默认是NO
可以由子类继承,当在显示内容按下手指时,定制默认的行为。
- (BOOL)touchesShouldBegin:(NSSet<UITouch
*> * nonnull)touches withEvent:(UIEvent
* nullable)event inContentView:(UIView
* nonnull)view
- (BOOL)touchesShouldCancelInContentView:(UIView
* nonnull)view
@property(nonatomic)
BOOL canCancelContentTouches
@property(nonatomic)
BOOL delaysContentTouches
@property(nonatomic)
CGFloat decelerationRate
@property(nonatomic,
readonly, getter=isDragging)
BOOL dragging
@property(nonatomic,
readonly, getter=isTracking)
BOOL tracking 判断用户已经按下还没有开始拖
@property(nonatomic,
readonly, getter=isDecelerating)
BOOL decelerating 判断用户是否拖拽结束,但滚动还没有结束
3、管理滑动指示器
a指示器类型@property(nonatomic)
UIScrollViewIndicatorStyle
indicatorStyle有三种类型
b指示器@property(nonatomic)
UIEdgeInsets scrollIndicatorInsets
c@property(nonatomic)
BOOL showsHorizontalScrollIndicator 是否显示水平指示器,默认YES
d@property(nonatomic)
BOOL showsVerticalScrollIndicator 是否显示垂直指示器,默认NO
e- (void)flashScrollIndicators
@property(nonatomic,
readonly)
UIPanGestureRecognizer *panGestureRecognizer
@property(nonatomic,
readonly)
UIPinchGestureRecognizer *pinchGestureRecognizer
- (void)zoomToRect:(CGRect)rect
animated:(BOOL)animated
@property(nonatomic)
CGFloat zoomScale
- (void)setZoomScale:(CGFloat)scale
animated:(BOOL)animated
@property(nonatomic)
CGFloat maximumZoomScale
@property(nonatomic)
CGFloat minimumZoomScale
4、管理委托
@property(nonatomic,
weak) id<
UIScrollViewDelegate >
delegate
5、管理键盘
表明拖拽过程中,键盘消失的模式@property(nonatomic) UIScrollViewKeyboardDismissMode keyboardDismissMode
三实际例子
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(50, 80, 150, 300)];
scrollView.backgroundColor = [UIColor grayColor];
[scrollView setContentOffset:CGPointMake(14, 14) animated:YES];
scrollView.contentSize=CGSizeMake(600, 500);
UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 150, 500)];
contentView.backgroundColor = [UIColor greenColor];
[scrollView setContentOffset:CGPointMake(30, 0) animated:YES];
[scrollView setContentInset:UIEdgeInsetsMake(10, 10, 0, 0)];
// scrollView.scrollEnabled = NO;
// scrollView.directionalLockEnabled = YES;
[scrollView scrollRectToVisible:CGRectMake(300, 100, 50, 50) animated:YES];
[scrollView addSubview:contentView];
// scrollView.bounces= NO;
[self.view addSubview:scrollView]
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 64, scrollViewWidth, scrollViewHeight)];
_scrollView.backgroundColor = [UIColor redColor];
[self.view addSubview:_scrollView];
_scrollView.contentSize = CGSizeMake(scrollViewWidth * 5, scrollViewHeight);
_scrollView.pagingEnabled = YES;
_scrollView.maximumZoomScale = 3;
_scrollView.minimumZoomScale = 0.5;
_scrollView.delegate = self;
_contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, scrollViewWidth * 5, scrollViewHeight)];
_contentView.backgroundColor = [UIColor greenColor];
[_scrollView addSubview:_contentView];
for (int i = 0; i < 5; i++) {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(i * scrollViewWidth , 0, scrollViewWidth, scrollViewHeight)];
if (i % 2 ==0) {
view.backgroundColor = [UIColor blackColor];
}else {
view.backgroundColor = [UIColor whiteColor];
}
[_contentView addSubview:view];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, scrollViewWidth, scrollViewHeight)];
imageView.backgroundColor = [UIColor clearColor];
NSString *imageName = [NSString stringWithFormat:@"bg%i.png", i+1];
imageView.image = [UIImage imageNamed:imageName];
imageView.contentMode = UIViewContentModeScaleAspectFit;
[view addSubview:imageView];
UIScrollView继承自UIView,它为大于窗口大小的内容提供显示支持。用户可以通过滑动屏幕滚动其它内容还以通过手指捏放大缩小显示内容。UIScroll是一些UIKit的超类,包括UITableView及UITextView
二、相关方法和属性
1.管理内容的显示
a .设置contentView的相对于scrollView的偏移量,可以理解为scrollview当前显示区域顶点相对于frame顶点的偏移量。
- (void)setContentOffset:(CGPoint)contentOffset
animated:(BOOL)animated
b、设置scrollView 内容视图大小,即可显示的区域。
@property(nonatomic)
CGSize contentSize
c、@property(nonatomic)
UIEdgeInsets contentInset
contentInset 是scrollview中contentView.frame.origin与scrollview.frame.origin的关系,比如contentView的frame为(0,30,320,480),那么contentInset则为(0, 30),
2.管理滚动
a、@property(nonatomic,
getter=isScrollEnabled)
BOOL scrollEnabled 可设置是否可以滚动,默认为yes
b.@property(nonatomic,
getter=isDirectionalLockEnabled)
BOOL directionalLockEnabled ,设置为YES滚动某个方向时,另一个方向不能滚动。默认为NO,两个方向都可以同时滚动
c、@property(nonatomic)
BOOL scrollsToTop 布尔值判断滑动到顶点的手势是否可用。
d.- (void)scrollRectToVisible:(CGRect)rect
animated:(BOOL)animated指定坐标空间可见
e。@property(nonatomic,
getter=isPagingEnabled)
BOOL pagingEnabled 默认NO,当设置为YES时,可用
f、@property(nonatomic)
BOOL bounces,设置是否有反弹效果,默认为YES
g、@property(nonatomic)
BOOL alwaysBounceVertical 设置即使内容小于scrollveiw ,水平方向总是有反弹效果,默认是NO
h、@property(nonatomic)
BOOL alwaysBounceHorizontal设置即使内容小于scrollveiw ,垂直方向总是有反弹效果,默认是NO
可以由子类继承,当在显示内容按下手指时,定制默认的行为。
- (BOOL)touchesShouldBegin:(NSSet<UITouch
*> * nonnull)touches withEvent:(UIEvent
* nullable)event inContentView:(UIView
* nonnull)view
- (BOOL)touchesShouldCancelInContentView:(UIView
* nonnull)view
@property(nonatomic)
BOOL canCancelContentTouches
@property(nonatomic)
BOOL delaysContentTouches
@property(nonatomic)
CGFloat decelerationRate
@property(nonatomic,
readonly, getter=isDragging)
BOOL dragging
@property(nonatomic,
readonly, getter=isTracking)
BOOL tracking 判断用户已经按下还没有开始拖
@property(nonatomic,
readonly, getter=isDecelerating)
BOOL decelerating 判断用户是否拖拽结束,但滚动还没有结束
3、管理滑动指示器
a指示器类型@property(nonatomic)
UIScrollViewIndicatorStyle
indicatorStyle有三种类型
b指示器@property(nonatomic)
UIEdgeInsets scrollIndicatorInsets
c@property(nonatomic)
BOOL showsHorizontalScrollIndicator 是否显示水平指示器,默认YES
d@property(nonatomic)
BOOL showsVerticalScrollIndicator 是否显示垂直指示器,默认NO
e- (void)flashScrollIndicators
@property(nonatomic,
readonly)
UIPanGestureRecognizer *panGestureRecognizer
@property(nonatomic,
readonly)
UIPinchGestureRecognizer *pinchGestureRecognizer
- (void)zoomToRect:(CGRect)rect
animated:(BOOL)animated
@property(nonatomic)
CGFloat zoomScale
- (void)setZoomScale:(CGFloat)scale
animated:(BOOL)animated
@property(nonatomic)
CGFloat maximumZoomScale
@property(nonatomic)
CGFloat minimumZoomScale
4、管理委托
@property(nonatomic,
weak) id<
UIScrollViewDelegate >
delegate
5、管理键盘
表明拖拽过程中,键盘消失的模式@property(nonatomic) UIScrollViewKeyboardDismissMode keyboardDismissMode
三实际例子
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(50, 80, 150, 300)];
scrollView.backgroundColor = [UIColor grayColor];
[scrollView setContentOffset:CGPointMake(14, 14) animated:YES];
scrollView.contentSize=CGSizeMake(600, 500);
UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 150, 500)];
contentView.backgroundColor = [UIColor greenColor];
[scrollView setContentOffset:CGPointMake(30, 0) animated:YES];
[scrollView setContentInset:UIEdgeInsetsMake(10, 10, 0, 0)];
// scrollView.scrollEnabled = NO;
// scrollView.directionalLockEnabled = YES;
[scrollView scrollRectToVisible:CGRectMake(300, 100, 50, 50) animated:YES];
[scrollView addSubview:contentView];
// scrollView.bounces= NO;
[self.view addSubview:scrollView]
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 64, scrollViewWidth, scrollViewHeight)];
_scrollView.backgroundColor = [UIColor redColor];
[self.view addSubview:_scrollView];
_scrollView.contentSize = CGSizeMake(scrollViewWidth * 5, scrollViewHeight);
_scrollView.pagingEnabled = YES;
_scrollView.maximumZoomScale = 3;
_scrollView.minimumZoomScale = 0.5;
_scrollView.delegate = self;
_contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, scrollViewWidth * 5, scrollViewHeight)];
_contentView.backgroundColor = [UIColor greenColor];
[_scrollView addSubview:_contentView];
for (int i = 0; i < 5; i++) {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(i * scrollViewWidth , 0, scrollViewWidth, scrollViewHeight)];
if (i % 2 ==0) {
view.backgroundColor = [UIColor blackColor];
}else {
view.backgroundColor = [UIColor whiteColor];
}
[_contentView addSubview:view];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, scrollViewWidth, scrollViewHeight)];
imageView.backgroundColor = [UIColor clearColor];
NSString *imageName = [NSString stringWithFormat:@"bg%i.png", i+1];
imageView.image = [UIImage imageNamed:imageName];
imageView.contentMode = UIViewContentModeScaleAspectFit;
[view addSubview:imageView];
相关文章推荐
- GUI - Web前端开发框架
- 评价ui设计作品好坏的八个标准(界面/交互设计研究)
- C#使用委托(delegate)实现在两个form之间传递数据的方法
- 为Yahoo! UI Extensions Grid增加内置的可编辑器
- Cocos2d-x UI开发之文本类使用实例
- winform异型不规则界面设计的实现方法
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- UI Events 用户界面事件
- Query中click(),bind(),live(),delegate()的区别
- 基于jQuery UI CSS Framework开发Widget的经验
- jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
- jQuery中 delegate使用的问题
- 浅谈jquery中delegate()与live()
- 由点击页面其它地方隐藏div所想到的jQuery的delegate
- jQuery UI设置固定日期选择特效代码分享
- jQuery UI的Dialog无法提交问题的解决方法
- jQuery ui实现动感的圆角渐变网站导航菜单效果代码
- 关于jQuery UI 使用心得及技巧
- jQuery ui 1.7更新小结
- 从零开始学习jQuery (十) jQueryUI常用功能实战