Я хочу, чтобы избавиться от одного вопроса пикселей на моем device.I я разработка календаря, который выглядит, как показано нижеОшибки округления значения с плавающей точкой для представления коллекции
Я использую UICollectionViewCell для эта цель
- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
return UIEdgeInsetsMake(0,0,0,0); // top, left, bottom, right
}
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat collectionViewWidth = (CGRectGetWidth(collectionView.frame)/7);
CGFloat collectionViewHeight = 48;
return CGSizeMake(collectionViewWidth, collectionViewHeight);
}
проблема заключается в том, что если я увеличить ширину даже 0,0000001 точки, то число клеток нарисовать на линию 6 вместо 7. Я попытался увеличения UIEdgeInset (от 0,00001), а также, но это тот же выпуск е. Свойства для компоновки потока устанавливаются соответствующим образом.
layout.minimumInteritemSpacing = 0.0f;
layout.minimumLineSpacing = 0.0f;
Как сделать размер ячейки согласованным, не выходя из зазора? Фактическая ширина ячейки составляет 53,571428571428569 (375/7). Если я округлять значение до 53.58, то я получаю снизу Вид
у вас есть хороший момент. Я знаю, что установка ширины в% 7 устраняет проблему. Я ищу понимание более глубокого решения, как UIKit имеет дело с точками преобразования пикселей, и если есть способ переопределить эти поведения в случае возникновения ошибки с плавающей точкой. –
Недавно я столкнулся с той же проблемой (https://stackoverflow.com/questions/44380440/ios-uicollectionview-spacing-precision). В моем случае ширина ячеек составляет 103,5, что не должно иметь проблемы округления, но я все же закончились с нежелательными вертикальными линиями. Похоже, лучший способ справиться с этим - иметь небольшой запас между всеми ячейками, но это компромисс в пользовательском интерфейсе. – Stephenye