如何在swift中的文本中添加点视图?
How to add dot view to the text in swift?
我曾使用 UIStackView 进行单元格设计。现在我必须在文本“Inprocess”旁边添加一个黄点视图。我们该怎么做?
let backView = UIView(color: AppColor.appWhite, cornerRadius: 18)
lazy var advanceStack = VerticalStackView(arrangedSubViews: [SalaryadvanceLabel, advanceValue], spacing: 3, distribution: .fillEqually)
lazy var StatusStack = VerticalStackView(arrangedSubViews: [Inprocesslabel, timelabel], spacing: 3, distribution: .fillEqually)
lazy var infoStack = HorizontalStackView(arrangedSubViews: [advanceStack, StatusStack], spacing: 10, distribution: .fillEqually)
let indicator: UIView = {
let view = UIView(color: AppColor.appGreen, cornerRadius: 3)
view.constraintWidth(constant: 6)
view.constraintHeight(constant: 6)
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
backgroundColor = AppColor.appBackground
selectionStyle = .none
setupView()
indicator.isHidden = true
}
private func setupView() {
addSubview(backView)
backView.anchor(top: topAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor, padding: .init(top: 8, left: 12, bottom: 0, right: 12))
backView.addSubview(infoStack)
infoStack.anchor(top: nil, leading: backView.leadingAnchor, bottom: nil, trailing: backView.trailingAnchor, padding: .init(top: 0, left: 20, bottom: 0, right: 20))
infoStack.centerYInSuperview()
backView.addSubview(indicator)
indicator.anchor(top: infoStack.bottomAnchor, leading: nil, bottom: nil, trailing: chargeValue.trailingAnchor, padding: .init(top: 6, left: 0, bottom: 0, right: 0))
}
这就是如何使用带有点状字符的 attributedText
执行此操作(正如评论中已经建议的那样)
let attributedText = NSMutableAttributedString(string: "• In process")
let attributes: [NSAttributedString.Key : Any] = [
.foregroundColor: UIColor.systemYellow
]
attributedText.addAttributes(attributes, range: NSRange(location: 0, length: 1))
inProcessLabel.attributedText = attributedText
我使用了以下代码并将其添加到 UIStackView。问题已解决。
let StatusDot = UILabel(text: "\u{2022}" , color: AppColor.appBlack, font: Helvetica.bold, size: 40, alignment: .right)
我曾使用 UIStackView 进行单元格设计。现在我必须在文本“Inprocess”旁边添加一个黄点视图。我们该怎么做?
let backView = UIView(color: AppColor.appWhite, cornerRadius: 18)
lazy var advanceStack = VerticalStackView(arrangedSubViews: [SalaryadvanceLabel, advanceValue], spacing: 3, distribution: .fillEqually)
lazy var StatusStack = VerticalStackView(arrangedSubViews: [Inprocesslabel, timelabel], spacing: 3, distribution: .fillEqually)
lazy var infoStack = HorizontalStackView(arrangedSubViews: [advanceStack, StatusStack], spacing: 10, distribution: .fillEqually)
let indicator: UIView = {
let view = UIView(color: AppColor.appGreen, cornerRadius: 3)
view.constraintWidth(constant: 6)
view.constraintHeight(constant: 6)
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
backgroundColor = AppColor.appBackground
selectionStyle = .none
setupView()
indicator.isHidden = true
}
private func setupView() {
addSubview(backView)
backView.anchor(top: topAnchor, leading: leadingAnchor, bottom: bottomAnchor, trailing: trailingAnchor, padding: .init(top: 8, left: 12, bottom: 0, right: 12))
backView.addSubview(infoStack)
infoStack.anchor(top: nil, leading: backView.leadingAnchor, bottom: nil, trailing: backView.trailingAnchor, padding: .init(top: 0, left: 20, bottom: 0, right: 20))
infoStack.centerYInSuperview()
backView.addSubview(indicator)
indicator.anchor(top: infoStack.bottomAnchor, leading: nil, bottom: nil, trailing: chargeValue.trailingAnchor, padding: .init(top: 6, left: 0, bottom: 0, right: 0))
}
这就是如何使用带有点状字符的 attributedText
执行此操作(正如评论中已经建议的那样)
let attributedText = NSMutableAttributedString(string: "• In process")
let attributes: [NSAttributedString.Key : Any] = [
.foregroundColor: UIColor.systemYellow
]
attributedText.addAttributes(attributes, range: NSRange(location: 0, length: 1))
inProcessLabel.attributedText = attributedText
我使用了以下代码并将其添加到 UIStackView。问题已解决。
let StatusDot = UILabel(text: "\u{2022}" , color: AppColor.appBlack, font: Helvetica.bold, size: 40, alignment: .right)