如何仅在 UIButton 中为标题的特定部分设置图像
Posted
技术标签:
【中文标题】如何仅在 UIButton 中为标题的特定部分设置图像【英文标题】:How to set image only for a certain part of title in UIButton 【发布时间】:2014-07-25 10:13:46 【问题描述】:我有一个带有标题的 UIButton。 将其视为星期四 20。 有一张图片被设置为按钮的背景,这张图片的宽度调整了,内容模式是宽高比的。所以它显示为完整的按钮。 我的问题: 我只需要“20”部分的图像,而不是整个“Thu 20”。 如果你看到 iPad 日历,你就会明白这一点。 我该怎么做? 谢谢
【问题讨论】:
你可以在这里添加你的图片吗? @KathiravanG raw.githubusercontent.com/fggeraissate/FFCalendar/master/… 红圈你的图片对吗? 你希望红色圆圈只覆盖 20 对吗? 让我们continue this discussion in chat。 【参考方案1】:除非属性字符串之类的东西具有在某些文本周围放置矩形的功能,否则我建议您创建一个自定义视图来处理此问题:
您需要一个视图,除了 2 个字符串,一个普通字符串和一个矩形字符串。然后插入一个普通标签,设置文本,调用sizeToFit。然后添加第二个标签并执行与第一个相同的操作,但最后将其放在第一个标签旁边。然后根据标签尺寸将图像视图添加到标签上。然后调整整个视图的大小以适应其上的所有视图。现在您可以将此自定义标签添加到按钮或您想要的任何位置...
【讨论】:
【参考方案2】:我宁愿建议你放置一个包含你的图像的图像视图,然后在图像顶部放置一个标签,上面有你的“20”,然后在两者的顶部放置一个没有背景颜色和没有图像的自定义 UIButton
【讨论】:
【参考方案3】:通过一些工作,您可以覆盖这些UIButton
方法之一,以将图像放置在正确的位置。使用UILabel
中的方法来确定“20”的坐标将给出图像的位置。
class UIButton
// these return the rectangle for the background (assumes bounds), the content (image + title) and for the image and title separately. the content rect is calculated based
// on the title and image size and padding and then adjusted based on the control content alignment. there are no draw methods since the contents
// are rendered in separate subviews (UIImageView, UILabel)
open func backgroundRect(forBounds bounds: CGRect) -> CGRect
open func contentRect(forBounds bounds: CGRect) -> CGRect
open func titleRect(forContentRect contentRect: CGRect) -> CGRect
open func imageRect(forContentRect contentRect: CGRect) -> CGRect
有关这些方法的更多信息,请参阅 Apple 的 Documentation“获取维度”。
【讨论】:
以上是关于如何仅在 UIButton 中为标题的特定部分设置图像的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 如何使 UIButton 仅在附加的图像上点击交互并忽略透明部分
如何将 UILabel 和 UIButton 项都放入 UITableView 标题部分的 UIView
如何在 iOS 的 UITableView Cell 中为 UIButton 设置标签值?