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

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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息