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

时间:2013-09-22 20:12:10

标签: iphone ios uiimage uilabel quartz-graphics

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

Figure 1

传递子类的参数

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

绘制标签时的逻辑

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

    这种用法可能类似于

    1. 分配UIImage
    2. UIImageView
    3. 中显示
    4. 创建UILabel子类,其中包含相对于UILabel将放置在
    5. 中的图像部分的反转文本颜色
    6. UILabel添加为UIImageView
    7. 的子视图

      这可能有的问题

      我无法估计滚动时的速度有多快,但这可以通过将文本直接绘制到UIImage来解决,因为它将是静态的。如果持有标签的UIImageView将被放入UIScrollView,是否会在每次滚动时重新绘制?

      提前多多谢谢你!

1 个答案:

答案 0 :(得分:0)

查看我的问题的答案:drawRect drawing 'transparent' text?

有许多答案,包括你可以从Robin Senior使用的一个很棒的开源项目。

享受!