Как получить изображение по умолчанию из сериализованного UIImageView?
Я создал кастом UIImageView
Давайте назовем это MyImageView
, который показывает изображение по умолчанию, которое было установлено через Интерфейсный Разработчик. Нажатие должно переключить отображаемое изображение с другим изображением. Чтобы реализовать это, мне нужно сохранить изображение, которое было установлено в Интерфейсном Разработчике, например, в переменной экземпляра с именем coverImage
,
Самый простой способ - сначала инициализировать super
а затем кеш super.image
в переменной экземпляра. Сюда coverImage
не может быть let
постоянная, которую я хотел бы избежать. Так что я создаю одноразовый UIImageView
экземпляр для декодирования сериализованного объекта:
required init?(coder aDecoder: NSCoder) {
guard let coverImage = UIImageView(coder: aDecoder)?.image else {
return nil
}
self.coverImage = coverImage
super.init(coder: aDecoder)
}
Это хорошо работает, но приводит к появлению предупреждающего сообщения, которого я хотел бы избежать:
[LayoutConstraints] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x60400008d660 APP.ConfidentialQRCodeView:0x7fb27f525ae0.width == APP.ConfidentialQRCodeView:0x7fb27f525ae0.height (inactive)>
When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView(UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:] to debug.
Так как я могу избежать предупреждения? Я в порядке с одним из следующих решений:
- Другой подход, чем использование одноразового экземпляра
UIImageView
Например, портативный способ извлечения только изображения изaDecoder
, - Глушить предупреждение - но только в этом конкретном случае, а не в целом.