CALayer的mask属性
2024-08-25 16:47:37
可以对图层按path进行指定裁剪
//#import "ViewController.h"
//
//@interface ViewController ()
//
//@end
//
//@implementation ViewController
//
//- (void)viewDidLoad {
//
// [super viewDidLoad];
//
// // 创建一个蓝色的Layer
// CALayer *foregroundLayer = [CALayer layer];
// foregroundLayer.bounds = CGRectMake(0, 0, 100, 100);
// foregroundLayer.backgroundColor = [UIColor redColor].CGColor;
//
// // 创建一个路径
// UIBezierPath *apath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 20, 60, 60)];
//
// // 创建maskLayer
// CAShapeLayer *maskLayer = [CAShapeLayer layer];
// maskLayer.path = apath.CGPath;
// maskLayer.fillColor = [UIColor greenColor].CGColor;
// maskLayer.fillRule = kCAFillRuleEvenOdd;
//
// // 设置位置
// foregroundLayer.position = self.view.center;
// // 设置mask
// foregroundLayer.mask = maskLayer;
//
// [self.view.layer addSublayer:foregroundLayer];
//
//}
//
//@end #import "ViewController.h" static CGFloat num; @interface ViewController () @property (nonatomic, strong) CAShapeLayer *circle;
@property (nonatomic, strong) CADisplayLink *link; @end @implementation ViewController @synthesize circle; - (void)viewDidLoad { [super viewDidLoad]; // //创建一个CAShape
// CALayer *bgLayer = [CALayer layer];
//
// //设置大小颜色和位置
// bgLayer.bounds = CGRectMake(0, 0, 200, 200);
// bgLayer.backgroundColor = [UIColor redColor].CGColor;
// bgLayer.position = self.view.center; CAGradientLayer *bgLayer = [CAGradientLayer layer];
bgLayer.bounds = CGRectMake(, , , );
bgLayer.position = self.view.center; bgLayer.colors = [NSArray arrayWithObjects:
(id)[UIColor colorWithRed: green:/255.0 blue:/255.0 alpha:1.0].CGColor,
(id)[UIColor colorWithRed: green:/255.0 blue:/255.0 alpha:1.0].CGColor,
(id)[UIColor whiteColor].CGColor, nil]; //创建一个CAShapeLayer作为MaskLayer
circle = [CAShapeLayer layer]; //设置路径
circle.path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(, )
radius:
startAngle:
endAngle: * M_PI
clockwise:YES].CGPath;
// circle.lineWidth = 5;
// circle.fillColor = [UIColor greenColor].CGColor;
// circle.fillRule = kCAFillRuleEvenOdd; //设置maskLayer
bgLayer.mask = circle; [self.view.layer addSublayer:bgLayer]; //添加计时器 这个只是一个附加动画
//self.link = [CADisplayLink displayLinkWithTarget:self selector:@selector(action)];
//[self.link addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
} - (void)action { num ++; circle.path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(, )
radius: + num
startAngle:
endAngle: * M_PI
clockwise:YES].CGPath; if (num > ) {
[self.link invalidate];
}
} @end
最新文章
- 软件工程(QLGY2015)博客点评总结
- [moka同学收藏]Vim升华之树形目录插件NERDTree安装图解
- MySQL5.6 PERFORMANCE_SCHEMA 说明
- 数据结构之KMP算法next数组
- 快速上手RaphaelJS-Instant RaphaelJS Starter翻译(一)
- spring常用注解
- Flowplayer-Setup
- CCF推荐国际学术期刊
- STL六大组件之——仿函数偷窥
- app配置智能硬件的解决方案
- JQuery实现页面Loading效果
- maven安装步骤
- How to detect and avoid memory and resources leaks in .NET applications
- (转)委托的N种写法,你喜欢哪种?
- How to make vcredist_x86 reinstall only if not yet installed
- [Angular Tutorial] 3-Components
- JS键盘事件对象之keyCode、charCode、which属性对比
- 带你简单了解python协程和异步
- LightningChart最新版 v.8.3 全新发布,新功能使用教程。
- /usr/lib/uwsgi/plugins/python_plugin.so: cannot open shared object file: No such file or directory
热门文章
- vs2019里没有linq to sql或EF工具,导致dbml或者edmx无法通过设计器浏览
- composer的自动加载机制(autoload)
- Win7崩溃程序目录
- 【报错】An error happened during template parsing (template: ";class path resource [templates/adminManageCourse.html]";)
- 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)
- web调试代理工具Whistle
- pandas分组聚合案例
- 4、numpy——创建数组
- hdu 6298 Maximum Multiple(规律)
- 修改DbVisualizer的默认快捷键 .