Странное поведение автозапуска при просмотре коллекций

У меня проблема с автозапуском, консоль сообщает о проблемах с представлением изображения, которое у меня есть в ячейке:

RefreshCatalogue[31754:16177989] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) ( "<NSLayoutConstraint:0x7fa98103b740 V:[UIImageView:0x7fa9810375d0]-(0)-| (Names: '|':UIView:0x7fa9810371d0 )>", "<NSLayoutConstraint:0x7fa98103b7e0 V:|-(0)-[UIImageView:0x7fa9810375d0] (Names: '|':UIView:0x7fa9810371d0 )>", "<NSLayoutConstraint:0x7fa98103b8d0 UIImageView:0x7fa9810375d0.centerY == UIImageView:0x7fa981037490.centerY>", "<NSLayoutConstraint:0x7fa98103ba60 UIImageView:0x7fa981037490.top == UIView:0x7fa9810371d0.topMargin + 71>", "<NSAutoresizingMaskLayoutConstraint:0x7fa980d44a10 h=--& v=--& V:[UIView:0x7fa9810371d0(50)]>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x7fa98103b8d0 UIImageView:0x7fa9810375d0.centerY == UIImageView:0x7fa981037490.centerY> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 

Проблема в том, что если я это сделаю:

 [self.collectionView reloadItemsAtIndexPaths:@[indexPath]]; 

Ничто не показывает даже, что изображение имеет правильный фрейм, свойство изображения установлено. Если я перезагружу весь вид коллекции с помощью:

 [self.collectionView reloadData]; 

Ошибка все еще присутствует, но изображение отображается. Код открыт здесь, кто-нибудь заинтересован в том, чтобы взглянуть: https://github.com/Ridiculous-Innovations/RefreshCatalogue

Кроме того, все ограничения в панели рассказов выглядят синими. Любая идея, что может вызвать проблему?

Изменить: Излишне говорить, что все элементы, включая изображение, находятся в нужном месте (я отлаживал кадры и задавал случайные цвета), но изображение не отображалось до обновления … иногда ячейки вообще не отображаются

6 Solutions collect form web for “Странное поведение автозапуска при просмотре коллекций”

У вас проблема с UIImageView: 0x7fa981037490.top == UIView: 0x7fa9810371d0.topMargin + 71 и родительский фрейм с 0 высотой (поэтому высота изображения должна быть отрицательной, но это недопустимо), например, сразу после вызова метода dequeueReusableCell. Возможным обходным решением для этого случая является приоритет изменения от 1000 до 999 при самом нижнем ограничении в вложенном виде (Вертикальное пространство – catalogueHeaderCell – Изображение и Вертикальное пространство – catalogueCell – Info View).

введите описание изображения здесь

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

поэтому удалите выделенные ограничения.

Попробуйте это, это поможет мне удалить этот разрыв ограничений в консоли.

 yourCustomCell.contentView.frame = yourCustomCell.bounds; 

Просмотры:

UIView:0x7fa9810371d0 , UIView:0x7fa9810371d0 его container
UIImageView:0x7fa9810375d0 , UIImageView:0x7fa9810375d0 его image1
UIImageView:0x7fa981037490 , UIImageView:0x7fa981037490 его image2 .

Не будем проверять ограничения

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

image271 пункт под вершиной Margin контейнера, поэтому он находится по меньшей мере на 21 пункт под нижним краем контейнера.

image1 выровнен с нижней частью контейнера, поэтому он находится над нижним краем контейнера.

Теперь ваши последние ограничения центрируют image1 и image2 вертикали, так что, очевидно, происходит столкновение.

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

Слишком заметные ошибки в Interface Builder, измените высоту ячейки до 50 , вы увидите, что все сломано. Есть только некоторые ненужные ограничения, которые вызывают конфликт при изменении размера.

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

проверьте свое изображениеView centerY constrain

введите описание изображения здесь

delete this constrain … эта проблема возникает из-за ограниченности двусмысленности. при добавлении автоматической компоновки вам необходимо применить правильную автоматическую компоновку ограничений к imageView.

После удаления centreY сжимайте, если есть двусмысленность, тогда xcode снова покажет вам ту же ошибку, снова вам нужно удалить неоднозначный ограничитель.

Ну, предупреждающее сообщение дает понять, что не так.

 Will attempt to recover by breaking constraint <NSLayoutConstraint:0x7fa98103b8d0 UIImageView:0x7fa9810375d0.centerY == UIImageView:0x7fa981037490.centerY> 

Поэтому для анализа у вас есть два объекта, основанных на представлении. Один из них настроен на центрирование себя сверху вниз до другого вида (0x7fa9810375d0 до 0x7fa981037490 – это идентификаторы вида)

Но также вид id 0x7fa981037490 имеет другое ограничение,

 <NSLayoutConstraint:0x7fa98103ba60 UIImageView:0x7fa981037490.top == UIView:0x7fa9810371d0.topMargin + 71> 

Который выглядит как верх 0x7fa981037490, выровнен в верхней части окна 0x7fa9810371d0 плюс 71 балл.

Я не скачал ваш проект, но я бы сказал, что проблема кроется в этом. Наилучшая догадка заключается в том, что ограничения centre.y не могут быть удовлетворены, потому что выравнивающая вершина перемещает ImageView в место, которое его разрывает. Попытайтесь взглянуть на то, что вы установили в ограничениях визуально в своей голове. Вы привязаны к ImageViews и выровняли один из них до края другого представления. Как это сломается? (это то, о чем вы должны спрашивать себя)

Попробуйте удалить ограничение по одному, а затем создать и запустить. Если предупреждение идет, то тот, который нуждается в исправлении. Да, представление может выглядеть странно, и вы можете использовать Command + Z, чтобы отменить удаление ограничений один за другим.

Попробуй. Дай мне знать

  • Каталог не найден для опции '-L / Users / ... / TestFlightSDK1.1'
  • Кордова iOS App Xcode - Ошибка - выдается из исполняемой памяти при распределении 128 байтов
  • Скрыть индексную строку при поиске UITableView
  • relocatable dylib (например, встроенные фреймворки) поддерживаются только на iOS 8.0 и более поздних версиях (@ rpath / libswift_stdlib_core.dylib)
  • Почему функция performSegueWithIdentifier не работает внутри viewDidLoad?
  • Преобразование приложения ios в 64-битную архитектуру | Создание настроек архитектуры | Xcode 6.1.1
  • Открытие нового UIViewController при нажатии ссылки на UIWebView
  • «Невозможно загрузить приложение. <Имя приложения> не может быть установлено в это время "
  • Как вы предотвращаете автоматический запуск игровых площадок Xcode 7?
  • Как разрешить конфликты имен классов при создании рамок iOS?
  • Прикрепите фотографию к письму из приложения iPhone
  • Interesting Posts

    Проблема с использованием нескольких каталогов активов в XCode 5

    iOS – открытие приложения из sms и получение содержимого sms

    Показывать индикатор активности при изменении вида (Segue) и загружать данные для следующего представления (API)

    Обнаружение, если UITableView находится в состоянии startUpdates / endUpdates

    Цель NSUTF8StringEncoding

    Есть ли способ глобально изменить заголовок всех кнопок панели навигации на «Назад»,

    Ошибка TDBadgeView nsstring без ARC

    iOS UIImagePickerController – результат ориентации изображения после загрузки

    воспроизведение изображений последовательно в ios

    Клип UILabel lineBreakMode не обрезает текст

    Как реализовать «щепотку для увеличения» в пользовательской камере

    Проверка доступности UIAppearance

    Отклонить Modal View

    Поставьте галочку в левой части UITableViewCell

    iOS: применение RGB-фильтра для PNG в оттенках серого

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.