美文网首页
视觉效果 -- 阴影、蒙版

视觉效果 -- 阴影、蒙版

作者: 星空下的小纸人 | 来源:发表于2018-12-12 10:43 被阅读0次

圆角

CALayer 有个叫 conrnerRadius 的属性控制着图层角的曲率,他是一个浮点数,默认为 0 (为0 的时候是直角)。默认情况下,这个曲率值只影响背景颜色而不影响背景图片或是子图层。但将 masksToBounds 设置为 YES。图层里面所有的东西都会被截取

self.layerView.layer.cornerRadius = 20.0f


图层边框

CALayer 另外两个属性 borderWidth 和 borderColor。二者共同定义了图层边的绘制样式。这条线(也被称为stroke)沿着图层的bounds绘制。同时也包含图层的角

borderColor 是以点为单位的定义边框粗细的浮点数,默认 0

borderColor 定义了边框颜色,默认黑色。是CGColorRef 类型。

self.layerView.layer.borderWidth = 5.0f

阴影

shadowOpacity   给任意大于默认值 0 的值,阴影就可以显示在 任意图层之下。值范围 0.0( 不可见) 和 1.0 (完全不透明) 之间

如果想改动阴影,可以使用 shadowColor、shadowOffset、shadowRadius

shadowColor 控制着阴影颜色, CGColorRef 类型、默认黑色

shadowOffset 控制着阴影的放心和距离。它是一个 CGSize 值,宽度控制着 阴影横向的位移,高度控制着纵向的位移。 默认和  {0, -3}   即阴影相当于Y轴有3个点向上位移

shadowRadius 控制着阴影的模糊度。 为 0  时, 阴影和视图一样有个非常明确的边界线。当值越来越大时,边界线就越来越模糊和自然。阴影越模糊,图层的深度看上去就会更明显

图层的阴影继承自内容的外形,而不是根据边界和角半径来确定。为了计算阴影的形状,Core Animation 会将寄宿图(包括子视图)考虑在内,然后通过这些来完美搭配图层形状从而创建一个阴影

shadowPath 属性

计算阴影很消耗资源,尤其是有多个子视图,每个图层还有一个透明效果的寄宿图的时候。如果事先知道阴影形状,可以通过制定shadowPath 来提高性能。

shadowPath 是一个 CGPathRef 类型 (一个指向CGPath的指针)。CGPath 是一个 Core Graphics 对象,用来指定任意的一个矢量图形。

CGMutablePathRef path = CGPathCreateMutable();

CGPathAddEllipseInRect(path, NULL, layerView.bounds);

layerView.layer.shadowPath = path;

图层蒙版

CALayer 有个属性 mask。 本身是个CALayer 类型,有和其他图层一样绘制和布局属性。类似于一个子图层,相对于父图层布局。 mask 定义了父图层的部分可见区域。

只有在mask图层里的内容才是他关心的内容,其他一切都会被隐藏起来

CALayer *maskLayer = [CALayer layer];

maskLayer.frame = self.layerView.bounds;

UIImage *maskImage = [UIImage imageNamed:@"Cone.png"];

maskLayer.contents = (__bridge id)maskImage.CGImage;

self.imageView.layer.mask = maskLayer;

拉伸过滤

CALayer 提供了三种拉伸过滤方法:kCAFilterLinear、kCAFilterNearest、kCAFilterTrilinear

minification(缩小图片)和magnification(放大图片)默认的过滤器都是 kCAFilterLinear

对于没有斜线的小图来说,最近过滤算法要好很多,对于大图来说,双线性滤波和三线性滤波表现的更出色。

线性滤波保留了形状,最近过滤保留了像素的差异

view.layer.magnificationFilter = kCAFilterNearest;

组透明

UIView 有个alpha属性来确定视图的透明度。CALayer 有个等同的属性叫 opacity,这两个属性都是影响子层级的。

如果希望设置一个图层的透明度后,希望它包含的整个图层树像一个整体一样的透明:

1.可以通过设置Info.plist 文件中的 UIViewGroupOpacity 为 yes。但是这个会影响整个app

2.设置CALayer的一个叫 shouldRasterize属性来实现组透明效果。设置为yes,在应用透明钱,图层及其子图层都会被整合成一个整体的图片,这样就么有透明度混合的问题了。

为了启动 shouldRasterize属性,我们设置了图层的 rasterizationScale 属性,默认情况下,所有图层的拉伸都是1.0,所以如果你使用了 shouldRasterize 属性,你就要确保你设置了rasterizationScale属性去匹配屏幕,以防止出险Retina屏幕像素化问题。

view.layer.shouldRasterize = YES;

view.layer.rasterizationScale = [UIScreen mainScreen].scale;

相关文章

  • 视觉效果 -- 阴影、蒙版

    圆角 CALayer 有个叫 conrnerRadius 的属性控制着图层角的曲率,他是一个浮点数,默认为 0 (...

  • iOS-Core Animation

    1、视图效果 1.1 圆角 1.2 图层边框 1.3 阴影 简单的阴影 裁剪 + 阴影 1.4 图层蒙版 1.5...

  • 解决input在ios存在重影边框问题

    去掉默认样式,上边框的阴影,点击时的蒙版

  • C4D中阿诺德环境吸收节点

    黑色:控制阴影区域; 该节点也适合做蒙版,增加污垢细节;

  • 轨道蒙版

    轨道蒙版类型:1、Alpha蒙版;2、Alpha反转蒙版;3、亮度蒙版;4、亮度反转蒙版; 轨道蒙版至少需要两个层...

  • CALayer的mask属性(一个属性撑起一场动画)

    最初知道这个属性还是在iOS核心动画高级技巧/视觉效果/图层蒙版看到的,然后随着对mask属性的了解,以及一些炫酷...

  • 3D Lut Creator(二)

    一、双色盘调色 高光盘、阴影盘分开调整 二、Mask 蒙版 Hue 三、调整面板 Temp 色温Tint 色调 ...

  • 关于Rella

    看到一个rella作画视频,基本步骤如下 1.底色 2.阴影形状 3.在确立的阴影形状上用蒙版添加深浅变化 4.发...

  • 零基础学习PhotoshopCS6︱第十课 图层蒙版

    定义:蒙在图层上的板。 这个板可以是白色、灰色、黑色。 种类:图层蒙版、矢量蒙版、快速蒙版、剪贴蒙版 一、图层蒙版...

  • PS中的蒙版有哪些用途?

    PS中的蒙版有哪些用途蒙版可以说是一个超级好用的灵活的橡皮檫黑色蒙版→遮罩;灰色蒙版→透明;白色蒙版→显示普通蒙版...

网友评论

      本文标题:视觉效果 -- 阴影、蒙版

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