У меня есть подкласс UIView
(для борьбы с перетаскиванием), а с интерфейсом Build я добавил два подзаголовка: UIImageView
и UILabel
.Ограничения обновления подзонов после изменений кадра наблюдения
Оба имеют ограничения:
UIImageView
границы соответствуют SuperView границы для того, чтобы заполнить все доступное пространство. UILabel
центрирован по вертикали и по горизонтали.
Здесь вы можете увидеть три (фон супервина зеленый).
Моя проблема возникает, когда я анимировать изменение кадра в надтаблицы. Супервизор кажется прекрасным, но его подзаголовки сходят с ума.
Здесь вы можете увидеть его (игнорировать коричневый квадрат, из другой точки зрения)
Как вы можете видеть, подвиды «падение» из надтаблицы, несмотря я называю updateConstraints
на каждом подвид.
Я знаю, что это неправильная практика, чтобы смешивать AutoLayout с setFrame, но это единственный способ, которым я это знаю.
Thanks
Почему бы вам не удалить супервизор и установить фон UIImageView на зеленый? Затем используйте правильный контент для правильного размера изображения, см. Этот вопрос: http://stackoverflow.com/questions/4895272/difference-between-uiviewcontentmodescaleaspectfit-and-uiviewcontentmodescaletof –
Я пробовал, но тогда я не мог установить UILabel как подпрограмма UIImageView. Кроме того, зеленый просто временно. – WedgeSparda
Возможно ли, чтобы вы указали свой исходный код? Поведение, которое вы описываете, - это то, что ожидается. Несколько вещей, которые следует учитывать: вы получаете предупреждения во время работы в консоли? Если ограничения не могут быть решены, некоторые из них будут уничтожены, и вы будете предупреждены в журнале. '-updateConstraints' не нужно вызывать в подзаголовках, если вы на самом деле их не модифицируете. Это не кажется необходимым в вашем случае. Как вы управляете позиционированием перетаскиваемого представления? Если представление позиционируется с ограничениями, но затем вы изменяете фрейм, может возникнуть непредвиденное поведение. –