【问题标题】:How can I draw a shadow beyond a UIView's bounds?如何在 UIView 的范围之外绘制阴影?
【发布时间】:2010-05-12 08:57:18
【问题描述】:

我正在使用How do I draw a shadow under a UIView? 中描述的方法在视图内容后面绘制阴影。阴影被剪裁到视图的边界,尽管我在 Interface Builder 中为视图禁用了“剪辑子视图”。是否可以在视图周围绘制阴影,而不仅仅是视图中?

我不想在视图内绘制阴影,因为视图会接收到阴影区域的触摸事件,而阴影区域确实属于背景。

【问题讨论】:

    标签: iphone cocoa-touch quartz-graphics


    【解决方案1】:

    考虑在 UIView 的核心动画层上设置属性来绘制阴影,而不是在 drawRect 中手动绘制。

    例如:

    [descriptionInput setClipsToBounds:NO];
    [descriptionInput.layer setShadowColor:[[UIColor blackColor] CGColor]];
    [descriptionInput.layer setShadowOpacity:0.8];
    [descriptionInput.layer setShadowOffset:CGSizeMake(0.0, 3.0)];
    

    为此,您需要包含 QuartzCore:

    #import <QuartzCore/QuartzCore.h>
    

    【讨论】:

      【解决方案2】:

      clipsToBounds 只控制视图子级的剪辑,而不控制视图本身的绘制;因此它不能解决你的问题。

      如果您可以将阴影绘制到不同的视图上并将其添加为子视图,则它不会被剪裁。但是,我不知道您使用的方法有多大可能:(

      【讨论】:

        【解决方案3】:

        不鼓励绘制外部视图边界。也许您可以将阴影直接包含在背景中...

        问候,

        【讨论】:

        • 为什么不鼓励绘制外部视图边界?如果出现阴影,具体是什么原因?
        • 它会导致性能问题,因为背景层和阴影层这两个层之间的颜色混合,它的 cpu 密集型。 stackoverflow.com/a/36794256/1348121
        猜你喜欢
        • 2016-11-14
        • 2012-01-09
        • 2010-10-22
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        相关资源
        最近更新 更多