Если я перетащить Label
(класса NSTextField
) в представление в Interface Builder, а затем попытаться установить его stringValue
динамически так:NSTextField метка: динамически изменять содержимое и расти ширину, чтобы соответствовать
self.testingLabel.stringValue = "Labels are really really really long"
Тогда большая часть этикетки будет отключена.
Как я могу сделать ярлык расти, чтобы соответствовать его содержанию без оборачивания/прокрутки?
Я пробовал использовать этот пользовательский класс, но он не работает.
class AutogrowTextField: NSTextField {
override var intrinsicContentSize: NSSize {
get {
var frame = self.frame;
frame.size.width = CGFloat.max;
// Calculate new height within the frame
// with practically infinite height.
let width = self.cell!.cellSizeForBounds(frame).width
Swift.print(width)
NSBeep()
Swift.print(self.frame.width)
return NSMakeSize(width, frame.size.height)
}
}
// you need to invalidate the layout on text change, else it wouldn't grow by changing the text
override func textDidChange(notification: NSNotification) {
super.textDidChange(notification)
self.invalidateIntrinsicContentSize()
}
}
По сути, я просто хочу, поведение по умолчанию в HTML-документа, как это:
<p id="dynamic">Hi</p>
<script>
document.getElementByID("dynamic").innerHtml = "Something really really really long"
</script>
Это очень болезненно для меня, как в то время как я новичок в Mac OS X и какао, я не «начинающий» программист.
В случае, если это помогает, это содержимое инспектора атрибутов. (Это должно быть просто значение по умолчанию все)
Да, автоматическая раскладка включена
Да, автомасштабирование включено, и я не добавил никаких ограничений. Вы уверены, что он будет расти по умолчанию? По умолчанию я думал, что это был клип/обертка/ручка. Я не думал, что это будет трудно сделать, чтобы он расти/расширяться. – neon64
Какую версию Xcode вы используете? Кроме того, попробуйте добавить ограничения на, скажем, ведущие и верхние интервалы для супервизора (и других) на ярлык. Вы также можете попробовать установить атрибут «Макет» метки на Truncates и включить режим Single Line Mode. –
Aha!Поэтому я предполагаю, что по умолчанию автомакет предполагает, что 'no constraints' действительно означает« фиксированная позиция/все ограничено », и поэтому, только добавляя ограничения сверху и слева/впереди, что заставляет движок сделать нижние/правые ограничения более гибкими? Должен признаться, что я не занимался автоматической компоновкой, прежде чем так читать об этом, вероятно, помогло бы: P – neon64