MSStickerBrowser Просмотреть наклейки, выходящие за рамки

Я пытаюсь динамически загрузить наклейки для расширения сообщений для iOS 10. Я успешно загрузил эти значки; однако они не могут должным образом ограничить пропорции приложения для сообщений.

В компактном представлении расширения сообщения оно имеет нижний колонтитул. Это можно увидеть здесь: введите описание изображения здесь

В расширенном представлении расширения сообщения оно имеет заголовок. введите описание изображения здесь

Я загружаю эти наклейки через MSStickerBrowserView подпредставление MSStickerBrowserView. Я перезаписываю методы суперкласса numberOfStickers и stickerBrowserView для загрузки моих изображений.

Из того, что я могу сказать, MSStickerBrowserView - это просто оболочка для UICollectionView.

В любом случае, после загрузки стикеров они не ограничиваются верхним и нижним колонтитулом. Я приложил GIF из того, что я имею в виду ниже:

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

Как видите, в компактном виде последний ряд наклеек идет под нижний колонтитул. Соответственно в развернутом виде верхний ряд наклеек уходит под заголовок.

В качестве эксперимента я реализовал ту же систему динамических наклеек, но с фактическим UICollectionViewController и UICollectionView (вместо оболочек MSStickerBrowser), и тот же эффект был достигнут. Более того, я попытался создать собственный макет для этого, но он дал тот же результат.

Я бы предпочел придерживаться MSStickerBrowserView, так как он уже был сделан для этой цели; однако, если вы видите UICollectionView более подходящим, я был бы готов изменить.

Обратите внимание, что с использованием MSStickerBrowserViewController и View UICollectionView создается программно, поэтому ограничения раскадровки недоступны, и я не смог применить какие-либо программные константы к ячейкам представлений.

Я не совсем уверен, как это исправить, и буду рад любым предложениям.

3 ответа

Я исправил это, используя UICollectionViewController с переменной состояния для представления текущего стиля представления (.expanded или.compact), который я установил во время презентации.

Затем в viewWillAppear для моего UICollectionViewController я устанавливаю contentInset collectionView в зависимости от стиля представления

if let style = self.presentationStyle, style == .expanded { 
    collectionView?.contentInset =  UIEdgeInsets(top: 95, left: cellPadding, bottom: cellPadding, right: cellPadding)
} 

cellPadding - это число, которое я вычислил после установки itemSize в моем collectionViewLayout, но значение 95 - это всего лишь догадка /kludge, так как я еще не выяснил, как получить размер содержащейся верхней навигационной панели iMessage.

Попробуйте снять флажки ниже для вашего контроллера представления:

  • Под топ-баров

Надеюсь, это сработает....

Вы можете попробовать использовать раскадровку для просмотра макета и добавить пустое представление в браузере для решения

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