我正在尝试对 UILabel 进行子类化(因为这可能是最简单的方法),因此它的文本颜色对其覆盖的背景图像部分是负的。我也有一个大概的想法,但无法将其转换为代码。
传递子类的参数
- 背景图片
- UILabel 在背景图像中的位置(可能是 CGRect,因为它需要知道 UILabel 将覆盖的背景图像的 x、y、w、h) - 这也可能只是 UILabel 的矩形,因为 UILabel 将是子视图包含背景图像的 UIImageView 。
绘制标签时的逻辑
- 使用文本创建一个蒙版 - 蒙版的内容只是文本本身,而不是背景。
- 裁剪被标签覆盖的背景图像的特定部分(矩形)。
- 删除(或使透明)文本蒙版之外的所有图像 - > 这样您将只留下文本所在的图像,其余的将消失。
- 反转图像的颜色(可能使用这种方法)或
kCGBlendModeDifference
以某种方式使用? - 在 UILabel 的方法之一
drawRect
或drawTextInRect
方法中绘制所有这些。
用法
这个的用法可能是这样的
- 分配一个
UIImage
- 将其显示在
UIImageView
- 使用与将要放置
UILabel
的图像部分相关的反转文本颜色创建子类UILabel
- 添加
UILabel
作为子视图UIImageView
这可能存在的问题
我无法估计滚动时的速度有多快,但是这可以通过将文本直接绘制到 中来解决UIImage
,因为它将是静态的。如果将UIImageView
持有标签放入 aUIScrollView
中,是否会在每个卷轴上重新绘制?
非常感谢您!