首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CALayer 实用属性补充

当我们使用UIImage时,会获取高质量的图片,但CGImage没有拉伸概念,因此使用CGImage设置图片时,拉伸的因素会在转换的时候丢失,当用代码设置contents图片时,要手动设置图层的contentsScale...contentsScale maskToBounds 默认情况下,UIView会绘制超过边界的内容或子视图,CALayer也一样。...UIView有一个叫做clipsToBounds属性可以用来决定是否显示超出边界的内容,CALaer对应的属性是maskToBounds,设置为YES,会剪去超出边界的部分(不显示)。  ...contentsRect 这个属性是CGRect类型,它允许我们设置图层显示内容图片的一个区域。...图片选自网络 contentsRect在App中常常用来将拼合的图片裁剪开来,分解成各个部分显示出来。

94830

图层树和寄宿图 -- iOS Core Animation 系列一

真正用来在屏幕上显示的是图层(CALayer),UIView是对它的一个封装,提供一些交互触摸功能,和一些Core Animation底层的接口。...但是在 iOS上,如果将 UIImage 的值赋给它,只能得到一个空白的图层。 事实上,真正赋值的类型应该是CGImageRef,这是一个指向CGImage结构的指针。...如图所示,图片会变的有点大,而且有像素的颗粒感。因为CGImage和UIImage不一样,它没有拉伸的感念。用UIImage读取图片时,读取了高质量的Retina图片。...2.1.4 maskToBounds 看上面最新的运行图,发现图片超出了视图的边界。因为默认情况下,UIView仍会绘制超过边界的内容,在CALayer也不例外。...UIView有个clipsToBounds属性来决定是否显示超出边界的内容。CALayer对应的属性叫做maskToBounds,把它设置成YES就可以不显示超出部分的图片了。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CALayer 图层概念二、CALayer属性二、方法

    ,其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时, UIView内部会自动创建一个图层 (即CALayer对象), 通过UIView的layer属性即可访问这个图层....当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView得显示.换句话说,UIView...通过CALayer就能做出跟UIView一样的界面效果.都能实现相同的显示效果,那究竟该选择谁好呢?...其实,对比CALayer,UIView多了一个事件处理的功能,也就是说,CALayer不能处理用户的触摸事件,而UIView可以.所以,如果显示出来的东西需要跟用户进行交互的话,用UIView.UIView...凡是文档中有 “animatable” 字样的属性都是可动画属性 当对以下非 Root Layer的部分属性进行修改时, 默认会自动产生一些动画效果 UIView 默认情况下禁止了 layer 动画,但是在

    1.4K70

    CALayer的寄宿图

    和UIView最大的不同是,CALayer不处理用户的交互。...实际上,CALayer才是真正用来在屏幕上显示和做动画的,UIView仅仅是对它的一个封装,提供了处理触摸事件的功能,以及CoreAnimation底层方法的高级接口。...但是如果你在iOS中试图将UIImage类型的对象赋值给它,那么你将得到一片空白。 事实上,你真正要赋值的类型是CGImageRef,它是一个指向CGImage结构的指针。...当用CGImage来设置图层的内容的时候,默认显示图片的原本像素大小(除非有一些特殊设置,比如将contentsGravity设置为kCAGravityResizeAspect),此时修改contentsScale...当图片大小超过了视图的边界时,默认情况下,UIView会绘制超过边界的内容或者子视图,在CALayer下也是这样的。

    1K20

    iOS接入开屏广告教程 : 以腾讯优量汇为案例

    开屏V+广告是一个5s-30s的视频广告,在5s开屏呈现的过程中,用户点击右上角的“进入首页”或5s曝光结束后,视频均将收缩到APP内右下角的小视窗继续播放。...说明:针对单媒体的用户,允许获取idfa和定位权限的,投放定向广告;不允许获取权限的用户,投放通投广告,媒体可以选择是否把idfa和定位数据提供给优量汇,并承担相应广告填充和eCPM单价下降损失的结果。...*)logoImage skipView:(UIView *)skipView; 开屏半屏广告的显示区域其高度一定要大于设备高度的75%(建议值大于80%),最小高度要大于400dp,开屏广告默认只在竖屏展示...eCPM单价下降损失的结果。...*)logoImage skipView:(UIView *)skipView; /** * 发起拉取广告请求,只拉取不展示 * 详解:广告素材及广告图片拉取成功后会回调splashAdDidLoad

    2.9K20

    【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    根 View 组件 , 然后将 生成的 UIView 控件添加到 该 根 View 控件中 ; //4...., 之后将生成的 UIView 控件放在该 容器 中 ; 3.添加按钮 : 添加两个按钮 , 两个按钮的功能分别是 生成 UIView 控件 和 清空 UIView 控件 ; ---- (...: 按住 Control 键 , 将控件拖动到 @interface 代码区域 , 在弹出的对话框中输入控件命令 和 选择控件类型 , 即可生成控件关联的变量 ; // 显示图片的索引 @property...对象 , 并放入数组 [imageArray addObject:[UIImage imageNamed:nameArray[i]] ]; } 3.设置图片 : 将准备好的 UiImage...图片 , 图片会在 内存中 驻留 , 只有需要长期保持的 图片 , 如 UI 界面的 经常显示 的 各种背景 图标 等 , 使用该方式加载 ; UIImage *image = [UIImage imageNamed

    4K40

    iOS面试题-UI篇

    UIView显示在屏幕上归功于CALayer,通过调用drawRect方法来渲染自身的内容,调节CALayer属性可以调整UIView的外观, UIView继承自UIResponder,比起CALayer...UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和坐标有关的属性,如frame,bounds等,实际上内部都是访问它所在CALayer的相关属性 UIView有个layer属性,可以返回它的主...CALayer实例,UIView有一个layerClass方法,返回主layer所使用的类,UIView的子类,可以通过重载这个方法,来让UIView使用不同的CALayer来显示,如: - (class...,进行各种渲染操作 显示树,这棵树的内容是当前正被显示在屏幕上的内容 这三棵树的逻辑结构都是一样的,区别只有各自的属性 loadView的作用?...,并写入磁盘中 整个获取图片的过程都是在子线程中执行,获取到图片后回到主线程将图片显示出来 设计个简单的图片内存缓存器 类似上面SDWebImage实现原理即可 一定要有移除策略:释放数据模型对象 控制器的生命周期

    2K21

    编码篇-iOS开发中的奇巧小伎

    1.TableView不显示没内容的Cell 2.百分号的转换 3.禁止手机睡眠 4.跳进app权限设置 5.collectionView的内容小于其宽高的时候是不能滚动的,设置可以滚动: 6.设置navigationBar...45、使用xib设置UIView的边框、圆角 46、将一个xib添加到另外一个xib上 47、处理字符串,使其首字母大写 48、获取字符串中的数字 49、自动搜索功能,用户连续输入的时候不搜索,用户停止输入的时候自动搜索...弄成透明的而不是带模糊的效果,(亲测有效) 诸技罗列 1.TableView不显示没内容的Cell self.tableView.tableFooterView = [[UIView alloc] init...自己键盘打出的 % 汉字形式下的还是会报警告,并且不会显示出来.把上文的粘贴过去使用吧!...设置里面(必须在info.plist 中设置私有属性的访问权限) 你的应用要提前至少申请了某一个权限,如(通知,定位等)。

    5.4K10

    脚本错误量极致优化-监控上报与 Script error

    如上报 pv 监控项目是否正常运转;测速上报反应项目质量;脚本错误监控作为监控中重要一环,当页面发生报错的时候,通过上报错误信息,能及时发现存在问题,修复优化、减少损失。...在使用过程中的体会:onerror 主要用来捕获预料之外的错误,而 try-catch 则可以用在预知情况下监控特定错误,两种形式结合使用更加高效。...上报方式 监控错误拿到了报错信息,接下来则是将捕抓的错误信息发送到信息收集平台上,发送的形式主要有两种: 通过 Ajax 发送数据 动态创建 img 标签的形式 示例 · 动态创建 img 标签进行上报...方案一:同源化 将 js 代码内联到 html 文件中 将 js 文件与 html 文件放到同一域名下 以上两种方式能够简单直接地解决问题,但也可能带来其他影响,如内联资源不好利用文件缓存,同域无法充分利用...通过以上方式进行处理后将能够捕获到具体的报错信息了。

    1.2K00

    详解CALayer的anchorPoint和position

    CALayer CALayer属于QuartzCore框架,用于在iOS和Mac OS系统上可见元素的绘制,和属于UIKit框架的UIView的关系是,UIView默认会创建一个CALayer属性...,用于图象的绘制和显示.当然,CALayer也可以单独创建....以防transform的引入混淆大家对position和anchorPoint的理解,我们先不讨论图层旋转的问题....默认情况下,使用addSublayer函数添加layer时,如果已知layer的frame值,根据上面的结论,那么position的值便可以用下面的公式计算: 1 2 position.x = frame.origin.x...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.1K30

    脚本错误量极致优化:监控上报与 Script error

    如上报 pv 监控项目是否正常运转;测速上报反应项目质量;脚本错误监控作为监控中重要一环,当页面发生报错的时候,通过上报错误信息,能及时发现存在问题,修复优化、减少损失。...在使用过程中的体会:onerror 主要用来捕获预料之外的错误,而 try-catch 则可以用在预知情况下监控特定错误,两种形式结合使用更加高效。...上报方式 监控错误拿到了报错信息,接下来则是将捕抓的错误信息发送到信息收集平台上,发送的形式主要有两种: 通过 Ajax 发送数据 动态创建 img 标签的形式 示例 · 动态创建 img 标签进行上报...方案一:同源化 将 js 代码内联到 html 文件中 将 js 文件与 html 文件放到同一域名下 以上两种方式能够简单直接地解决问题,但也可能带来其他影响,如内联资源不好利用文件缓存,同域无法充分利用...通过以上方式进行处理后将能够捕获到具体的报错信息了。

    2.5K00

    屏幕成像原理以及FPS优化Tips

    GPU渲染完成后将渲染结果(也就是一帧画面)放到屏幕的帧缓冲区(此处的帧缓冲区和离屏渲染的屏幕缓冲区、屏幕外缓冲区是一回事);随后视频控制器会按照VSync(垂直同步信号)读取帧缓冲区的数据,经过数模转换传递给显示器显示...当视频控制器还未读取完成时,即屏幕内容刚显示一半时,GPU 将新的一帧内容提交到帧缓冲区并把两个缓冲区进行交换后,视频控制器就会把新的一帧数据的下半段显示到屏幕上,造成“画面撕裂”现象,我们称之为“screen...UIView 的关于显示相关的属性(比如 frame/bounds/transform)等实际上都是 CALayer 属性映射来的,所以对 UIView 的这些属性进行调整时,消耗的资源要远大于一般的属性...13.控制线程的最大并发数量。 GPU优化 尽量减少视图数量和层次。 尽量避免短时间内大量图片的显示,可以的话将多张图片合成一张显示。...CALayer和UIView除了对事件的处理之外,无差别。CALayer用来显示内容的,UIView是用来监听点击事件的,如果内容和用户无交互,可以考虑使用CALayer。

    9.6K73

    《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3

    关联 xib 文件与源文件 关联 xib 文件与 UIView 子类的源文件 新建一个空的xib文件,拖一个UIView上去 新建一个继承自UIView的源文件 选中xib文件里的View,把class...中间带箭头的选中表示UIView边框是随屏幕尺寸变化的。 否则UIView大小保持不变。 也可以看右侧的动画查看显示效果。...awakeFromNib() 方法 将 nib 中可见的控件显示出来 本地化 两种策略 App 本地化跟随系统语言 App 内部有一个可以设置语言的选项 本地化介绍 Base 文本的本地化 利用 NSLocalizedString...将需求或交互与 VC 解耦。...Objective-C IBAction IBOutlet IB_DESIGNABLE IBInspectable IBOutletCollection(ClassName) @IBDesignalbe 可以不运行程序的情况下把源文件中的一些代码实时渲染到

    2.5K80

    CAAnimation 核心动画概念一、 CAAnimation二、 CAPropertyAnimation三、CABasicAnimation(基本动画)CAPropertyAnimation的子类

    : 方法) 注意: 如果当动画正在执行的时候, 将程序退出到后台, 那么当程序再次进入前台的时候就不执行了。...如果fillMode = kCAFillModeForwards和removedOnComletion = NO;那么在动画执行完毕后,图层会保持显示动画执行后的状态,但实质上,图层的属性值还是动画执行前的初始值...或不设置效果为 ?...属性: animations:动画组,用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间 例子: /...交叉淡化过渡 kCATransitionMoveIn 新视图移到旧视图上面 kCATransitionPush 新视图把旧视图推出去 kCATransitionReveal 将旧视图移开,显示下面的新视图

    2K90

    iOS界面渲染流程分析

    最后,将最终要显示在画面上的后帧缓存交给GPU,进行采集图片和形状,运行变换,应用文理和混合。最终显示在屏幕上。 以上仅仅是对该题简单回答,其中的原理以及瓶颈和优化,后面会详细介绍。...最后使用imageWithCGImage()方法将CGImage转化为UIImage。...当然YYImage不止做了这些,还有解码器编码器,支持webP等多种格式,并且还写了自定义的操作队列,对网络加载图片进行了优化。在此不赘述。...那么如何在需要渲染大量视图的情况下,还能保证流畅度,也就是保证FPS。...YYAsyncLayer 是 CALayer 的子类,当它需要显示内容(比如调用了 [layer setNeedDisplay])时,它会向 delegate,也就是 UIView 请求一个异步绘制的任务

    2.6K20

    【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

    UIView 简介 : 1.定义 : iOS 手机屏幕上的所有能看到的内容都是 UIView 或 UIView 子类, 如 按钮 UIButton, 文字 UILabel 等都是继承自 UIView...UIView 中定义的, 而其他控件都是 UIView 的子类; ① 独有属性 : 有些属性是控件独有的, 如 UIProgressView 的 progress 属性代表其进度值, UILabel...(0, 0, 100, 100); ; 5.设置创建的 UIView 对象 backgroundColor 与 frame 属性 : 如果不设置这两个属性, 那么创建的 View 控件就会看不清;..., ③ 设置控件的改变, 如 frame 属性的 位置 大小 改变, ④ 提交动画 , [UIView commitAnimations]; 这种头尾式动画 代码量过大, 用法比较少; //头尾式动画...设置普通状态的背景图片, 如果图片后缀是 png 或 jpg 格式, 可以只写图片名称 UIImage * image = [UIImage imageNamed:@"bg.png"];

    5K30
    领券