关于背景图像的负文本颜色

Mar*_*man 8 iphone quartz-graphics uiimage uilabel ios

我正在尝试子类化(因为这可能是最简单的方法)UILabel所以它的文本颜色对于它覆盖的背景图像的部分是负的.我也有一个近似的想法如何做到这一点,但不能将其转换为代码.

图1

传递子类的参数

  • 背景图片
  • UILabel在背景图像中的位置(可能是CGRect,因为它需要知道UILabel将覆盖的背景图像的x,y,w,h) - 这也可能只是UILabel的矩形,因为UILabel将是子视图包含背景图像的UIImageView.

绘制标签时的逻辑

  1. 使用文本创建蒙版 - 蒙版的内容只是文本本身,而不是背景.
  2. 裁剪背景图像的特定部分(矩形),该部分由标签覆盖.
  3. 删除(或使透明)文本掩码外的所有图像 - >这样你只留下文本所在的图像,剩下的就会消失.
  4. 反转图像的颜色(可能使用方法)或kCGBlendModeDifference以某种方式使用?
  5. 用UILabel drawRectdrawTextInRect方法之一绘制所有这些.

用法

使用这可能是类似的

  1. Alloc an UIImage
  2. 在一个显示它 UIImageView
  3. UILabel使用相对于UILabel将放置的图像部分的反转文本颜色创建子类
  4. 添加UILabel作为子视图UIImageView

这可能有问题

我无法估计滚动时的速度有多快,但这可以通过将文本直接绘制到其中来解决UIImage,因为它将是静态的.如果UIImageView拿着标签放入a UIScrollView,是否会在每个卷轴上重新绘制?

非常感谢你提前!

run*_*mad 0

查看我的问题的答案:draw矩形绘制“透明”文本?

有很多答案,包括您可以使用 Robin Senior 提供的一个很棒的开源项目。

享受!