2012-03-02 4 views
1

У меня есть UIView с шириной/высотой 0/0. Как я добавляю subviews к моему UIView, есть ли способ сделать обновление ширины и высоты автоматически?ios uiview размеры автораспределения

например. , если я добавлю 10 подглядывает из стороны в сторону, чтобы каждая имела ширину 50, тогда я ожидал бы, что мой UIView будет иметь ширину 500.

ответ

1

Я не сталкиваюсь с такой функциональностью, которая сделает это автоматически. Вам нужно будет установить кадр, вычисляя позиции и размеры его подматричек.

2

UIView's sizeToFit изменяет размер вашего вида, чтобы быть достаточно большим, чтобы соответствовать всем вещам внутри него.

BUT ... это очень зависит от подсмотров, которые вы добавили к своему виду. Добавление представления так же просто, как:

[myView addSubview:innerView]; 

frame из внутреннего делает большую разницу.

Если вы добавите 10 подзонов с x/y источником 0/0 и шириной/высотой 0/0, то sizeToFit скажет, что вам нужно, чтобы ваш вид соответствовал ширине/высоте 0/0, чтобы соответствовать всем подзонам.

Если вы добавили 1 подкласс с x/y происхождением 10/10 и шириной/высотой 5/5, то sizeToFit с указанием, что вам нужна ширина/высота 15/15 для соответствия всем подзонам.

0

Да, UIView может это сделать. Недавно я столкнулся с этой проблемой, и вот мое решение.

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

Например, вы хотите вертикально разместить 10 подпунктов. Ограничения бы, что

  • 1-подтаблица имеет верхнее поле ограничения, связанное с внешним UIView
  • 2-й подтаблица имеет верхнее поле ограничения, связанное с 1 подвидом.
  • 3-е подзаголовок имеет ограничение верхнего края, связанное со вторым подвью.
  • И так далее ...
  • В 10-м подсмотре есть ограничение верхнего края, связанное с 9-м подзоном.
  • И самое главное, the 10th subview must have bottom margin constraint related to the outside UIView.

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

Смежные вопросы