我已经制作了一条路径来掩盖我的观点:
let path = // create magic path (uiview bounds + 2 arcs)
let mask = CAShapeLayer()
mask.path = path.cgPath
view.layer.masksToBounds = false
view.layer.mask = mask

到目前为止一切都好.

现在我想添加一个跟随路径的阴影,它可能吗?

我尝试了几种方式,最后一种是:

mask.shadowPath = path.cgPath
mask.shadowColor = UIColor.red.cgColor
mask.shadowOffset = CGSize(width: 10,height: 2.0)       
mask.shadowOpacity = 0.5

但这会产生局部阴影和原始视图的颜色.

使用调试视图层次结构

有什么建议?

最终结果应与此类似,但阴影“跟随”路径上的弧.

解决方法

当您向图层添加蒙版时,它会剪切该蒙版之外的任何内容 – 包括阴影.要实现此目的,您需要在蒙版视图下方添加一个“阴影”视图,该视图与蒙版具有相同的路径.

或者将阴影图层添加到蒙版视图的超视图中.

let view = UIView(frame: CGRect(x: 50,y: 70,width: 100,height: 60))
view.backgroundColor = .cyan

let mask = CAShapeLayer()
mask.path = UIBezierPath(roundedRect: view.bounds,cornerRadius: 10).cgPath
view.layer.mask = mask

let shadowLayer = CAShapeLayer()
shadowLayer.frame = view.frame
shadowLayer.path = UIBezierPath(roundedRect: view.bounds,cornerRadius: 10).cgPath
shadowLayer.shadowOpacity = 0.5
shadowLayer.shadowRadius = 5
shadowLayer.masksToBounds = false
shadowLayer.shadowOffset = .zero    

let container = UIView(frame: CGRect(x: 0,y: 0,width: 200,height: 200))
container.backgroundColor = .white
container.layer.addSublayer(shadowLayer)
container.addSubview(view)

如果你打算在其他地方使用它,你可以创建一个包含阴影层的ShadowMaskedView和蒙版视图 – 可能带有路径属性.

ios – UIView图层上的阴影的更多相关文章

  1. ios – UIView图层上的阴影

    最终结果应与此类似,但阴影“跟随”路径上的弧.解决方法当您向图层添加蒙版时,它会剪切该蒙版之外的任何内容–包括阴影.要实现此目的,您需要在蒙版视图下方添加一个“阴影”视图,该视图与蒙版具有相同的路径.或者将阴影图层添加到蒙版视图的超视图中.如果你打算在其他地方使用它,你可以创建一个包含阴影层的ShadowMaskedView和蒙版视图–可能带有路径属性.

  2. Swift转场动画的使用

    ViewController.swift创建一个按钮,点击按钮时弹出新的控制器PopoverAnimator.SwiftPopoverPresentAtionController.swift继承于:UIPresentationController所有的UIViewController的presentation都是由UIPresentationController

  3. android – Path.addArc的圆扇形剪裁蒙版?

    我需要创建一个具有圆形扇区形状的剪贴蒙版.我可以使用以下内容绘制一个:我想用它作为剪切路径,所以我尝试过:但是addArc没有useCenter参数,所以我得到的不是扇区而是段.解决方法好吧,使用剪贴蒙版似乎没有正确的方法.但是,使用PorterDuffXfermode还有另一种方法.参见ApiDemos中的Xfermodes.我只是使用drawArc在DST_OUT运算符上绘制一个扇区.这使得扇区覆盖的图像部分不可见(未绘制).

  4. jQuery实现手风琴效果(蒙版)

    这篇文章主要介绍了jQuery实现手风琴效果,附带蒙版特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. jQuery实现鼠标移入显示蒙版效果

    这篇文章主要为大家详细介绍了jQuery实现鼠标移入显示蒙版效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  6. jquery实现图片无缝滚动 蒙版遮蔽效果

    这篇文章主要为大家详细介绍了jquery实现图片无缝滚动,蒙版遮蔽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. 如何在iOS中实现“时钟擦除”/径向擦除效果?

    有时您会看到正在使用的“时钟擦除”动画.像这样的东西:你会如何在iOS中实现这种效果?

  8. java – 可扩展的剪贴蒙版

    我需要将变量图像剪切成像这样的拼图形状的pices(不是正方形):http://www.fernando.com.ar/jquery-puzzle/我已经考虑过使用像Cairo或GD这样的PHP库这样做的可能性,但几乎没有使用这些库的经验,并且看不到用于创建剪贴蒙版的动态分析动态可缩放的不同大小的图像.我正在寻找有关使用哪种服务器端编程语言来完成此任务的指导/提示,并且最好是解决此问题的方法.解决

  9. cocos2d-x橡皮擦效果---

    底图直接加载到当前layer。其次,要搞个数组,记录一下触摸的轨迹,比较简单,就不说了。蒙版图要跟底图分开并且在上层,触摸时擦掉蒙版,显示出底图。这里需要用到CCRenderTexture,。。。

  10. objective-c – 具有抗锯齿面罩的NSVisualEffectView

    在新一届YosemiteUI的2014年WWDC之一中,它表示避免在屏蔽层中使用NSVisualEffectView.不幸的是,我的视图的图层确实有一个形状面具,结果,其中的视觉效果视图具有丑陋的锯齿状边缘效果:然而,我知道必须以某种方式创建一个蒙版的视觉效果视图,部分原因有两个:>NSVisualEffectView中的图像掩码属性产生一个平滑的防焦点掩码(但需要一个未屏蔽的背景背景,而不仅仅是

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部