2013-08-11 2 views
0

Пусть у меня есть 3 видаИмеет ли значение, к какому надзору я добавляю ограничения?

A|----------| 
    | B|-----| | 
    | | C ▢ | | 
    | |_____| | 
    |__________|  

Если у меня есть ограничение включая вид B и C. посмотреть

The documentation предлагает добавить для просмотра C будет незаконным:

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

  • Имеет ли значение, если я добавлю, что для просмотра или просмотра B?
  • Есть ли какие-либо последствия добавления одного супервизора вместо другого?
  • Есть ли какие-либо удобства? (Например, его легче управлять, если все ограничения находятся в одном месте?)

ответ

1
  • Это не имеет значения, если вы добавите его для просмотра или просмотра B, так долго, как они отвечают требованиям, вы процитированные из документация.
  • Нет никаких последствий, о которых я знаю, макет одинаковый в любом случае. Ограничения не обязательно добавляются к представлению, к которому они явно добавляются, в соответствии с комментариями в заголовочном файле UIView (см. Выдержку ниже) они обычно устанавливаются у ближайшего предка к представлениям, связанным с ограничением (и представлением для этого считается его собственным предком).
  • Ни один из способов не является более удобным, чем другой (если у вас нет ссылки на A, в этом случае, очевидно, удобнее добавить его в B). Это будет зависеть от настройки вашего приложения (что у вас есть выходы для ссылок и т. Д.). Учитывая, что ограничения не установлены там, где вы явно их добавляете, ни один из способов не был бы более удобным. Я бы предположил, что было бы немного более эффективно добавлять их там, где система будет устанавливать их в конечном счете.

РЕДАКТИРОВАТЬ:

Этот комментарий от UIView.h, выше методы, используемые для установки ограничения:

/* A constraint is typically installed on the closest common ancestor of the views involved in the constraint. 
It is required that a constraint be installed on _a_ common ancestor of every view involved. The numbers in a constraint are interpreted in the coordinate system of the view it is installed on. A view is considered to be an ancestor of itself. 
*/ 
Смежные вопросы