iOS – точность интервала UICollectionView

У меня есть простая сетка для сбора данных размером 4 x 2:

class ExampleViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { var collectionView: UICollectionView! override func viewDidLoad() { super.viewDidLoad() let layout = UICollectionViewFlowLayout() layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 0 self.collectionView = UICollectionView(frame: CGRect.init(x: 0.0, y: 100.0, width: 414.0, height: 226.0), collectionViewLayout: layout) self.collectionView.delegate = self self.collectionView.dataSource = self self.collectionView.showsVerticalScrollIndicator = false self.collectionView.showsHorizontalScrollIndicator = false self.collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: NSStringFromClass(ExampleViewController.self)) self.view.addSubview(self.collectionView) } public func numberOfSections(in collectionView: UICollectionView) -> Int { return 1 } public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 8 } public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = self.collectionView.dequeueReusableCell(withReuseIdentifier: NSStringFromClass(ExampleViewController.self), for: indexPath) cell.backgroundColor = .cyan return cell } public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let size = CGSize(width: self.collectionView.frame.width / 4.0, height: self.collectionView.frame.height / 2.0) return size } } 

Здесь мы будем игнорировать все жестко закодированные числа. Все просто, и я должен получить сетку размером 4 х 2 без какого-либо промежутка между ячейками. Однако у меня есть очень близкий, но не совсем такой: между некоторыми ячейками есть некоторое пространство.

Вот что я получил от recursiveDescription:

 <UICollectionView: 0x7f8fdf886400; frame = (0 100; 414 226); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x618000241440>; layer = <CALayer: 0x618000422e80>; contentOffset: {0, 0}; contentSize: {414, 226}> collection view layout: <UICollectionViewFlowLayout: 0x7f8fdde2a510> | <UICollectionViewCell: 0x7f8fddc103c0; frame = (0 0; 103.5 113); layer = <CALayer: 0x608000222460>> | | <UIView: 0x7f8fddc10ac0; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x608000240cc0>; layer = <CALayer: 0x608000222220>> | <UICollectionViewCell: 0x7f8fddc10ff0; frame = (103.667 0; 103.5 113); layer = <CALayer: 0x6080002223e0>> | | <UIView: 0x7f8fddc11410; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x608000240780>; layer = <CALayer: 0x608000222180>> | <UICollectionViewCell: 0x7f8fddc11700; frame = (207 0; 103.5 113); layer = <CALayer: 0x608000222580>> | | <UIView: 0x7f8fddc11910; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x608000240720>; layer = <CALayer: 0x608000221fe0>> | <UICollectionViewCell: 0x7f8fddc11c00; frame = (310.667 0; 103.5 113); layer = <CALayer: 0x608000222340>> | | <UIView: 0x7f8fddc11e10; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x608000240ed0>; layer = <CALayer: 0x608000222720>> | <UICollectionViewCell: 0x7f8fddc12100; frame = (0 113; 103.5 113); layer = <CALayer: 0x60800003fd20>> | | <UIView: 0x7f8fddc12310; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x6080002414d0>; layer = <CALayer: 0x6080002227a0>> | <UICollectionViewCell: 0x7f8fddc12600; frame = (103.667 113; 103.5 113); layer = <CALayer: 0x608000222d40>> | | <UIView: 0x7f8fddc12810; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x6080002416e0>; layer = <CALayer: 0x608000222960>> | <UICollectionViewCell: 0x7f8fddc12b00; frame = (207 113; 103.5 113); layer = <CALayer: 0x6080002222a0>> | | <UIView: 0x7f8fddc12d10; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x6080002418f0>; layer = <CALayer: 0x6080002224e0>> | <UICollectionViewCell: 0x7f8fddc13240; frame = (310.667 113; 103.5 113); layer = <CALayer: 0x608000222900>> | | <UIView: 0x7f8fddc13450; frame = (0 0; 103.5 113); gestureRecognizers = <NSArray: 0x608000241b00>; layer = <CALayer: 0x6080002228c0>> 

Обратите внимание, что есть ячейки с frame.origin.x, составляющие 103.667 и 310.667, но на самом деле это должно быть 103.5 и 310.5. Это очень близко, но не совсем.

Мне не хватает некоторых конфигураций или это какая-то ошибка вычисления с плавающей запятой в реализации UICollectionView?

  • UICollectionViewCell становится скрытым = ДА
  • Как прослушивать пользовательские штрихи для UICollectionViewCell в iOS?
  • Анимация UICollectionView contentOffset не отображает невидимые ячейки
  • collectionView необязательный в UICollectionViewController
  • Заполнение UICollectionView в обратном порядке
  • Добавление прокладки к первой и последней ячейке UICollectionView
  • Ошибка UICollectionView с использованием Swift
  • Осмотрите содержимое одной ячейки в UICollectionView
  • UICollectionView сбой при прокрутке виста (атрибуты макета для дополнительного элемента на пути индекса изменены без аннулирования).
  • Заполнять UICollectionView слева направо, когда направление прокрутки горизонтально
  • Как создать UICollectionView с заголовками столбцов и строк?
  • Interesting Posts

    выполнить блокировку iOS и присвоить переменную

    изменение файла m3u8 динамически во время выполнения (iOS)

    Я редактирую статический фильм в iOS. Используя GPUImage Framework, получая нулевые значения в следующем методе, вот мой код snipet

    UIButton в Swift не регистрирует штрихи

    Как объявить блок с аргументами в swift?

    NSNumber vs. NSInteger vs. int для свойства NSObject

    Проверьте, нет ли переменной из подкласса UICollectionViewCell

    Как проверить, является ли строка пустой в Objective C?

    Запрос ввода UIAlertView

    Обновление строки состояния обновления Snapchat Обновление iOS7

    Как получить количество людей из источников ExchangeGal, используя ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering ()

    Google Analytics для iOS SDK 2.0 – Что делать с переменной «tracker» в делегате приложения?

    Objective-c: Как мне потребовать переопределить и не вызвать супер?

    viewDidload viewController, вызванный до метода appDelegate

    Предотвратить приостановку моего приложения в фоновом режиме?

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