美文网首页
calayer 图层

calayer 图层

作者: ChauvetMa | 来源:发表于2016-08-02 16:48 被阅读54次

曾经在有道笔记中记载了大量的学习心得笔记,偶然发现周围好多在简书使用的,因此从今以后,我也加入简书这个大家庭,将有道笔记中心得分享给大家。清零心态,与大家共同成长。欢迎大家点评,我叫小马哥!哈哈

前言

1:(圆角、阴影、边框、3D形变)

知识点:CALayer1-简介 - M了个J - 博客园

哪些需要引入Quartzcore.framework,并#importCALayer、Core Animation、图形上下文

2.Core Animation是跨平台的(iOS和MAC OS X),也就是说Core Animation可以用于iPhone和MAC台式机的开发,像UIKit框架就不能用于MAC台式机的开发

(UIKit框架只能应用在iOS而不能用于Mac,但是Quartz 2D是可以跨平台的,因此在使用颜色时,不能直接使用UIColor而需要将颜色转成CGColor)

上下文中是这样设置颜色的([[UIColor redColor]set];)

3.每一个UIView都有一个Layer属性

4.CALayer可以做圆角、阴影、边框、3D形变(包括平移、缩放、旋转)

5.3D形变属性既可以用形变函数指定,也可以用keyPath指定。区别在于,形变函数不能叠加,keyPath可以叠加。

举例:先平移、再缩放、再旋转。用形变函数的效果是只进行了旋转。用keyPath可以使得平移、缩放、旋转同时叠加了。

6.UIView通过CALayer可以使得圆角、阴影、边框、3D形变叠加。

但是UIImageView通过CALayer,圆角和阴影不可同时运用。

•UIImageView中不仅一个子图层,因此设置圆角时需要使用setMasksToBounds:YES,让所有子图层跟随边框,不过设置该属性后,无法使用阴影效果•解决办法:可以在底层附加一个UIView实现阴影效果

7.关于圆角的说明

若圆角半径等于视图的一半时,那么视图就变成了一个圆

8.关于形变中的旋转(x,y,z):一般设Z为1,其实设多大都没实际意义。不用设置x,y


案例1:

1.UIVIew的layer


- (void)myViewLayerDemo

{

      //  自定义UIView的图层属性

      UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)];

      [myView setBackgroundColor:[UIColor redColor]];

       [self.view addSubview:myView];

       1) 圆角半径

        myView.layer.cornerRadius = 50.0f;

        2) 阴影

        // 因为Core Animation是跨平台的,基于QuartzCore框架,是因为UIKit框架,仅能适用于iOS平台

        // 在Core Animation中不能使用任何跟UI有关的方法

        // 要设置阴影除了颜色之外,还需要指定其他偏移量和透明度参数

             1> 阴影颜色

              [myView.layer setShadowColor:[UIColor lightGrayColor].CGColor];

              2> 阴影偏移量

             [myView.layer setShadowOffset:CGSizeMake(0, 10)];

             3> 阴影的透明度

             [myView.layer setShadowOpacity:1.0f];

        3) 边框

        [myView.layer setBorderColor:[UIColor whiteColor].CGColor];

        [myView.layer setBorderWidth:3.0f];

}

2.UIImageView的layer (这个特殊,圆角和阴影不能同时存在 Label圆角也是需要设定这个)

- (void)myImageLayerDemo

{

         UIImage *image = [UIImage imageNamed:@"头像1.png"];

         UIImageView *imageView = [[UIImageView alloc]initWithImage:image];

         [imageView setFrame:CGRectMake(50, 50, 200, 200)];

         [self.view addSubview:imageView];

         // 1. 圆角半径(UIImageView和UILabel都需要)

         // 提示,在imageView中,图层不止一个,如果要实现圆角效果,需要设置一个遮罩属性

         // masksToBounds属性可以让imageView中的所有子图层跟随imageView一起变化

          imageView.layer.cornerRadius = 50.0f;

          [imageView.layer setMasksToBounds:YES];

// 2. 阴影

// 提示,如果设置了masksToBounds属性,imageView的阴影效果无效

[imageView.layer setShadowColor:[UIColor redColor].CGColor];

[imageView.layer setShadowOffset:CGSizeMake(10.0, 10.0)];

[imageView.layer setShadowOpacity:1.0];

// 3. 边框

[imageView.layer setBorderColor:[UIColor blueColor].CGColor];

[imageView.layer setBorderWidth:3.0f];

// 4. 形变属性,在CALayer中的形变属性是3D的,不再是2D的

// 提示,形变参数使用set方法时,只能应用一种形变

// 1> 平移属性(向上移动100个点)

//    [imageView.layer setTransform:CATransform3DMakeTranslation(0, -100, 0)];

//    // 2> 缩放属性

//    [imageView.layer setTransform:CATransform3DMakeScale(0.5, 1.0, 1.0)];

//    // 3> 旋转属性

//    // 提示:通常在旋转时指定z轴即可,要延哪个轴旋转,指定一个数值1.0即可

//    // 图像本身没有厚度,如果按照x或y旋转90度,图像是不可见的。

//    [imageView.layer setTransform:CATransform3DMakeRotation(M_PI_2, 0, 0, 1.0)];

// 5. 利用keyPath设置形变,可以组合使用,但是记住不要输错

// 提示,在文档中输入transform3D可以找到对应的transform keyPath

// 1)平移

[imageView.layer setValue:@-100 forKeyPath:@"transform.translation.y"];

// 2) 缩放

[imageView.layer setValue:@0.5 forKeyPath:@"transform.scale"];

// 3) 旋转

[imageView.layer setValue:@M_PI_2 forKeyPath:@"transform.rotation.z"];

}

相关文章

  • CALayer图层类

    //CALayer图层类 //和UIView用法类似 //创建图层类对象 // CALayer *layer = ...

  • CALayer图层

    属性 contents该属性可通常指定一个CGImage,代表图层要显示的图片。 contentGravity该属...

  • 图层CALayer

    图层的树状结构 CoreAnimation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一...

  • CALayer图层

    一、 CALayer的简介 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、...

  • calayer 图层

    曾经在有道笔记中记载了大量的学习心得笔记,偶然发现周围好多在简书使用的,因此从今以后,我也加入简书这个大家庭,将有...

  • CALayer 图层

    概念 CA -> Core Animation (核心动画) 相对更底层. CALayer负责视图中显示内容和动画...

  • iOS CALayer介绍及简单实用

    1.CALayer -- 绘图层 在我们创建UIView时,会自动创建一个绘图层的实例--CALayer,然后再将...

  • CALayer

    初探CALayer属性 IOS中CALayer的使用//这个算是比较全了 iOS - CALayer 绘图层 iO...

  • CALayer和核心动画

    CALayer和核心动画 CALayer和UIView(CA框架) CALayer是View内的图层,现实图案等内...

  • CALayer 和 Core Animation

    CALayer 一、简介 1.CALayer 简单的说是层(图层)的概念,类似与PS中的图层。一个用来完成绘制、渲...

网友评论

      本文标题:calayer 图层

      本文链接:https://www.haomeiwen.com/subject/cibodttx.html