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

UIScrollView

2015-06-05 22:09 579 查看

UIScrollView

UIScrollView重中之重

一定要设置contentSize属性,ScrollView才能进行视图的滚动

// 设置contentsize
self.scrollView.contentSize = CGSizeMake(size);

如果用storyboard创建UIScrollView时,UIScrollView会自动创建两个子控件

HorizontalScrollIndicator 横向滑动条

VerticalScrollIndicator 竖向滑动条

NSLog(@"%@", self.scrollView.subviews);
打印结果:
(
"<UIImageView: 0x7fc02bd2e140; frame = (297.5 293; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x7fc02bd2dda0>>",
"<UIImageView: 0x7fc02bd2c6d0; frame = (293 297.5; 7 2.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x7fc02bd29290>>",
)


如果设置了其显示为NO,那么UIScrollView的子控件数组中就不会有这两个子控件的

self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.showsVerticalScrollIndicator = NO;


用代码创建的UIScrollView,不会有这个两个子控件,但是显示的时候会有的

contentOffset

contentOffset:位移。

表示 内容的左上角与ScrollView的左上角的X.Y的差值

// x向右位移100, y向下位移100
self.scrollView.contentOffset = CGPointMake(100, -100);

contentIntset

类似于Android的padding

移动后,内容将不能弹回原点(ScrollView的0,0,0,0),给ScrollView更大的滑动区域

// 表示上下左右各有20的padding值
self.scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);

scrollView的代理UIScrollViewDelegate

首先要设置代理

代理方法

// 设置代理,但是self必须遵循协议UIScrollViewDelegate
self.scrollView.delegate = self;

// 代理方法
// 正在滑动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
// 正在滑动缩放
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);
// 即将开始拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
// 即将结束拖拽
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
// 结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
// 滑动即将结束,滑动惯性即将减速的时候(如果立即停止了,有可能就不会调用)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
// 滑动结束,滑动惯性减速的时候(如果立即停止了,有可能就不会调用)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;

// 缩放,返回需要缩放的视图,需要配合下面两个方法使用
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
self.scrollView.minimumZoomScale = 0.2;
self.scrollView.maximumZoomScale = 1.0;

// 即将开始缩放
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);
// 即将结束缩放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;

// 是否可以滑动到顶部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
// 已经滑动到顶部
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;

弹簧效果

// 关闭弹簧效果
self.scrollView.bounces = NO;

当scrollView为单页时,不显示UIPageControl控件

// 方式一:直接设置pageCotrol的属性
self.pageCotrol.hidesForSinglePage = YES;
// 方式二:根据当前的scrollView的子控件数量来设置pageCotrol的hidden
self.pageCotrol.hidden = self.scrollView.subviews.count <= 1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: