作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将文本放在各种图像之上,然后遇到 this article on overlaying text on images 建议在文本边界周围放置模糊的深色矩形,以帮助它从图像中脱颖而出。基本上,就好像文本的阴影是一个矩形。他们称之为稀松布。
我首先通过真正模糊阴影来尝试这个,但是对于细文本它真的不可见。我想我需要以某种方式在文本后面绘制一个模糊/阴影的矩形。我想有一些方法可以用 CoreGraphics/CoreText 来绘制它。由于我主要处理 OpenGL,因此我在使用这两种方法中的任何一个方面都不是很有经验。
对于在绘制 NSAttributedStrings 时尝试创建模糊的矩形阴影有什么建议吗?我能否以某种方式使阴影来自另一个对象(如矩形)而不绘制该对象。
最佳答案
使用 CALayer 可以很简单地做到这一点 shadowPath属性(property)。正常用法如下所示:
myLabel.layer.shadowPath = [UIBezierPath bezierPathWithRect:myLabel.layer.bounds].CGPath;
myLabel.layer.shadowRadius = 10;
myLabel.layer.shadowOpacity = 0.5;
在你的例子中,听起来你想要一个更大的盒子围绕着你的标签,所以你需要改变传递给 +bezierPathWithRect:
的矩形。该路径在图层的坐标空间中指定(即左上角为 0,0),因此如果您想要一个从标签左侧 50pt 开始并在标签上方 30pt 处开始且大小为 200x100pt 的框,您可以这样做这代替:
myLabel.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(-50, -30, 200, 100)].CGPath;
...然后根据您的喜好调整 shadowRadius
和 shadowOpacity
属性。
关于ios - 在 NSAttributedString 文本下绘制稀松布 ("Blurry Transparent Rectangle"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657008/
我是一名优秀的程序员,十分优秀!