博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之CAScrollLayer属性简介和使用
阅读量:6684 次
发布时间:2019-06-25

本文共 2318 字,大约阅读时间需要 7 分钟。

1、CAScrollLayer的简介

  CAScrollLayer用于显示一个滑动图层的一部分,可以确定滑动方向和可视区域面积,限制不滑出区域外!相关属性如下:其中

/* Scroll the contents of the layer to ensure that rect 'r' is visible. */- (void)scrollToRect:(CGRect)r;

  不是很理解,只做自己的见解!

#import 
NS_ASSUME_NONNULL_BEGINCA_CLASS_AVAILABLE (10.5, 2.0, 9.0, 2.0)@interface CAScrollLayer : CALayer//改变layer的原点位置到指定点- (void)scrollToPoint:(CGPoint)p;//改变layer的可视区域和原点限制 r: CGRectMake(x, y, width, height)//1、layer的bounds:{
{x1, y1}, {width1, height1}}, 原点限制x1<=x && y1<=y//2、如果layer的width >= width1,height >= height1,原点移动到指定位置就不能滑动//如果with

 

2、CAScrollLayer的简单使用

CALayer *contentLayer = [CALayer layer];    contentLayer.backgroundColor = [UIColor whiteColor].CGColor;    contentLayer.contents = (id)[UIImage imageNamed:@"pic1.jpg"].CGImage;    contentLayer.frame = CGRectMake(0, 0, CScreenWidth, 300);        CAScrollLayer *scrollLayer = [CAScrollLayer layer];    scrollLayer.frame = CGRectMake(50, 50, CScreenWidth-100,200);    [scrollLayer addSublayer:contentLayer];    scrollLayer.scrollMode = kCAScrollBoth;    scrollLayer.backgroundColor = [UIColor redColor].CGColor;    [self.showView.layer addSublayer:scrollLayer];//    scrollLayer.masksToBounds = NO;//默认是YES,改为NO自己可能好懂些    self.layer = scrollLayer;    [self.showView addGestureRecognizer:[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)]];- (void)panGesture:(UIPanGestureRecognizer *)pan{    CGPoint trans = [pan translationInView:self.showView];    CGPoint ori =self.layer.bounds.origin;    ori = CGPointMake(ori.x-trans.x, ori.y-trans.y);    [self.layer scrollPoint:ori];    [self.layer scrollToRect:CGRectMake(-50, -50, 100, 100)];    NSLog(@"=======%@",NSStringFromCGRect([self.layer visibleRect]));    [pan setTranslation:CGPointZero inView:self.showView];}

  (1)原点(-50,-50),所以最大的时候左边和上面有50的距离,最小可视区域宽高是(-50+100,-50+100)

 效果图

[self.layer scrollToRect:CGRectMake(-50, -50, 100, 100)]

 

  (2)原点(0,0),所以最大的时候左边和上面有0的距离,最小可视区域宽高是(0+100,0+100)

 

[self.layer scrollToRect:CGRectMake(0, 0, 100, 100)]

 

  (3)原点(100,100),所以最大的时候左边和上面可以移动100的距离,最小可视区域宽高是(100+214,100+100)

 scrollLayer.masksToBounds = YES;

 

 scrollLayer.masksToBounds = NO;

[self.layer scrollToRect:CGRectMake(100, 100, 214, 100)]

 

  (4)不设置scrollTpRect效果图

 

  常用的是第三种,使大图layer滑动不会到边界外面!

转载于:https://www.cnblogs.com/xianfeng-zhang/p/7765193.html

你可能感兴趣的文章
Hyper-V 2016 系列教程4 Hyper-V 虚拟机的新建
查看>>
Flask开发
查看>>
trickle 限制用户空间带宽
查看>>
SQL事务
查看>>
GRE配置案例实现远程网络通信
查看>>
不用linux作为桌面的N个理由
查看>>
Rabbitmq学习之路3-cluster
查看>>
iptables实现NAT(网络搜索整理)
查看>>
关于ip地址
查看>>
ASP.NET自定义404和500错误页面
查看>>
OpenGL学习(七)纹理映射
查看>>
一些必不可少的Sublime Text 2插件
查看>>
测试项目
查看>>
第一章ASP.NET SignalR简介
查看>>
SSH
查看>>
41-50(UIApplication和delegate,UIApplicationMain,UIWindow,程序启动的完整过程,控制器view的延迟加载)...
查看>>
HTTP服务器实现
查看>>
2017.03
查看>>
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
查看>>
思科模拟器Packet Tracer的使用
查看>>