Вы, вероятно, следует сделать некоторое чтение на autolayout и узнать, как структурировать свои взгляды с ним, Однако, от того, что я могу собрать это выглядит, как вы хотите, этикетка:
- Будьте в центре экрана
- имеют фиксированную ширину
- Have цвет фона
- расширить, чтобы соответствовать его содержание вертикально
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.backgroundColor = UIColor.greenColor()
label.numberOfLines = 0
label.textAlignment = .Center
label.text = "This is\nsome multiline\nlabel\nwith a background\n colour"
self.view.addSubview(label)
let width = NSLayoutConstraint(item: label, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 50)
let centerX = NSLayoutConstraint(item: label, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0)
let centerY = NSLayoutConstraint(item: label, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1, constant: 0)
self.view.addConstraints([width, centerX, centerY])
Приведенный выше код производит зеленая метка, использующая автозапуск, есть screenshot here.
Использование numberOfLines = 0
гарантирует, что представление знает, что этикетка может расширяться, чтобы соответствовать ее содержимому.
Ограничения макета должны быть самообучающимися, если вы их читаете, мы устанавливаем ширину метки на 50
, тогда мы устанавливаем, что центральные X и Y-образы равны представлению, в которое мы добавили метку.
Это вы, что вы после? - Если нет, вы можете обновить свой вопрос, чтобы включить образ макета того, что вы пытаетесь сделать.
Есть ли у вас какой-либо код? Было бы полезно посмотреть, что вы пробовали. – Wez
извините, добавлено – MarksCode
Вы инициализируете ярлык рамкой? – Wez