mam widok UICollection pracy z samodzielnego doboru komórek, jak pokazano na WWDC 2014.UICollectionView z selfsizing komórki nie obliczaniu contentSize prawidłowo
chcę umieścić go wewnątrz UITableViewCell i wyświetlić chmurę tagów (dobre referencje, co ja chcesz osiągnąć to w aplikacji Foursquare: )
Mój problem polega na tym, że przy samodzielnym wymiarowaniu komórek rozmiar zawartości jest zwracany nieprawidłowo. przygotowałem jakiś krótki pokaz, aby pokazać problem:
- (void)viewDidLoad
{
[super viewDidLoad];
self.elements = [NSMutableArray array];
for (int i = 0; i < 23; i++)
{
[self.elements addObject:[self randomString]];
}
UICollectionViewFlowLayout* layout = [[UICollectionViewFlowLayout alloc] init];
layout.estimatedItemSize = CGSizeMake(50, 30);
self.collectionView=[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];
[self.collectionView setDataSource:self];
[self.collectionView setDelegate:self];
UINib *cellNib = [UINib nibWithNibName:@"CustomCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"CustomCell"];
[self.collectionView setBackgroundColor:[UIColor blueColor]];
[self.view addSubview:self.collectionView];
}
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.collectionView.frame = CGRectMake(0, 0, self.collectionView.frame.size.width, self.collectionView.contentSize.height);
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [self.elements count];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell* cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"CustomCell" forIndexPath:indexPath];
cell.customLabel.text = [self.elements objectAtIndex:[indexPath row]];
return cell;
}
Kiedy robię to stary sposób i usunąć estimatedItemSize i używać itemSize zamiast lub metoda delegat do obliczenia wielkości - to działa prawidłowo, więc myślę, że jest za pomocą estimatedItem rozmiar, aby uzyskać rozmiar treści.
Czy istnieje sposób na to, aby działał z samokierowaniem komórek i automatycznie UICollectionView do treści?
err ... Wiem, że to nie pomaga, ale nie polecam na razie używać komórki samokonwersyjnej w widokach kolekcji. Wygląda na to, że Apple wykonało niezbyt dobrą robotę, wykonując https://devforums.apple.com/search.jspa?resultTypes=MESSAGE&peopleEnabled=true&q=self-sizing. –
Jaki będzie sposób na wdrożenie go tak, jak tego chcę? :) Nawet przy ręcznych obliczeniach mam problem z przewidywaniem, ile miejsca potrzebuję na UICollectionView, aby wyświetlić jego zawartość - potrzebuję przewidywania dla wysokości UITableViewCell :) –