怎么为android控件边缘添加阴影

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么为android控件边缘添加阴影相关的知识,希望对你有一定的参考价值。

参考技术A 为控件设置阴影效果,使用shape进行阴影效果绘制即可。 shape使用方法具体可自行百度。 你的采纳是我前进的动力, 记得好评和采纳,答题不易,互相帮助, 手机提问的朋友在客户端右上角评价点(满意)即可. 如果你认可我的回答

为选定的边缘 UIView 添加阴影

【中文标题】为选定的边缘 UIView 添加阴影【英文标题】:Add shadow to selected Edges UIView 【发布时间】:2018-09-12 14:30:09 【问题描述】:

我需要创建带有阴影的 UIView,但我只需要右、左、下边缘的阴影 -> 上边缘没有阴影。有可能这样做吗?我尝试了不同的偏移量,但我没有达到我的目标。

【问题讨论】:

你的意思是你只希望阴影来自矩形的一个边缘吗?例如,阴影从底部出现,而不是从顶部或侧面出现? 您可能想使用CALayer.shadowPath - 这是一篇不错的入门博文:nachbaur.com/2010/11/16/…(不是我的) 【参考方案1】:

这样的?

let yourView = UIView()
yourView.frame = CGRect(x: 50, y: 50, width: 100, height: 100)
yourView.backgroundColor = UIColor.blue // NEEDS A COLOR TO SHOW SHADOW
yourView.layer.shadowColor = UIColor.black.cgColor
yourView.layer.shadowOpacity = 1
yourView.layer.shadowOffset = CGSize.zero
yourView.layer.shadowRadius = 10
self.view.addSubview(yourView)

【讨论】:

【参考方案2】:

在我个人看来,克服后一个问题的最佳方法是创建 UIView 的@IBDesignable 扩展并声明@IBInspectable 属性,如下所述

public extension UIView 

    // MARK: - Inspectables

    /**
     Defines the color of the shadow behind the view (defaults to nil).
     */

    @IBInspectable public var shadowColor: UIColor? 
        set 
            if let color = newValue 
                self.layer.shadowColor = color.cgColor
             else 
                self.layer.shadowColor = nil
            
         get 
            if let color = layer.shadowColor 
                return UIColor(cgColor: color)
            
            return nil
        
    

    /**
     Defines the radius of the shadow behind the view.
     */

    @IBInspectable public var shadowRadius: CGFloat 
        set(newValue) 
            self.layer.shadowRadius = newValue
         get 
            return self.layer.shadowRadius
        
    

    /**
     Defines the opacity of the shadow behind the view.
     */

    @IBInspectable public var shadowOpacity: Float 
        set(newValue) 
            self.layer.shadowOpacity = newValue
         get 
            return self.layer.shadowOpacity
        
    

    /**
     Defines the offset of the shadow behind the view.
     */

    @IBInspectable public var shadowOffset: CGSize 
        set(newValue) 
            self.layer.shadowOffset = newValue
         get 
            return self.layer.shadowOffset
        
    


之后,您将能够为情节提要中的每个 UIView(或从 UIView 继承的类)找到后面的参数。

但是,如果您以编程方式工作,则必须尝试使用​​ shadowOffset 属性,直到获得所需的视觉效果。

【讨论】:

以上是关于怎么为android控件边缘添加阴影的主要内容,如果未能解决你的问题,请参考以下文章

android编程用怎么让控件的“右边”对齐在屏幕的中心?

android view动画实现从边缘滑出的效果怎么做

android view动画实现从边缘滑出的效果怎么做

android view动画实现从边缘滑出的效果怎么做

android view怎么设置位置

这种 ANDROID边界效果怎么做的.发光或者叫阴影