chcę się pozbyć jednej emisji piksela na moich device.I m projektowania kalendarza, który wygląda jak poniżejBłąd zaokrąglania wartość zmiennoprzecinkową na widok kolekcji
Używam UICollectionViewCell dla ten cel
- (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);
}
problem polega na tym, że jeśli mogę zwiększyć szerokość nawet przez 0,0000001 punktu wówczas liczba komórek narysować jedną linię jest 6 zamiast 7. próbowałem zwiększenie UIEdgeInset (przez 0,00001), jak również, ale to jest ta sama emisja mi. Właściwości układu przepływu są odpowiednio ustawione.
layout.minimumInteritemSpacing = 0.0f;
layout.minimumLineSpacing = 0.0f;
Jak zrobić rozmiar komórki spójny bez opuszczania luki? Rzeczywista szerokość komórki to 53.571428571428569 (375/7). Gdybym zaokrąglić wartość do 53.58 potem dostaję Poniżej widoku
masz dobry punkt. Jestem świadomy, że ustawienie szerokości na% 7 rozwiązuje problem. Szukam zrozumienia bardziej dogłębnego rozwiązania tego, w jaki sposób UIKit radzi sobie z konwersją punktów na piksele i czy istnieje sposób na zastąpienie tych zachowań w przypadku wystąpienia błędu zmiennoprzecinkowego. –
Ostatnio napotkałem ten sam problem (https://stackoverflow.com/questions/44380440/ios-uicollectionview-spacing-precision) W moim przypadku szerokość komórek wynosi 103,5, co nie powinno mieć problemu z zaokrąglaniem, ale ja wciąż kończyło się, mając niechciane pionowe linie. Wygląda na to, że najlepszym sposobem radzenia sobie z tym jest uzyskanie niewielkiego marginesu między wszystkimi komórkami, ale jest to kompromis w interfejsie użytkownika. – Stephenye