ios开发之图层与核心动画一:图层CALayer的认识

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *redView;
@property (weak, nonatomic) IBOutlet UIImageView *imageV;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    //设置阴影的颜色
    self.imageV.layer.shadowColor = [UIColor blueColor].CGColor;
    //设置阴影的不透明度:0为完全透明,1为不透明
    self.imageV.layer.shadowOpacity = 1;
    //设置阴影偏移量宽高偏移,正数则向右向下平移
    self.imageV.layer.shadowOffset = CGSizeMake(10, 10);
    //设置阴影的模糊的半径
    self.imageV.layer.shadowRadius = 5;

    //边框宽度,往里边走的.
    self.imageV.layer.borderWidth = 2;
    self.imageV.layer.borderColor = [UIColor greenColor].CGColor;

    /**
     *    1:image并不是在layear的图层上,而是在layear的contents上,设置圆角效果是在layear层,并不会影响到contents上的image,要想layer图层和contents有联系,则必须设置self.imageV.layer.masksToBounds,也就是把超过根层也就是layear层的部分裁减掉,所以imageView要设置圆角效果必须加上self.imageV.layer.masksToBounds,而UIView可以不用设置
        2:设置圆形效果:就让UIimageview的圆角cornerRadius等于UIimageview宽度的一半
     */
    //设置圆角
    self.imageV.layer.cornerRadius = 50;
    //把超过根层以外的东西都给裁剪掉(UIview自带的层,我们称它是根层)
    self.imageV.layer.masksToBounds = YES;

    NSLog(@"%@",self.imageV.layer.contents);

}

- (void)UIViewLayer {
    //设置阴影的颜色
    self.redView.layer.shadowColor = [UIColor blueColor].CGColor;
    //设置阴影的不透明度
    self.redView.layer.shadowOpacity = 1;
    self.redView.layer.shadowOffset = CGSizeMake(-30, -30);
    //设置阴影的模糊的半径
    self.redView.layer.shadowRadius = 5;

    //边框宽度,往里边走的.
    self.redView.layer.borderWidth = 2;
    self.redView.layer.borderColor = [UIColor greenColor].CGColor;

    //设置圆角
    self.redView.layer.cornerRadius = 50;
}

@end

1.CALayer简介:

CALayer我们又称它叫做层.

在每个UIView内部都有一个layer这样一个属性.

UIView之所以能够显示,就是因为它里面有这个一个层,才具有显示的功能.

我们通过操作CALayer对象,可以很方便地调整UIView的一些外观属性.

可以给UIView设置阴影,圆角,边框等等...

2.操作layer改变UIView外观.

2.1.设置阴影

默认图层是有阴影的, 只不过,是透明的

_RedView.layer.shadowOpacity = 1;

设置阴影的圆角

_RedView.layer.shadowRadius  =10;

设置阴影的颜色,把UIKit转换成CoreGraphics框架,用.CG开头

_RedView.layer.shadowColor = [UIColor blueColor].CGColor;

2.2.设置边框

设置图层边框,在图层中使用CoreGraphics的CGColorRef

_RedView.layer.borderColor = [UIColor whiteColor].CGColor;

_RedView.layer.borderWidth = 2;

2.3.设置圆角

图层的圆角半径,圆角半径为宽度的一半, 就是一个圆

_RedView.layer.cornerRadius = 50;

3.操作layer改变UIImageView的外观.

设置图形边框

_imageView.layer.borderWidth = 2;

_imageView.layer.borderColor = [UIColor whiteColor].CGColor;

设置图片的圆角半径

_imageView.layer.cornerRadius = 50;

裁剪,超出裁剪区域的部分全部裁剪掉

_imageView.layer.masksToBounds = YES;

注意:UIImageView当中Image并不是直接添加在层上面的.这是添加在layer当中的contents里.

我们设置层的所有属性它只作用在层上面.对contents里面的东西并不起作用.所以我们看不到图片有圆角的效果.

想要让图片有圆角的效果.可以把masksToBounds这个属性设为YES,

当设为YES,把就会把超过根层以外的东西都给裁剪掉.

时间: 2024-10-13 18:20:08

ios开发之图层与核心动画一:图层CALayer的认识的相关文章

图层的核心动画(CABaseAnimation)续

Main.storyboard ViewController.m // //  ViewController.m //  8A01.核心动画 // //  Created by huan on 16/2/4. //  Copyright © 2016年 huanxi. All rights reserved. // #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IB

iOS开发-三种简单的动画设置

[在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所有动画提交并生成动画 [UIView commit

iOS核心动画高级技巧之CALayer(一)

UIView和CALayer的关系 在iOS中一个UIView对应着一个CALayer,视图的职责就是创建并管理这个图层,以确保当子视图在层级关系中添加或者被移除的时候,他们关联的图层也同样对应在层级关系树当中有相同的操作.实际上这些背后关联的图层才是真正用来在屏幕上显示和做动画,UIView仅仅是对它的一个封装,提供了一些iOS类似于处理触摸的具体功能,以及Core Animation底层方法的高级接口.(CALayer并不能响应事件,它提供了几个能判断一个触点时候再图层的范围之内) CALa

【Swift】IOS开发中自定义转场动画

在IOS开发中,我们model另外一个控制器的时候,一般都使用的自定义的转场动画. 其实我们可以自定义一些转场动画.达到不同的转场效果. 步骤如下:(photoBrowser是目标控制器) 1.在源控制器中,设置目标控制器的转场代理为 self 1 //设置Model转场代理 2  photoBrowser.transitioningDelegate = self 2.同时设置目标控制器的model类型 1 //设置Model类型 2 photoBrowser.modalPresentation

【iOS开发系列】物理仿真动画UIDynamic (1)

iOS开发拓展篇-UIDynamic(简单介绍) [一]简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力.弹性碰撞等现象 2.物理引擎的价值 广泛用于游戏开发,经典成功案例是"愤怒的小鸟" 让开发人员可以在远离物理学公式的情况下,实现炫酷的物理仿真效果 提高了游戏开发效率,产生更多优秀好玩的物理仿真游戏 3.知名的2D物理引擎 Box2d Chipmun

iOS开发——图形编程OC篇&amp;(五)CALayer创建图层

CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上) 1 // 2 // YYViewController.m 3 // 01-创建一个简单的图层 4 // 5 // Created by apple on 14-6-21. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 //

IOS第18天(9,核心动画-动画组)

****动画组 // 核心动画都是假象,不能改变layer的真实属性的值// 展示的位置和实际的位置不同.实际位置永远在最开始位置 #import "HMViewController.h" @interface HMViewController () @property (weak, nonatomic) IBOutlet UIView *redView; @end @implementation HMViewController - (void)viewDidLoad { [supe

iOS开发——图形编程OC篇&amp;(二)CALayer自定义图层

一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的DrawRect:方法,然后在该方法中画图. 绘制图形的步骤: (1)获取上下文 (2)绘制图形 (3)渲染图形 如果在layer上画东西,与上面的过程类似. 代码示例: 新建一个类,让该类继承自CALayer YYMylayer.m文件 1 // 2 // YYMylayer.m 3 // 05-自定义layer(1) 4 // 5 // Created b

iOS开发——图形编程OC篇&amp;(三)CALayer隐式动画

CALayer隐式动画 在前面几讲中已经提到,每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层).所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画. * 当对非Root Layer的部分属性进行相应的修改时,默认会自动产生一些动画效果,这些属性称为Animatable Properties(可动画属性). * 列举几个常见的Animatable Properties: ? bounds:用于设置CALay