Должен ли я создать пользовательское представление для представлений контактов разного размера (например, LargeCustomView и SmallCustomView и любой другой специальный тип, который я создаю) или все это должен быть один тип, скажем, CustomerDetailsView, который можно растянуть для соответствия дизайну время
Я думаю, что только вы можете ответить на этот вопрос. Если масок авторазмера UIView достаточно для размещения обоих макетов, вам, вероятно, следует выбрать только один класс. Если этого недостаточно, вы можете либо переопределить layoutSubviews для учета разных размеров, либо, возможно, использовать общий суперкласс, содержащий логику и два подкласса, чтобы выполнять разные макеты.
Кроме того, если на одном экране было, скажем, 3 разных экземпляра одного и того же настраиваемого представления, есть ли еще 3 экземпляра контроллера представления?
Из-за того, как работают UIViewControllers, Apple обычно рекомендует не иметь более одного контроллера представления на экран. Из документов:
Вы не должны использовать контроллеры представления для управления представлениями, которые заполняют только часть их окна, то есть только часть области, определяемой прямоугольником содержимого приложения. Если вы хотите иметь интерфейс, состоящий из нескольких меньших представлений, вставьте их все в одно корневое представление и управляйте этим представлением с помощью контроллера представлений.
В противном случае такие вещи, как вращение устройства, могут оказаться сложными, поскольку контроллер представления, который не является полноэкранным, вероятно, должен по-разному реагировать на такие события, и UIViewController от Apple не написан для этого. Однако никто не мешает вам писать свои собственные контроллеры представления (производные от NSObject
, а не от UIViewController
), поэтому я бы порекомендовал: если представление довольно сложное, напишите для него собственный класс контроллера, но придерживайтесь одного UIViewController за экран.