Я изучаю swift с cs193p, и у меня есть проблема с UITextView.sizeThatFits(...)
. Он должен возвращать рекомендуемый размер для всплывающего представления, чтобы отобразить массив [int] в виде текста. Как вы можете видеть в примере Пола Хегарти (https://youtu.be/gjl2gc70YHM?t=1h43m17s), он получает совершенно подходящее окно без полосы прокрутки. Я использую почти один и тот же код, который был в этой лекции, но вместо этого я получил это:Почему sizeThatFits() возвращает слишком маленький размер?
text
строка равна [100]
, но метод sizeThatFits()
возвращает размер, который слишком мал, чтобы показать его красиво, хотя есть много свободного места. Это становится немного лучше после того, как я добавил текст, но до сих пор не точны и с скроллинга:
Вот часть кода, где размер создается:
override var preferredContentSize: CGSize {
get {
if textView != nil && presentingViewController != nil {
// I've added these outputs so I can see the exact numbers to try to understand how this works
print("presentingViewController!.view.bounds.size = \(presentingViewController!.view.bounds.size)")
print("sizeThatFits = \(textView.sizeThatFits(presentingViewController!.view.bounds.size))")
return textView.sizeThatFits(presentingViewController!.view.bounds.size)
} else { return super.preferredContentSize }
}
set { super.preferredContentSize = newValue }
}
Что я должен делать, это будет работать так же, как и в лекции?
Благодарим за консультацию. Мой 'UITextView' уже был привязан к полям: ' Text View.top = Top Layout Guide.bottom; Текст View.leading = leadingMargin; Текст View.trailing = trailingMargin; Bottom Layout Guide.top = Text View.bottom; ' И я изменил его на ' Text View.leading = leadingMargin - 20; Текст View.trailing = trailingMargin + 20; ' (сверху и снизу остались без изменений), теперь он работает правильно. Итак, проблема заключалась в том, что я думал, что должен ограничивать свой «UITextView» синими линиями, предложенными Xcode (включая маржу) вместо краев экрана. – smocer