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

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

CALayer负责视图中显示内容和动画.所有动画都是作用在CALayer上的.....当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView得显示.换句话说,UIView...UIColor, UIImage是定义在UIKit框架中的....阴影效果shadowColor、shadowOffset、shadowOpacity属性必须同时设置后才可以看到 设置阴影的颜色, 注意UIKit框架中的颜色不能直接设置给CGColorRef,...imageNamed:@"header"].CGImage); __bridge类型表达式的作用一般就是把 Core Foundation 中的数据类型转换成 Foundation 中的类型, 桥接的时候也会设置到一些所有权的转换等

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

    Core Animation实战四(视觉效果)

    这里有一些UIView没有暴露出来的CALayer的功能: 阴影,圆角,带颜色的边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 这篇主要说阴影圆角边框,先看一下Demo效果: ?...它是一个CGSize的值,宽度控制这阴影横向的位移,高度控制着纵向的位移。...self.shadowView.layer.shadowOffset = CGSizeMake(1, 1); //shadowRadius属性控制着阴影的模糊度,当它的值是0的时候,阴影就和视图一样有一个非常确定的边界线...当值越来越大的时候,边界线看上去就会越来越模糊和自然。苹果自家的应用设计更偏向于自然的阴影,所以一个非零值再合适不过了。...* maskLayer = [CALayer layer]; maskLayer.frame = self.maskImage.bounds; UIImage * image =

    54020

    Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

    retain) CALayer *layer; 4)、当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了...UIView本身不具备显示的功能,是它内部的层才有显示功能 5)、通过CALayer对象,可以很方便的调整UIView的一些外观属性,比如:阴影、圆角大小、边框宽度和颜色。。。...,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef 8)、UIView和CALayer的比较   通过CALayer,可以做出跟UIView...: 默认为YES, 代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。...;0表示透明,阴影看不见 38 39 //1.2增加子图层 40 CALayer *subLayer = [[CALayer alloc] init]; 41

    1.5K30

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

    但是有时候我们只使用UIView还是会有些捉襟见肘的,CALayer暴露了一些UIView没有提供的功能: 阴影、圆角、边框 3D变换 非矩形范围 透明遮罩 非线性动画 ---- 2.寄宿图 2.1...UIImage有一个CGImage属性,它返回一个CGImageRef,但是这个值不能直接赋值给CALayer的contents,因为CGImageRef不是一个真正的Cocoa对象,而是Core Foundation...如图所示,图片会变的有点大,而且有像素的颗粒感。因为CGImage和UIImage不一样,它没有拉伸的感念。用UIImage读取图片时,读取了高质量的Retina图片。...单位坐标指定在0到1之前,是一个相对值(像素和点就是绝对值)。 默认的contentsRect是{0, 0, 1, 1},意味着整个寄宿图默认都是课件的。如果指定小一点的矩形,图片就会被裁剪: ?...contentsRect在 App 中最有趣的地方可以用作 image sprites(图片拼合)。图片拼合后可以打包到一张大图上一次载入,相比多次载入不同的图片,这样做的性能更优。

    1.2K20

    iOS学习——核心动画之Layer基础

    我们可以通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,可以给UIView设置阴影,圆角,边框等等... 2、如何操作layer改变UIView外观?   ...2.1 设置阴影 //默认图层是有阴影的, 只不过,是透明的 _RedView.layer.shadowOpacity = 1; //设置阴影的圆角 _RedView.layer.shadowRadius...为了保证可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef 7、UIView和CALayer都能够显示东西,该怎样选择?   ...,先去调用drawRect方法,将要绘制的东西绘制到图层上,然后拷贝图层,完成了UIView的显示 UIView只有交互的功能,没有显示的功能 CALayer只要显示的功能,没有交互的功能 UIView...可以做一些简单的动画,例如:平移,拉伸,旋转 一些比较高端的动画,都是直接操作CALayer的,可以制作3D动画 使用CALayer,可以直接操作显示的东西,例如阴影,圆角,边框等 所以,对比CALayer

    1.5K61

    视觉效果 -- iOS Core Animation 系列三

    CALayer有一个conrnerRadius的属性控制图层的圆角曲率,默认值为0。这个曲率值默认只影响背景颜色而不影响背景图片或者子图层。可以用过下面的示例看一下。...如果想要截取这个视图的图片和子视图,需要设置masksToBounds为YES。 图层边框 border CALayer另外两个非常有用的属性borderWidth和borderColor。...因为计算阴影是一个很耗资源的步骤,尤其有多个子图层的时候。如果我们指定阴影的形状的话,可以指定阴影的样子来节省计算阴影的资源开销。...图层蒙版 mask 这节的原文章前有一堆铺垫的,我就不说了,想看的点击查看原文 本节主要是介绍CALayer的maskt属性,它可以实现一些比较好玩的裁剪效果。而不是常规的圆形、矩形裁剪。...*maskLayer = [CALayer layer]; maskLayer.frame = self.imageView.bounds; UIImage *maskImage = [UIImage

    1.1K30

    【IOS开发进阶系列】动画专题

    UIImage有一个CGImage属性,它返回一个"CGImageRef",如果你想把这个值直接赋值给CALayer的contents,那你将会得到一个编译错误。...那是因为和UIImage不同,CGImage没有拉伸的概念。当我们使用UIImage类去读取我们的雪人图片的时候,他读取了高质量的Retina版本的图片。...这个方法的好处在于算法能够从一系列已经接近于最终大小的图片中得到想要的结果,也就是说不要对很多像素同步取样。这不仅提高了性能,也避免了小概率因舍入错误引起的取样失灵的问题。...CALayer有一个属性叫做sublayerTransform。它也是CATransform3D类型,但和对一个图层的变换不同,它影响到所有的子图层。...这里涉及到两个东西: 一是Layer(基类CALayer),一是Animation(基于CAAnimation).

    56910

    iOS动画-CALayer基础知识

    时,其内部会自动创建CALayer图层对象(即UIView的关联图层),UIView调用drawRect:方法进行绘图,并且将所有的内容绘制到自己的图层上,绘制完毕后,系统会将图层拷贝到屏幕上,于是就完成了...图层与视图的底层关系.png UIView、UIColor、UIImage都定义于UIKit框架中; CALayer定义在QuartzCore框架中的CoreAnimation中; CGImageRef...下面是一些UIView没有暴露出来的CALayer的功能: 设置阴影、圆角、带颜色边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 二、CALyer寄宿图与contents属性 CALayer具有和...CALayer的contents,却会得到一个编译错误。...主动绘制 我们需要显式的调用-display方法;这不同于UIView,当图层显示到屏幕上时,CALayer不会自动重绘它的内容,CALayer把重绘的决定权交给了开发者; 2.绘制特点 尽管没有使用

    1.9K50

    Excel图表学习:创建带有阴影区域的正态曲线图

    本文详细介绍如何配置数据并创建带有阴影区域的正态曲线图。 打开一个新工作簿,至少包含有三个工作表,其名称分别为:Control,Data和Reports。...其中设置部分的数据为: Mean:数据的平均值。 StdDev:数据的标准偏差。 NumRows:要绘制的数据的行数。 Zmin:要绘制的最小标准偏差数。 Zmax:要绘制的最大标准偏差数。...PctShade:曲线左侧阴影区域的百分比,从.0001%到99.999%。 PctClear:曲线左侧非阴影区域的百分比,从.0001%到99.999%。...Y(垂直)值: D2:=NORM.DIST(C2,Mean,StdDev,FALSE) 列E计算阴影区域的Y值: E2:=IF(OR(C2>ShadeRight,C2的“散点图——带平滑线的散点图”,将绘制的图表剪切并复制到工作表Reports中,如下图3所示。

    1.4K40

    CALayer的寄宿图

    和UIView最大的不同是,CALayer不处理用户的交互。...寄宿图 事实上,CALayer类能够包含一张你喜欢的图片,layer中所包含的这张图片称为CALayer的寄宿图。...- (nullable CGImageRef)CGImage; 如果你想把这个值直接赋值给contents,那么你将得到一个编译错误,因为CGImageRef并不是一个真正的cocoa对象,而是CoreFoundation...和bounds、frame不同,contentsRect不是按点来计算的,而是使用的单位坐标,单位坐标指定在0到1之间,是一个相对值(像素和点都是绝对值),所以contentsRect是相对于寄宿图的尺寸而言的...在标准设备上,一个点就是一个像素;但是在Retina屏幕上,按照不同的屏幕尺寸,一个点可以表示一到多个像素。

    1K20

    CALayer 实用属性补充

    为方便对CALayer的学习,特记录以下内容,整理自ios核心动画高级技巧 · GitBook (墙裂推荐阅读此翻译文档)  contents 属性 这个属性的类型被定义为id(这是由于MacOSX...当我们使用UIImage时,会获取高质量的图片,但CGImage没有拉伸概念,因此使用CGImage设置图片时,拉伸的因素会在转换的时候丢失,当用代码设置contents图片时,要手动设置图层的contentsScale...的属性,避免Retina屏幕显示错误 layer.contentsScale = [UIScreen mainScreen].scale; ?...contentsScale maskToBounds 默认情况下,UIView会绘制超过边界的内容或子视图,CALayer也一样。...它与UIImage的-resizableImageWithCapInsets:方法相似。 ? contentsCenter 这个属性是可以在Interface Builder 里面进行配置的。 ?

    94830

    YYText 源码剖析:CoreText 与异步绘制

    YYText 核心思路:在异步线程创建图形上下文,然后利用 CoreText 绘制富文本,利用 CoreGraphics 绘制图片、阴影、边框等,最后将绘制完成的位图放到主线程显示。 ?...步骤看起来很简单,源码中涉及到 CoreText 和 CoreGraphics 的绘制时需要大量的代码来计算位置,这也是本文的重点之一。...但是有一个自定义属性比较特殊: YYTextAttachmentAttributeName : YYTextAttachment 因为这个是添加一个附件 (UIImage、UIView、CALayer)...当然,上面图中的图片可以为UIView CALayer。到目前为止,占位 run 的位置已经确定了,接下来就需要把 UIImage UIView CALayer绘制到相应的空位上了。...五、异步绘制 上面介绍了几种特殊的自定义富文本属性,对于其它的自定义属性,基本上都是使用 CoreGraphics API 绘制,比如边框、阴影等,当然 CoreText 自带有很多效果,YYText

    4.2K30

    iOS面试问题总结

    图像显示原理1 CPU工作: Layout:UI布局计算、文本计算 Display:绘制drawRect方法 Prepare:图片编解码,UIImage是不能直接显示的需要先解码 Commit:...layer上打上一个脏标记),然后并没有立即发生当前视图的绘制工作,而是在当前runloop快要结束的时候调用CALayer的display方法,进入到当前视图真正的绘制工作的流程当中。...原因是由于要减少绘制次数,提升性能,所以要在当前runloop快要结束的时候调用CALayer的display方法。 ?...等子线程绘制位图完毕,再回到主队列中提交位图,设置给CALayer的contents属性,完成一个UI控件的异步绘图过程。 ?...(1)常见触发场景 圆角(必须要和maskToBounds一起使用时才会触发) 光栅化(shouldRasterize) 阴影(shadow) 图层蒙版(mask) group opacity(组透明度

    68120

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

    这里特别说一下 CALayer:CALayer 内部并没有属性,当调用属性方法时,它内部是通过运行时 resolveInstanceMethod 为对象临时添加一个方法,并把对应属性值保存到内部的一个...对此你在应用中,应该尽量减少不必要的属性修改。 视图无交互时尽量使用CALayer,比如使用CALayer代替UIView\UILabel\UIImageView。...只有在显示的时候才会解码,而这个操作一般是在主线程,所以容易造成卡顿) 说明:[UIImage imageNamed:@"xxx"]方式加载进来的图片是不能直接显示到屏幕上的,imageNamed:加载进来的是压缩过的图片的二进制数据...CALayer和UIView除了对事件的处理之外,无差别。CALayer用来显示内容的,UIView是用来监听点击事件的,如果内容和用户无交互,可以考虑使用CALayer。...重写CALayer的display方法,在display方法中异步绘制。

    9.6K73

    iOS动画-CAAnimation使用详解

    动画还是UIViewAnimaitonWithBlock动画都只是对UIView的关联图层CALayer动画的进一步封装。...shadowOffset 阴影偏移 shadowOpacity 阴影透明度 shadowRadius 阴影角度 附:KeyPath官方参考链接 五、基础动画CABasicAnimation CABasicAnimation...;于是就有了过渡的概念; 过渡动画使用CATransition来实现,它同样是CAAnimation的子类;它并不像属性动画那样在平滑的两个值之间做动画,而是影响到整个图层的变化。....对于视图关联的图层,过渡动画的默认效果是禁用的; 2.我们不能错误的理解CATransition只可以改变非动画属性,其实它也可以对类似backgroundColor的属性做过渡效果动画; 5.自定义过渡动画...CALayer有一个-renderInContenxt:方法,通过它可以将图层绘制到Core Graphics的上下文中捕获当前内容的图片;所以现在我们尝试这样的实现:对当前视图控制器View进行截图,

    2.4K10

    iOS性能优化——图片加载和处理

    ;当图片被赋值给UIImageView时,CALayer读取图片内容进行渲染,所以需要对图片进行解码; 而上文的缩略图生成过程中,已经对图片进行解码操作,此时的UIImage只是一个CGImage的封装...,所以当UIImage赋值给UIImageView时,CALayer可以直接使用CGImage所持有的图像数据。...总结 应用上述的优化策略,已经能对图片加载有比较好的优化。 WWDC后续还有对CustomDrawing和CALayer的BackingStore的介绍,因为与图片关系不大,不在此赘述。...) Each thread gets less time to actually decode images(每个线程获得很少的时间解码图像) 从这个案例我们学习到如何避免图像解码的线程爆炸,但还能扩散思维...如果能对你有所触动,十分荣幸; 如果你觉得能改进,欢迎提出来帮助我成长; 如果你觉得毫无用处,至少你知道一种错误的学习方法。

    2.1K170

    iOS性能优化-iOS 页面优化

    首先我们项目里的本地图和加载过来的网图,都是经过压缩的二进制数据(常用的jpg,png)。 在显示到界面上的时候,需要将这些二进制数据绘制到对应的“画布”上。 这个绘制的过程就是解码。...异步图片解码 系统会默认在UIImage加载到UIImageView或者CALayer的content上的时候,在主线程进行解码。...更加智能的缓存策略 可以减少拆分后的包体积 支持图片拉伸等特性。 减少Backing Store的使用 什么是backing store? CALayer的contents所指向的区域。...对于使用频繁的图片,可以使用[UIImage imageWithNamed:@""]方式创建,利用系统级别的缓存来提高效率,减少内存。...造成离屏渲染的方式 关于离屏渲染,实际开发中基本上都是: 圆角+剪裁的组合 设置layer的mask 设置阴影 光栅化 抗锯齿 解决离屏渲染 对于设置阴影造成的离屏渲染,解决方式就是使用贝塞尔曲线绘制好

    2.6K21
    领券