【问题标题】:Center 3 Uneven Labels - Interface Builder中心 3 不均匀的标签 - 界面生成器
【发布时间】:2020-04-15 03:48:15
【问题描述】:

附件是我试图居中的图像以及我使用 XCode 11.2.1 所做的尝试

如何将 3 个不同大小的标签(数字的数据也将是动态的)在视图中水平居中?

我尝试做的事情:

我尝试在 LateBEDView(包含 3 个标签)上设置水平约束,但是当您在模拟器或实际设备上查看它时,它会将所有文本放在中心的右侧。我试过在两边都使用垫片(空视图),但不知道应该设置什么?非常感谢任何帮助!

【问题讨论】:

  • 将三个标签放在一个水平堆栈视图中,然后将该堆栈视图居中

标签: ios interface-builder centering


【解决方案1】:

我会这样做。我会制作这个 one 标签,毕竟它很容易居中。好的,我假设你知道该怎么做。

然后我会使用属性字符串来创建字符串的不同部分,包括“下标”。因此,首先我将扩展属性字符串键以包括三个部分:

extension NSAttributedString.Key {
    static let part1 = NSAttributedString.Key(rawValue: "part1")
    static let part2 = NSAttributedString.Key(rawValue: "part2")
    static let part3 = NSAttributedString.Key(rawValue: "part3")
}

然后我会设置标签的属性文本:

let mas = NSMutableAttributedString()
mas.append(NSAttributedString(string: "Late BED = ", attributes: [
    .font:UIFont.systemFont(ofSize: 15),
    .foregroundColor:UIColor.black,
    .part1:"part1"
]))
mas.append(NSAttributedString(string: "20.0", attributes: [
    .font:UIFont.systemFont(ofSize: 15),
    .foregroundColor:UIColor.black,
    .part2:"part2"
]))
mas.append(NSAttributedString(string: " Gy(3.0)", attributes: [
    .font:UIFont.systemFont(ofSize: 9),
    .foregroundColor:UIColor.black,
    .baselineOffset:-10,
    .part3:"part3"
]))
self.label.attributedText = mas

结果看起来就像你得到的一样,当然你可以根据需要调整它:

好的,这是真正聪明的部分。因为我划分了属性字符串的三个部分,所以我可以随意查找和更改其中任何一个部分的文本。正如您所说,每个数字的数据都需要能够更改。这就是你使用三个标签的原因!但现在我正在展示如何使用 one 标签来做到这一点。

例如,假设我想将“20.0”更改为“30.4”。那是你的第二个标签,也是我的.part2。以下是你的做法:

let s = self.label.attributedText
// skip past part 1 and find part 2
var r = NSRange()
let mas = s?.mutableCopy() as! NSMutableAttributedString
let _ = mas.attribute(.part2, at: 0, longestEffectiveRange: &r, 
    in: NSRange(location: 0, length: 100))
// find range of part 2
let _ = mas.attribute(.part2, at: r.length, longestEffectiveRange: &r, 
    in: NSRange(location: 0, length: 100))
mas.replaceCharacters(in: r, with: "30.4")
self.label.attributedText = mas

【讨论】:

  • 非常好的解决方案:)。我很快就会对此进行测试,并尽快给你反馈。我喜欢这都是一个标签。
猜你喜欢
  • 2011-09-27
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 2011-08-14
  • 1970-01-01
相关资源
最近更新 更多