Изменение размера UIView на основе высоты UILabel - PullRequest
0 голосов
/ 30 апреля 2019

Я видел несколько похожих ответов, но мой вопрос немного другой.Я хочу создать вид с высотой greaterThanOrEqualToConstant и поместить в него UILabel с выравниванием по левому верхнему краю (constraint до top).Если текст UILabel имеет только 1 строку, я хочу, чтобы размер UIView был больше некоторой константы, но если текст содержит 2,3,4 .. и т. Д. Строк (greaterThatConstant), я хочу изменить размер этого представленияв зависимости от высоты этикетки.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

ДЛЯ КОНТРОЛЯ ПРОСМОТРА:

ПРОВЕРЬТЕ ИЗОБРАЖЕНИЕ.: enter image description here

ДЛЯ ОГРАНИЧЕНИЙ ЭТИКЕТКИ:

ПРОВЕРЬТЕ ИЗОБРАЖЕНИЕ.: enter image description here

КОД

override func viewDidLoad() {

    let subview = UIView()
    subview.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(subview)

    //SET VIEW Constarins
    subview.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50).isActive = true
    subview.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 25).isActive = true
    subview.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 25).isActive = true



    let lblValue = UILabel()
    lblValue.text = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum"
    lblValue.numberOfLines = 0
    lblValue.lineBreakMode = .byWordWrapping
    lblValue.translatesAutoresizingMaskIntoConstraints = false
    subview.addSubview(lblValue)

    //SET LABEL Constarins
    lblValue.topAnchor.constraint(equalTo: subview.topAnchor, constant: 0).isActive = true
    lblValue.leadingAnchor.constraint(equalTo: subview.leadingAnchor, constant: 0).isActive = true
    lblValue.trailingAnchor.constraint(equalTo: subview.trailingAnchor, constant: 0).isActive = true
    lblValue.bottomAnchor.constraint(equalTo: subview.bottomAnchor, constant: 0).isActive = true

    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}
0 голосов
/ 30 апреля 2019

Для этого вы можете использовать приоритеты ограничений. Чтобы позволить представлению «расти», вы указываете меньший приоритет по отношению к высоте представления контейнера, а затем ограничение нижнего края метки (расстояние до дна представления контейнера) будет больше или равно значению, которое вы используете. Немного поковырялся, когда мне впервые понадобилась эта функция:)

...