UILabel 中的内部阴影
Posted
技术标签:
【中文标题】UILabel 中的内部阴影【英文标题】:Inner shadow in a UILabel 【发布时间】:2011-08-08 20:57:17 【问题描述】:在不使用图像的情况下,在 UILabel 中绘制内部阴影的最简单方法是什么?
我知道您可以将 shadowColor 和 shadowOffset 用于投影,但我没有看到内阴影的任何此类属性。
【问题讨论】:
如果您提供您想要的示例图像可能会有所帮助。我不确定您是否希望使文本看起来凹陷或其他一些视觉效果。 当然,这是一个内部阴影的示例(来自 Google):sublimeorange.com/css/css3-inner-shadow 【参考方案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如何合成内阴影效果。
【讨论】:
嗯,我想这可能适用于UIView
s,但我需要一个适用于UIView
s 和UILabel
s 的解决方案。
UILabel 是 UIView 的子类。您认为这对您不起作用有什么具体原因吗?
是的,但是将其应用于 UILabel 只会在标签的框架中放置一个内部阴影。我需要在实际文本中添加一个内部阴影。抱歉,如果第一个示例具有误导性,但应该是这样的:download.oracle.com/javafx/2.0/visual_effects/img/inner.jpg【参考方案3】:
内阴影的任何此类属性是什么意思。 shadowOffset 是设置 UILabel 的阴影(垂直或水平阴影)的选项。
我不知道,但这个answer 可能实施起来很长。
【讨论】:
投影≠内阴影。阅读问题。以上是关于UILabel 中的内部阴影的主要内容,如果未能解决你的问题,请参考以下文章