CAScrollLayer和UIScrollView的显示功能是一样的,可以滚动显示比窗口更大的内容,只是CAScrollLayer不能响应交互事件,并且不会显示滚动条,内容的滚动要通过代码进行控制。
主要参数说明:
scrollMode
允许滚动的方向
kCAScrollNone 禁止滚动
kCAScrollVertically 只允许垂直滚动
kCAScrollHorizontally 只允许水平滚动
kCAScrollBoth 可以随便滚动,默认
visibleRect
可见区域范围
//1.创建CAScrollLayer
self.scrollLayer = [CAScrollLayer layer];
self.scrollLayer.scrollMode = kCAScrollBoth;
self.scrollLayer.frame = CGRectMake(120, 150, 100, 100);
//2.创建内容layer
CAShapeLayer *contentLayer = [CAShapeLayer layer];
contentLayer.frame = CGRectMake(0, 0, 213, 108);
contentLayer.contents = (id)[UIImage imageNamed:@"ss(4)"].CGImage;
//3.添加图层
[self.scrollLayer addSublayer:contentLayer];
[self.view.layer addSublayer:self.scrollLayer];
//4.添加手势
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self.view addGestureRecognizer:pan];
通过在view上添加拖拽手势,通过scrollToPoint:
来控制显示的区域的位置。
- (void)handlePan:(UIPanGestureRecognizer *)gesture {
CGPoint translation = [gesture translationInView:self.view];
CGPoint origin = self.scrollLayer.bounds.origin;
origin = CGPointMake(origin.x-translation.x, origin.y-translation.y);
[self.scrollLayer scrollToPoint:origin];
translation = CGPointZero;
[gesture setTranslation:CGPointZero inView:self.view];
}

网友评论