UIView Развернуть до содержимого внутри - PullRequest
0 голосов
/ 27 мая 2019

У меня есть функция, которая возвращает UIView. Я хочу динамически изменять размер моего UIView (fullView) в зависимости от объема текста, отображаемого в UITextView (thirdTextView). В настоящее время мой рост установлен на 200. Как мне достичь «динамического роста»?

РЕДАКТИРОВАТЬ: Обновленный код до сих пор. Работает только тогда, когда к представлению добавлено подпредставление. Я не хочу этого ...

func returnView(text1: String, text2: String) -> UIView {

    let fullView = UIView()

    fullView.backgroundColor = UIColor(red:0.82, green:0.83, blue:0.85, alpha:1.0)
    fullView.translatesAutoresizingMaskIntoConstraints = false
    let firstButton = UIButton()
    firstButton.translatesAutoresizingMaskIntoConstraints = false
    let secondButton = UIButton()
    secondButton.translatesAutoresizingMaskIntoConstraints = false
    let thirdTextView = UITextView()
    thirdTextView.translatesAutoresizingMaskIntoConstraints = false
    thirdTextView.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."
    thirdTextView.backgroundColor = .clear
    thirdTextView.isScrollEnabled = false

    firstButton.setTitle("Button1", for: .normal)
    firstButton.setTitleColor(.black, for: .normal)
    firstButton.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.medium)
    firstButton.contentHorizontalAlignment = .left

    secondButton.setTitle("Button2", for: .normal)
    secondButton.setTitleColor(.black, for: .normal)
    secondButton.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.medium)
    secondButton.contentHorizontalAlignment = .right

    let descriptionBarStackView =  UIStackView(arrangedSubviews: [firstButton, UIView() ,secondButton])
    descriptionBarStackView.translatesAutoresizingMaskIntoConstraints = false
    descriptionBarStackView.axis = .horizontal
    descriptionBarStackView.alignment = .fill

    let viewWithStackViews = UIStackView(arrangedSubviews: [descriptionBarStackView, thirdTextView])
    viewWithStackViews.translatesAutoresizingMaskIntoConstraints = false
    viewWithStackViews.axis = .vertical
    viewWithStackViews.layoutMargins = UIEdgeInsets(top: 15, left: 10, bottom: 10, right:10)
    viewWithStackViews.isLayoutMarginsRelativeArrangement = true
    fullView.addSubview(viewWithStackViews)

//        view.addSubview(fullView)

    fullView.leadingAnchor.constraint(equalTo: viewWithStackViews.leadingAnchor).isActive = true
    fullView.trailingAnchor.constraint(equalTo: viewWithStackViews.trailingAnchor).isActive = true
    fullView.topAnchor.constraint(equalTo: viewWithStackViews.topAnchor).isActive = true
    fullView.bottomAnchor.constraint(equalTo: viewWithStackViews.bottomAnchor).isActive = true

    fullView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -10).isActive = true
    fullView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    fullView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true

    fullView.layer.cornerRadius = 5

    return fullView
}

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Просто установите привязку ширины, и она будет динамически расширяться до размера содержимого для высоты.

thirdTextView.widthAnchor.constraint(equalToConstant: 128.0).isActive = true
0 голосов
/ 27 мая 2019
  • Предоставить делегату textview классу
  • для textViewDidChange. Метод делегата textview, высоту

В вашем сценарии

func textViewDidChange(_ textView: UITextView) {

    thirdTextView.contentSize.height = textView.contentSize.height

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...