Ваше родительское представление похоже на представление прокрутки, и в нем отсутствуют ограничения, которые сообщают ему, каков размер его прокручиваемого содержимого (обратите внимание на предупреждение на первом снимке экрана). Поскольку ничто не определяет размер содержимого, размер прокручиваемой области равен нулю.
Я не уверен, какие именно ограничения вам нужны, поскольку это зависит от деталей вашей ситуации, но для того, чтобы хотя бы увидеть ваше подпредставление, вы можете добавить (например) ограничения равной ширины и равной высоты к вашему подпредставлению и его родителю. вид (вид прокрутки):
NSLayoutConstraint.activate([
subview.widthAnchor.constraint(equalTo: parent.widthAnchor),
subview.heightAnchor.constraint(equalTo: parent.heightAnchor)
])
Это определяет прокручиваемую область как равную по ширине и высоте рамке представления прокрутки. Однако, если вы сделаете это, то на самом деле не будет никакой прокрутки, кроме поведения подпрыгивания, когда вы пытаетесь прокрутить за пределы прокручиваемой области (если это включено для этого вида прокрутки).
Вместо этого вы можете изменить якорь высоты, чтобы он был равен некоторой константе, просто чтобы обеспечить некоторую фактическую прокрутку:
NSLayoutConstraint.activate([
subview.widthAnchor.constraint(equalTo: parent.widthAnchor),
subview.heightAnchor.constraint(equalToConstant: 2000) // just some arbitrary amount for demonstration purposes
])
Это делает прокручиваемую высоту равной 2000 точкам, независимо от высоты фрейма прокрутки.
Или, если вы хотите, чтобы прокручиваемая область была кратна высоте кадра представления прокрутки, вы можете установить множитель для привязки высоты:
NSLayoutConstraint.activate([
subview.widthAnchor.constraint(equalTo: parent.widthAnchor),
subview.heightAnchor.constraint(equalTo: parent.heightAnchor, multiplier: 3)
])
Это делает прокручиваемую высоту равной трехкратной высоте фрейма прокрутки.
А если вам нужен вид с горизонтальной прокруткой, просто измените widthAnchor
вместо heightAnchor
, как я сделал выше. Или, если вам нужна область с двумерной прокруткой, которая позволяет вам перемещаться как по вертикали, так и по горизонтали, измените оба.
person
Tyler
schedule
20.04.2020