Получение высоты представления для preferredContentSize

#swift

#swift

Вопрос:

Я открываю контроллер представления и как всплывающее окно в приложении для iPad. В этом всплывающем окне я выбрал preferredContentSize для его ширины и высоты

В настоящее время я получаю жестко запрограммированное значение как для ширины, так и для высоты в функции и добавляю его сюда:

   vc.modalPresentationStyle = .popover
  vc.preferredContentSize = CGSize(width: width, height: height)
  

В этом всплывающем окне я показываю только метку и несколько строк текста.

Проблема в том, что, в отличие от width, height не всегда одинакова, поэтому я попытался создать UIView() и добавить к нему эту метку с той же шириной и прочитать ее высоту.

    private func calculateHeightForPopover(text: String, Width: Int) -> CGFloat {
  
  let view = UIView()
  view.widthAnchor.constraint(equalToConstant: CGFloat(Width)).isActive = true
  
  let label = UILabel()
  label.text = text
  
  view.addSubview(label)
  
  view.topAnchor.constraint(equalTo: label.topAnchor).isActive = true
  view.bottomAnchor.constraint(equalTo: label.bottomAnchor).isActive = true
  view.leadingAnchor.constraint(equalTo: label.leadingAnchor).isActive = true
  view.trailingAnchor.constraint(equalTo: label.trailingAnchor).isActive = true

  view.heightAnchor.constraint(equalTo: label.heightAnchor, constant: 10).isActive = true

  
  return view.frame.size.height
}
  

но view.frame.size.height всегда равно нулю, кто-нибудь может мне в этом помочь? Большое вам спасибо.

Ответ №1:

Для представления, созданного в вашей функции, установлено только ограничение ширины, и у него нет никаких других ограничений, попробуйте установить остальные другие ограничения и проверить его высоту.

Комментарии:

1. да, потому что я не знаю высоту, я хочу установить высоту на основе высоты надписей

2. Я добавил еще одно ограничение, по-прежнему view,frame.size.height равно нулю

3. попробуйте установить константы top , leading , bottom и width, а затем проверить height