Как сказал PatPatchPatrick , вы можете ограничить представление стека горизонтально центрированным.
Но вы должны учитывать, что произойдет, если ваши строки слишком длинные.
В качестве примера можно привести следующие строки:
leftStr = "Hi, there"
midStr = "HEY"
rightStr = "Hi"
, а при просмотре по центру стека вы получите:
Предположим, однако, что ваш строки:
// Set A
leftStr = "Hi, there from the Left"
midStr = "HEY MIDDLE"
rightStr = "Hi from the Right"
или:
// Set B
leftStr = "Hi, there from the Left"
midStr = "HEY"
rightStr = "Hi"
Теперь вы получаете:
2 - К сожалению ... представление стека выходит за границы представления.
3 - поэтому мы добавим '> = 8 leading and trailing (so we have a little padding on each side). Whoops, the text gets truncated... and which label(s) get
... `в зависимости от настроек Приоритета сжатия содержимого.
4 - чтобы избежать усечения, мы установим метки на Number of Lines: 0
, чтобы текст был перенесен. Может быть, выглядит хорошо, а может и нет.
5 - Давайте установим выравнивание текста меток по центру. Может быть, то, что мы хотим?
6 - Однако, со строками «Set B» вместо «Set A» - может быть, не так хорошо?
Лучшим вариантом может быть использование одного , центрированная метка (с >=8
начальными и конечными ограничениями):
и использование Атрибутивный текст :
Вот как вы можете определить и установить атрибутный текст:
let leftStr = "Hi, there"
let midStr = "HEY"
let rightStr = "Hi"
let font1 = UIFont.systemFont(ofSize: 17.0)
let font2 = UIFont.boldSystemFont(ofSize: 26.0)
let offset = (font1.xHeight - font2.xHeight) * 0.5
let attributedStr = NSMutableAttributedString(string: leftStr + " ", attributes: [NSAttributedString.Key.font: font1])
attributedStr.append(NSAttributedString(string: midStr, attributes: [NSAttributedString.Key.font: font2, NSAttributedString.Key.foregroundColor: UIColor.red, NSAttributedString.Key.baselineOffset: offset]))
attributedStr.append(NSMutableAttributedString(string: " " + rightStr, attributes: [NSAttributedString.Key.font: font1]))
theLabel.attributedText = attributedStr
В качестве примечания и для вашего будущего ссылка ...
Это помогает полностью определить ваш вопрос. Предположительно, в вашем настоящем приложении вы не будете отображать:
«Привет, есть ЭЙ Привет»
, поэтому вполне возможно, что ни один из этих подходов не даст вам желаемых результатов.
Было бы намного лучше, если бы вы включили real примеров того, что Ваше приложение будет отображаться, и как вы хотите, чтобы оно выглядело.