Ich möchte auf meinem device.I eines Pixels Problem loszuwerden bin ein Kalender entwerfen, die wie unten aussiehtFehler bei Fließkommawert für die Sammlung Ansicht Abrundung
ich UICollectionViewCell bin mit für Dieser Zweck
- (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);
}
das Problem ist, dass, wenn I Breite von 0,0000001 Punkt erhöhen, selbst dann kann die Anzahl der Zellen pro Linie zu zeichnen ist 6 statt 7. habe ich versucht, die UIEdgeInset Erhöhung (von 0,00001) als gut, aber es ist das gleiche Ausgabe e. Die Eigenschaften für das Flow-Layout sind entsprechend eingestellt.
layout.minimumInteritemSpacing = 0.0f;
layout.minimumLineSpacing = 0.0f;
Wie mache ich die Zellengröße konsistent, ohne die Lücke zu verlassen? Die tatsächliche Breite der Zelle ist 53,571428571428569 (375/7). Wenn ich den Wert auf 53,58 runden dann erhalte ich die unten Ansicht
Sie haben einen guten Punkt. Ich bin mir bewusst, dass die Einstellung der Breite auf% 7 das Problem löst. Ich bin auf der Suche nach einer tieferen Lösung, wie UIKit mit Punkt-zu-Pixel-Konvertierungen umgehen kann und ob es möglich ist, diese Verhaltensweisen zu überschreiben, wenn ein Gleitkommafehler auftritt. –
Ich stieß vor kurzem auf das gleiche Problem (https://stackoverflow.com/questions/44380440/ios-uicollectionview-spacing-precision) In meinem Fall ist die Breite der Zellen 103,5, die Rundungsproblem nicht haben sollte, aber ich hatte immer noch unerwünschte vertikale Linien. Es sieht so aus, als ob der beste Weg darin besteht, einen kleinen Abstand zwischen allen Zellen zu haben, aber das ist ein Kompromiss auf der Benutzeroberfläche. – Stephenye