2017-02-20 18 views
0

У меня есть 3 метки рядом друг с другом внутри горизонтальное зрение стека, как этотСделайте ярлык только настолько широким, насколько это необходимо?

stackview

первая и последняя метка будет динамически заполнена одним словом переменной длиной, в то время как средняя всегда будет содержать слово «с», например: «Кодирование с помощью Swift!»

Я не хочу, чтобы между каждым словом было больше места, так как это выглядело бы странно, если бы слова были короткими. Есть ли способ сделать ярлыки только настолько широкими, насколько они должны соответствовать их тексту? Таким образом, все выглядит как одна метка (кроме того, что я делаю среднюю метку меньшего текста).

+0

Не похоже на поведение UILabel по умолчанию для раскадровки? Для этой цели вы можете использовать автоматический макет. –

ответ

2

Добавьте 3 метку внутри UIView вместо зрения стека. И установите ограничения, как показано на изображении.

enter image description here

enter image description here

+0

Какое распределение я могу получить в виде стека? – MarksCode

+0

Кроме того, что, если первое слово длиннее или короче, чем «Кодирование», будет ли оно выглядеть фанки? – MarksCode

+0

Я говорю, что вместо использования представления стека используйте UIView. Если кодировка является коротким текстом, она будет соответствующим образом скорректирована. Отредактированный ответ. –

0

Вы можете взять одну метку вместо того, чтобы три метки и и установить текст на этикетке как

label.text= firstLabel.text + "with" + lastLabel.text 
+0

, но тогда я могу сделать слово «с» меньше, чем остальная часть текста? – MarksCode

+0

Да, вы можете сделать это, сделав текст с разным размером в том же UILabel. Для этого смотрите NSLocalizedString, а затем выполните label.text = NSLocalizedString. –

+0

Хмм, я, вероятно, в конечном итоге займусь этим решением, тогда – MarksCode

1

Как насчет использования autolayout? Вы можете дать горизонтальное пространство 0 между метками и ограничение ширины для среднего.

1

Если и хочет иметь различные шрифты для содержания в этикетке вы можете использовать NSAttributedString

let boldFontDict:[String: AnyObject] = [NSForegroundColorAttributeName : UIColor.black, NSFontAttributeName: <UI Font>] 

let 1stString = NSAttributedString(string: "Hello")  
let 2ndString = NSAttributedString(string: "hii", attributes: boldFOntDict) 

let finalAttrStr = NSMutableAttributedString(attributedString: 1stString) 

finalAttrStr.append(2ndString) 

myLabel.attributedText = finalAttrStr 
+0

, а как насчет выравнивания? Первая строка выравнивается влево, вторая - в центре, а третья - вправо. Не могли бы вы опубликовать решение, реализующее это? –

+0

Будет сложно управлять шириной 3 ярлыков, поскольку контент является динамическим. – Anuraj

+0

Вместо этого вы можете выровнять свой 'myLabel' как' выравнивание по центру' и может придать размер каждого шрифта каждой 'присваиваемой строкой' –

0

Вы можете использовать autolayout, чтобы исправить эту проблему.