Я пытаюсь создать пользовательский интерфейс, как показано ниже.Интервал между представлениями коллекции ui
Для этой цели я использую UICollectionView
и FlowLayout
.
Для показывая первую ячейку с полной шириной и остальные ячейки в 3 колонки, я реализовал sizeForItemAtIndexPath:
и minimumInteritemSpacingForSectionAtIndex
методы:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
var cellSize = CGSizeZero
if indexPath.item == 0
{
let width = self.cvMedia.frame.width - 20
let height = (width * 9)/16
cellSize = CGSize(width: width, height: height)
}
else
{
let width = self.cvMedia.frame.width/3 - 20
let height = (width * 16)/9
cellSize = CGSize(width: width, height: height)
}
return cellSize
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat
{
return 20.0
}
Но я получаю следующий выход в iPhone 6SPlus и iPhone 6Plus :
Я попытался, изменив пункт расстояние от 20 до 19 лет, и он работал на симуляторе, но на реальном устройстве он все еще показывает такое же поведение. Если я изменяю значения интервала, я получаю правильный вывод на некоторых версиях устройства и не работаю над некоторыми версиями. Я могу добавить проверку версии устройства и на основании этого могу вернуть значение. Но это не элегантное решение, и оно будет ломаться в будущих версиях. Может ли кто-нибудь помочь мне решить эту проблему? Заранее спасибо.
Вы удалили врезки по умолчанию из раскадровки? – Happiehappie
@Happiehappie: Нет, я ничего не менял в раскадровке. –