【问题标题】:Inner shadow in a UILabelUILabel 中的内部阴影
【发布时间】:2011-08-08 20:57:17
【问题描述】:

在不使用图像的情况下,在 UILabel 中绘制内部阴影的最简单方法是什么?

我知道您可以将 shadowColor 和 shadowOffset 用于投影,但我没有看到内阴影的任何此类属性。

【问题讨论】:

  • 如果您提供您想要的示例图像可能会有所帮助。我不确定您是否希望使文本看起来凹陷或其他一些视觉效果。
  • 当然,这是一个内部阴影的示例(来自 Google):sublimeorange.com/css/css3-inner-shadow

标签: iphone ios uiview uilabel


【解决方案1】:

查看 FXLabel。我最近一直在使用它,效果很好。

https://github.com/nicklockwood/FXLabel

【讨论】:

    【解决方案2】:

    我不相信有任何简单的方法可以实现这种外观。您将需要使用图像或自定义视图来绘制阴影。

    我会使用您最喜欢的图像编辑器来制作与透明度(或颜色,如果需要)合成的内部阴影图像,并将其加载到可拉伸的 UIImage 中。例如这里是一个内部阴影图像(17px x 17px):

    你可以这样加载它:

    UIImage* innerShadow = [ [ UIImage imageNamed: "innershadow.png" ] 
            stretchableImageWithLeftCapWidth: 8 topCapHeight: 8 ];
    UIImageView* innerShadowView = [ [ [ UIImageView alloc ] initWithImage: innerShadow ] 
            autorelease ];
    myLabel.backgroundColor = [ UIColor clearColor ];
    

    然后将innerShadowView放在标签后面。如果您想避免使用图像资源,也可以通过编程方式生成图像。

    ** 基于 cmets 的更新如下 **

    啊,根据您最近的评论,您要的效果与之前评论中的图片完全不同。

    在这种情况下,您必须创建一个 UILabel 子类并自己绘制以合成您正在寻找的效果。看看this answer如何合成内阴影效果。

    【讨论】:

    • 嗯,我想这可能适用于UIViews,但我需要一个适用于UIViews 和UILabels 的解决方案。
    • UILabel 是 UIView 的子类。您认为这对您不起作用有什么具体原因吗?
    • 是的,但是将其应用于 UILabel 只会在标签的框架中放置一个内部阴影。我需要在实际文本中添加一个内部阴影。抱歉,如果第一个示例具有误导性,但应该是这样的:download.oracle.com/javafx/2.0/visual_effects/img/inner.jpg
    【解决方案3】:

    内阴影的任何此类属性是什么意思。 shadowOffset 是设置 UILabel 的阴影(垂直或水平阴影)的选项。

    我不知道,但这个answer 可能实施起来很长。

    【讨论】:

    • 投影≠内阴影。阅读问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多