swift 某个文字label设置固定frame以后,在它右边新增一个图标,图标要求紧贴文字内容,当文字内容超过frame以后,紧贴frame右边界,如何用swift代码实现
时间: 2023-06-06 15:07:07 浏览: 57
首先需要了解 UILabel 的 sizeThatFits 方法,这个方法可以根据 Label 内容计算出合适的大小。然后我们就可以根据这个大小来确定 Label 和图标的位置。可以使用 Auto Layout 或者手写 Frame,下面是手写 Frame 的实现方法:
```swift
// 创建 Label 和图标
let label = UILabel()
let icon = UIImageView(image: UIImage(named: "icon"))
// 设置 Label 内容和字体
label.text = "这里是 Label 的内容"
label.font = UIFont.systemFont(ofSize: 16)
// 计算 Label 大小
let labelSize = label.sizeThatFits(CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude))
// 设置 Label 和图标的 frame
let labelFrame = CGRect(x: 0, y: 0, width: min(labelSize.width, fixedWidth), height: labelSize.height)
let iconFrame = CGRect(x: labelFrame.maxX, y: labelFrame.minY, width: fixedWidth - labelFrame.width, height: labelFrame.height)
// 添加 Label 和图标
view.addSubview(label)
view.addSubview(icon)
// 设置 Label 和图标的位置
label.frame = labelFrame
icon.frame = iconFrame
```
其中,fixedWidth 是 Label 和图标组成的整个控件的宽度,可以根据需要自行设置。以上代码中,Label 的宽度在超过 fixedWidth 之后就会自动折行,而图标始终会紧贴 Label 的右侧。