Как получить изображение по умолчанию из сериализованного 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,
  • Глушить предупреждение - но только в этом конкретном случае, а не в целом.

0 ответов

Другие вопросы по тегам