• 84-CALayer

    CALayer

    1.什么CALayer
    1> 在创建UIView对象时 UIView内部会自动创建一个图层(即 CALayer 对象),通过UIView的layer属性可以访问这个层
    @property ( nonatomic , readonly , retain CALayer  *layer; 
    2>结论: UIView本身不具备显示的功能,是它内部的层才有显示功能,而它内部的层就是CALayer对象

    2.在xcode6之前要导入包(QuartzCore.framework)
    项目—>Build —>Link Bnary With Libraries (1 item) —>点击添加(+)—>在搜索框中输入:Quart

    3.CALayer的基本使用

    1>UIView中layer的使用

    设置阴影
    //Opacity不透明度:默认是0透明,1不透明
     
    _redView . layer . shadowOpacity = 1 ;
        
    设置阴影圆角
    _redView . layer . shadowRadius = 30 ;

    设置阴影颜色
    _redView . layer . shadowColor =[ UIColor   yellowColor ]. CGColor  ;
        
    平移    
    _redView . layer . shadowOffset = CGSizeMake (- 20 , - 20 );

    设置圆角半径
    //当前view的宽度/2,就是圆形
    _redView . layer . cornerRadius = _redView . bounds . size . width / 2 ;
        
    设置边框
    //默认边框颜色是黑色

    _redView . layer . borderWidth = 10 ;

    设置边框颜色
    _redView . layer . borderColor =[ UIColor   whiteColor ]. CGColor ;

    2> UIimageView中layer使用
    特殊性: View的主层是layer,UIimageView图片没有添加到主层上,而是存放在主层的contents上,
        因此设置imageView的圆角时候要强制内部的所有子层支持圆角效果


    1>设置的圆角半径只会影响主层(layer)
    _imageView . layer . cornerRadius = 50 ;

    2>超出主层的部分全部裁剪,可以看做是强制内部的所有子层支持圆角效果
    _imageView . layer . masksToBounds = YES ;

    设置边框
    _imageView . layer . borderWidth = 1 ;
    _imageView . layer . borderColor =[ UIColor   whiteColor ]. CGColor ;

    4.CALayer的使用经验
    给图层(layer)添加颜色都是CGColor类型,使用时要通过.CGColor转换
    例如:设置背景颜色:
    _redView . layer . shadowColor =[ UIColor   yellowColor ]. CGColor  ;

    5.CALayer画圆和Quart画圆的区别
    Quart2D在图片上画圆,layer在图层上画圆

    6.自定义图层( CALayer )

    //创建图层
    CALayer  *layer=[ CALayer   layer ];

    //设置背景颜色
    layer.
    backgroundColor =[ UIColor   redColor ]. CGColor ;

    //设置layer尺寸
    layer.
    frame = CGRectMake ( 100 100 100 100 );

    //设置layer的内容(必须要传一个CGImage的类型)
    layer.
    contents =( id )[ UIImage   imageNamed : @"阿狸头像" ]. CGImage ;

    //添加到控制器的View的layer上
    [
    self . view . layer   addSublayer :layer];

    7.CALayer可以实现跟UIView一样的界面效果,他们的区别和使用时机
    区别: UIView可以进行触摸事件,ALayer不能处理用户的触摸事件
    使用时机: 将要显示的界面需要跟用户交互的时候用UIView,不需要交互的时候二者皆可
            但是CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级

    8.CALayer中使用CGImageRef和CGColorRef而不是使用UIImage、UIColor的原因是什么
    1> CALayer是定义在QuartzCore框架中,可以跨平台,在iOS和Mac OS X上都能使用,因此使用同样支持跨平台的的CGImageRef、CGColorRef两种数据类型
    one: CGImageRef、CGColorRef,定义在CoreGraphics框架中,可以跨平台
    two: UIColor、UIImage是定义在UIKit框架中的,UIKit只能在iOS中使用

    2> 为了保证可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

    9.CALayer的两个重要属性position和anchorPoint

    1> position :设置CALayer在父层中的位置(以父层的左上角为原点[0,0])

    2> achorPoint:锚点,定位点
    one: 决定CALayer身上的哪个点会在position属性所指的位置
    two: 以自己的左上角为原点[0,0]
    three: x,y取值范围是0-1,默认值是(0.5,0.5)

    9.CALayer的隐式动画
    1> 根层 : 每一个UIView内部都默认关联着一个CALayer,称这个Layer为Root Layer(根层)
    注意: 根层没有没有隐式动画

    2>什么是隐式动画
    one: 当对非根层的Layer属性进行修改时,默认会自动产生一些动画效果,就是隐式动画
    two: 所有的非根层(手动创建的Layer),都存在隐式动画
    3>可动画属性
    one: Layer进行修改可以支持隐式动画的属性,称为Animatable Properties(可动画属性)
    two: 去属性的头文件看,有Animatable描述的都可以设置隐式动画

    4>常见的可动画属性
    4常见的Animatable Properties:
    //设置位置(平移)
    _layer . position = CGPointMake ( 300 300 );
    //设置圆角
    _layer . cornerRadius = 50 ;
    //设置边框宽度和颜色
    _layer . borderWidth = 2 ;
    _layer . borderColor =[ UIColor   blueColor ]. CGColor ;
    //设置背景颜色(背景色渐变)
    _layer . backgroundColor =[ UIColor    blueColor ]. CGColor ;
    //设置bounds(缩放)
    _layer . bounds = CGRectMake ( 0 0 200 200 );

    10.隐式动画的事务 CATransaction
    默认每个隐式动画都会包装到一个事务里面,可以通过此事务设置动画时长和默认的隐式动画效果

    1>设置动画时长
    [
    CATransaction   setAnimationDuration : 1 ];
    注意 :在执行隐式动画之前设置动画时长才有作用

    2>关闭默认的隐式动画效果
    [
    CATransaction   begin ];
    [
    CATransaction   setDisableActions : YES ];
    _layer . position  =  CGPointMake ( 10 10 );
    [
    CATransaction   commit ];
    本站公众号
       欢迎关注本站公众号,获取更多程序园信息
    开发小院
    www930.com三期必中 扬中市| 仙居县| 临高县| 遵义市| 微山县| 元朗区| 吉水县| 仁布县| 关岭| 临江市| 和林格尔县| 黄冈市| 鲁甸县| 道孚县| 永城市| 栾城县| 萝北县| 奈曼旗| 清涧县| 米脂县| 新沂市| 金平| 永昌县| 嫩江县| 大冶市| 眉山市| 临夏县| 阜康市| 和政县| 卫辉市| 梁平县| 龙山县| 中阳县| 苗栗市| 神农架林区| 麻城市| 余干县| 毕节市| 长白| 新津县| 雷山县| 瓦房店市| 甘泉县| 当雄县| 丘北县| 宝兴县| 上高县| 乳源| 呼图壁县| 安多县| 泗洪县| 喜德县| 山东| 北京市| 临江市| 龙井市| 浑源县| 望都县| 东乌珠穆沁旗| 宣化县| 西乌| 武邑县| 开江县| 文成县| 永寿县| 河北区| 德安县| 哈密市| 通榆县| 永定县| 天门市| 德格县| 谢通门县| 垦利县| 盘锦市| 苏尼特左旗| 布尔津县| 河津市| 松桃| 嵊州市| 蒲江县| 深泽县| 灵武市| 阿拉善右旗| 清流县| 德安县| 信阳市| 桂平市| 桂林市| 申扎县| 乌苏市| 温泉县| 民勤县| 璧山县| 无棣县| 博乐市| 郁南县| 三穗县| 安丘市| 乐亭县| 仁化县| 巴青县| 喀喇| 莲花县| 黄冈市| 诸城市| 阿克苏市| 宾川县| 文登市| 阿城市| 弥勒县| 金阳县| 衡南县| 固镇县| 墨玉县| 保靖县| 三穗县| 措勤县| 互助| 揭阳市| 阿城市| 文成县| 江北区| 会泽县| 开阳县| 安康市| 贵定县| 上饶县| 秦皇岛市| 绥芬河市| 南安市| 会理县| 景谷| 丹巴县| 新闻| 古丈县| 江永县| 红原县| 九寨沟县| 江永县| 遂溪县| 双鸭山市| 收藏| 桐庐县| 游戏| 涪陵区| 富宁县| 上虞市| 眉山市| 措勤县| 庆阳市| 邳州市| 曲阜市| 巴东县| 高青县| 东兴市| 微山县| 鄂托克前旗| 铁岭市| 宝坻区| 普宁市| 张家港市| 吉木乃县| 周宁县| 临洮县| 漠河县| 九龙城区| 秀山| 紫金县| 上林县| 高雄市| 阿图什市| 建水县| 榕江县| 祥云县| 德昌县| 行唐县| 万山特区| 都安| 毕节市| 台州市| 汪清县| 德兴市| 滨州市| 杨浦区| 广饶县| 克东县| 阿图什市| 永城市| 莆田市| 巴里| 桑植县| 桐城市| 汉川市| 六枝特区| 罗甸县| 平昌县| 红原县| 甘肃省| 楚雄市| 天峨县| 宁南县| 岳池县| 宁远县| 泗洪县| 吴堡县| 湖北省| 灯塔市| 巴楚县| 休宁县| 柳江县| 鹤庆县| 南乐县| 渝北区| 陕西省| 商洛市| 澄城县| 教育| 长乐市| 凤凰县| 区。| 常山县| 兖州市| 永嘉县| 苏尼特右旗| 宣城市| 宁城县| 深水埗区| 砚山县| 湖北省| 嘉善县| 湄潭县| 阿荣旗| 灵寿县| 遵义市| 延边| 宕昌县| 白水县| 晋宁县| 桂阳县| 沙坪坝区| 禄劝| 扎赉特旗| 连平县| 五寨县| 资兴市| 玉屏| 玛曲县| 虹口区| 邻水| 四会市| 图木舒克市| 建宁县| 海林市| 邹平县| 浦东新区| 吴忠市| 丹巴县| 石首市| 绥化市| 张家川| 商水县| 巴林右旗| 双流县| 甘肃省| 高州市| 应用必备| 金坛市| 深水埗区| 元氏县| 苍山县| 汉源县| 合山市| 乐至县| 烟台市| 云林县| 东阿县| 锡林郭勒盟| 林西县| 惠东县| 阿拉善盟| 安陆市| 青州市| 满城县| 吉林省| 耿马| 华亭县| 辛集市| 南木林县| 普宁市| 濮阳县| 来安县| 安平县| 肇东市| 红桥区| 贺兰县| 绵阳市| 高雄市| 高州市| 四平市| 丹江口市| 紫金县| 隆化县| 莱西市| 宜城市| 德保县| 邻水| 乡城县| 克什克腾旗| 桂东县| 鲁甸县| 长泰县| 阳城县| 宁阳县| 如东县| 宽城| 图木舒克市| 长白| 花莲市| 浙江省| 乡城县| 萨嘎县| 安平县| 乐山市| 金寨县| 武隆县| 泸西县| 沁水县| 山丹县| 湖北省| 武隆县| 武义县| 浑源县| 太仆寺旗| 阿鲁科尔沁旗| 金塔县| 江源县| 遂溪县| 长兴县| 四会市| 油尖旺区| 雷波县| 固安县| 凉城县| 当涂县| 平潭县| 丹阳市| 锦州市| 准格尔旗| 那曲县| 鹰潭市| 东乡族自治县| 虞城县| 额尔古纳市| 裕民县| 顺昌县| 宁海县| 阳西县| 买车| 太白县| 龙游县| 兖州市| 嘉禾县| 莲花县| 清河县| 棋牌| 政和县| 石柱| 辽源市| 阳高县| 巴东县| 秀山| 体育| 昌黎县| 泰顺县| 江华| 北川| 西乡县| 乌兰察布市| 丰城市| 濮阳县| 上饶市| 阳东县| 蓬溪县| 城口县| 璧山县| 嘉善县| 凤凰县| 葵青区| 新昌县| 武安市| 偃师市| 资中县| 屏山县| 钟山县| 白河县| 历史| 湾仔区| 贵德县| 彭阳县| 宽城| 政和县| 塘沽区| 大关县| 营口市| 曲周县| 洞口县| 怀柔区| 广汉市| 铜川市| 孟村| 沿河| 嘉荫县| 泉州市| 玛沁县| 张家口市| 延川县| 浙江省| 准格尔旗| 尤溪县| 赤峰市| 洛隆县| 武汉市| 民丰县| 贵定县| 石楼县| 昌乐县| 饶平县| 麻栗坡县| 滦平县| 政和县| 宁国市| 昭平县| 安福县| 古蔺县| 郴州市| 墨竹工卡县| 东乡| 江陵县| 吉林市| 博野县| 光山县| 澄城县| 汉川市| 郑州市| 仲巴县| 舟山市| 铜川市| 沛县| 武义县| 修水县| 阳西县| 柞水县| 都昌县| 太湖县| 绥棱县| 吉木萨尔县| 襄汾县| 江华| 罗田县| 鹤岗市| 斗六市| 阿城市| 巨鹿县| 怀化市| 沧州市| 寿宁县| 浦北县| 舟曲县| 灵寿县| 扎兰屯市| 杨浦区| 卢龙县| 凤翔县| 宿州市| 曲麻莱县| 廉江市| 建昌县| 平武县| 宿松县| 弥勒县| 新津县| 庆城县| 辉南县| 平阴县| 铜梁县| 沂水县| 潢川县| 上思县| 西畴县| 保山市| 榆中县| 新营市| 花莲市| 额敏县| 宾阳县| 上栗县| 偏关县| 焉耆| 莆田市| 丘北县| 唐山市| 厦门市| 报价| 临夏县| 营口市| 金乡县| 张家川| 华坪县| 渑池县| 西华县| 铜川市| 彰化县| 河池市| 济南市| 定西市| 恩平市| 江华| 临猗县| 石阡县| 庆安县| 察雅县| 抚顺县| 南和县| 南召县| 应用必备| 右玉县| 上饶县| 洞头县| 邳州市| 宾川县| 大竹县| 汝阳县| 徐州市| 遂川县| 尚义县| 竹山县| 壶关县| 曲松县| 科技| 巴彦县| 顺义区| 庆安县| 临西县| 镇江市| 嘉祥县| 资兴市| 封丘县| 凤阳县| 原平市| 徐州市| 高邑县| 鄂托克前旗| 镇康县| 商城县| 绿春县| 莆田市| 岱山县| 望都县| 京山县| 巫山县| 平顺县| 新沂市| 仪征市| 颍上县| 荆州市| 井研县| 台南县| 玛曲县| 怀集县| 日土县| 自治县| 吴江市| 迁西县| 靖江市| 枣阳市| 卢龙县| 新沂市| 宁晋县| 南京市| 桂林市| 独山县| 锦州市| 米泉市| 铜山县| 阳城县| 图木舒克市| 青阳县| 新巴尔虎左旗| 台安县| 迁安市| 大英县| 阜宁县| 大港区| 湘潭市| 南涧| 湖口县| 常熟市| 正阳县| 亚东县| 平利县| 高邮市| 平湖市| 集安市| 军事| 余姚市| 河津市| 石门县| 定襄县| 灵石县| 申扎县| 南岸区| 晋城| 武平县| 新龙县| http://m.vhmvvz.fit http://bm1961networkz.fit http://wap.ydaepe.fit http://wap.lntvxs.fit http://jivaty.fit http://m.psvpen.fit http://hysbew.fit http://wap.dkzneo.fit http://bodksm.fit http://m.mixevu.fit http://www.wwbsae.fit http://www.yxwspg.fit http://geqebfit http://wap.wwbsae.fit http://wap.ktvfyz.fit http://m.onypnp.fit http://m.usqlui.fit http://m.mnprvj.fit