voglio sbarazzarsi di un problema di pixel sulla mia device.I sono la progettazione di un calendario che si presenta come di seguitoErrore nella arrotondamento valore a virgola mobile per la vista raccolta
Sto usando un UICollectionViewCell per questo scopo
- (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);
}
il problema è che se aumento larghezza anche da 0.0000001 punto allora il numero di cellule tiraggio per riga è 6 anziché 7. ho provato aumentando l'UIEdgeInset (da 0,00001) così ma è il stesso issu e. Le proprietà per il layout del flusso sono impostate in modo appropriato.
layout.minimumInteritemSpacing = 0.0f;
layout.minimumLineSpacing = 0.0f;
Come si rende la dimensione della cella coerente senza lasciare il vuoto? La larghezza effettiva della cella è 53.571428571428569 (375/7). Se io arrotondare il valore al 53.58 poi ho vista qui sotto
hai un buon punto. Sono consapevole che l'impostazione della larghezza su% 7 risolve il problema. Sto cercando la comprensione di una soluzione più approfondita di come UIKit si occupa della conversione da punti a pixel e se esiste un modo per ignorare quei comportamenti in caso di errore in virgola mobile. –
Ho riscontrato lo stesso problema di recente (https://stackoverflow.com/questions/44380440/ios-uicollectionview-spacing-precision) Nel mio caso, la larghezza delle celle è 103.5, che non dovrebbe avere problemi di arrotondamento, ma io ha finito per avere linee verticali indesiderate. Sembra che il modo migliore per gestirlo sia avere un piccolo margine tra tutte le celle, ma questo è un compromesso sull'interfaccia utente. – Stephenye