2016-03-17 3 views
0

Я пытаюсь реализовать, чтобы сделать мою uilabel растягиваться с левой стороны на правую сторону (полная ширина), я могу сделать это легко в раскадровке, но у меня есть часть моего приложения, необходимо отображать uilabel прогматически. Вот мой код:Сделать UILabel Constraint для отображения полной ширины

textLabel.backgroundColor = UIColor.grayColor() 
textLabel.text = StringsLabel.NOINTERNET 
textLabel.textAlignment = .Center 
textLabel.font = UIFont.boldSystemFontOfSize(24.0) 
textLabel.translatesAutoresizingMaskIntoConstraints = false 
centerView.addSubview(textLabel) 

let centreXTopLabel:NSLayoutConstraint = NSLayoutConstraint(item: textLabel, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: centerView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0); 
     centerView.addConstraint(centreXTopLabel) 

Вот скриншот того, что я получил:

enter image description here

+0

Вы должны использовать AutoLayout, использовать NSLayoutConstraint или третьей стороной масонства или SnapKit – childrenOurFuture

+0

Визуальный язык формат будет путь, если вы должны сделать это программно. Вот учебник https://www.raywenderlich.com/110393/auto-layout-visual-format-language-tutorial – Adrian

+0

Эффект, который вы пытаетесь достичь, может произойти, если вы поместите UILabel в другой UIView, добавьте ограничения ширины полной ширины к этому UIView, установите его цвет фона для требуемого цвета. затем добавьте UILabel в этот вид и центрируйте его в этом UIView, используя ограничения снова. В настоящее время ваш фон UILabel серый, он не растягивается, потому что это то, что размер текста – Qazi

ответ

1

Pin это ведущий и ведомые мнение, в 0 баллов:

let leading = NSLayoutConstraint(item: textLabel, attribute: .Leading, relatedBy: .Equal, toItem: centerView, attribute: .Leading, multiplier: 1, constant: 0) 
let trailing = NSLayoutConstraint(item: textLabel, attribute: .Trailing, relatedBy: .Equal, toItem: centerView, attribute: .Trailing, multiplier: 1, constant: 0) 
NSLayoutConstraint.activateConstraints([leading, trailing]) 

Обратите внимание, что это приведет к двусмысленному расположению - вам нужно добавить ограничение, которое позиционирует метку по вертикали.

+0

Привет, вместо использования этого NSLayoutConstraint.activateConstraints ([ведущий, конечный]) я использую этот centerView.addConstraints ([ведущий, конечный]), так как я поддерживаю ios7. Но, кстати, код, который вы опубликовали, не работает :( –

+0

@SydneyLoteria Как насчет этого не получается? – tktsubota

+0

вывод все тот же на скриншоте, который я опубликовал выше. –

0

Попробуйте это ..

let views = ["textLabel" : textLabel] 
let formatString = "|-[textLabel]-|" 

let constraints = NSLayoutConstraint.constraintsWithVisualFormat(formatString, options:.AlignAllTop , metrics: nil, views: views) 

NSLayoutConstraint.activateConstraints(constraints)