#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