如何在 UILabel 上仅突出显示触摸文本的背景

Posted

技术标签:

【中文标题】如何在 UILabel 上仅突出显示触摸文本的背景【英文标题】:how can I highlight only background of the text on touch on a UILabel 【发布时间】:2011-09-10 12:14:43 【问题描述】:

在我的应用程序中,我已经修改了 UILabel,并在出现电话号码或电子邮件时将其置于文本下方。

但我想在触摸电话号码或电子邮件时突出显示文本,如下所示(我想要文本“http://www.foodreporter.net”背景中的深灰色突出显示如下所示的内容。

ios 3.1.2 开始,我想在不使用 CoreText 作为我的应用目标的情况下执行此操作。所以我不想使用 CoreText 和 Attributed 字符串。

我想继承 UILabel 并以某种方式做到这一点。怎么办?

我没有使用 OHAttributedLabel 和 TTTAttributedLabel 的选项。

【问题讨论】:

我认为您不能只“突出显示”标签文本的一部分,甚至不能设置它的部分背景。您可以使用可以格式化的第二个标签/btn,或者您可以覆盖半透明视图/按钮/等,并在标签中创建这部分文本的不同背景外观...... - 或者只使用 textView打开 url 检测,那么一切都是自动的...... 您为什么不能选择使用我的OHAttributedLabel 课程?您的项目是针对 iOS4 之前(然后是 CoreText 之前)的设备吗? @AliSoftware:是的,我的应用程序是针对 iOS 3.1.2 及更高版本的。还有什么我可以尝试的可以帮助我的吗? W/O CoreText 我没有看到直接的解决方案,但我没有搜索过。您可能会使用 NSString UIKit 添加来计算 NSString 的大小,直到被突出显示的部分,计算要突出显示的文本的大小,并计算绘制突出显示所需的 CGRects ......所有这些都是手动的......但这可能会很痛苦。也许有更好的解决方案,我只是没有它,让其他可能知道一个答案的人(注意:您应该在问题中提到您的目标是 3.1.2,它可能会影响其他人的答案建议) @AliSoftware:好的。感谢指导 【参考方案1】:

我建议一种解决方法。您可以做的是,使用自定义 UIButton 而不是标签。根据您的需要设置按钮的默认和突出显示图像。(默认为简单文本,突出显示为突出显示的文本)。

快乐编程

【讨论】:

你确定我们不能通过继承 UILabel 来做到这一点吗?

以上是关于如何在 UILabel 上仅突出显示触摸文本的背景的主要内容,如果未能解决你的问题,请参考以下文章

斯威夫特 iOS。多行 UILabel 背景颜色跟随文本

有背景颜色换行 UILabel [重复]

React-native:如何在触摸时突出显示平面列表项

在表格中突出显示 UILabel

如何选择/突出显示列表视图中的项目而不触摸它?

如何将具有突出显示颜色背景的文本添加到 ImageView