Hey Leute,
Folgendes:
Ich habe einen UITableViewerController der ca. 7 Sections mit jeweils einer Cell hat. Desweiteren habe ich implementiert, dass wenn man auf die HeaderView toucht, die Sections auf - bzw. zuklappen.
Dazu setze ich numberOfRows in der Section auf 0.
Nun ist es aber so, dass wenn ich nach unten oder oben scrolle, einige Hänger gibt. Also es läuft nicht flüssig. Habe schon eigentich alles aus cellForRowAtIndexPath rausoptimiert, sodass ich dort nur nach den Text setze. Siehe hier:
Alles anzeigen
Findet dort jemand (Bis auf das Bild laden) einen performancefressenden Fehler?
Da die HeaderView auch eine UIVisualView bzw. unter iOS 7 eine UIView mit Semitransparenz und 2 Label hat, habe ich diese auch schon gecached. Läuft aber immernoch nicht.
Vielleicht hat es ja etwas damit zu tun, dass die Cells dynamische Größen haben, also abhängig vom Content. Das habe ich gelöst indem ich einfach
gesetzt habe. Da wäre die Frage, warum funktioniert das?? Unter iOS 7 funktionierts nicht. Da werden die Cells immer mit 44 Höhe erstellt. Unter iOS 8 nimmt er die dynamische Größe der Cell.
Fragen über Fragen... Wäre dankbar für Tipps und Hilfe
Danke!
Folgendes:
Ich habe einen UITableViewerController der ca. 7 Sections mit jeweils einer Cell hat. Desweiteren habe ich implementiert, dass wenn man auf die HeaderView toucht, die Sections auf - bzw. zuklappen.
Dazu setze ich numberOfRows in der Section auf 0.
Nun ist es aber so, dass wenn ich nach unten oder oben scrolle, einige Hänger gibt. Also es läuft nicht flüssig. Habe schon eigentich alles aus cellForRowAtIndexPath rausoptimiert, sodass ich dort nur nach den Text setze. Siehe hier:
Quellcode
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- UITableViewCell *cell;
- if(indexPath.section == 0)
- {
- cell = (ProductTitleCell *)[tableView dequeueReusableCellWithIdentifier:@"ProductTitleCellID" forIndexPath:indexPath];
- if(!cell)
- {
- cell = (ProductTitleCell *)[[NSBundle mainBundle] loadNibNamed:@"ProductTitleCell" owner:self options:0][0];
- cell.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.65];
- }
- ((ProductTitleCell *)cell).productTitle.text = [productInfos objectForKey:@"prname"];
- ((ProductTitleCell *)cell).productSubtitle.text = [productInfos objectForKey:@"prtitle"];
- ((ProductTitleCell *)cell).productMerkmale.text = [productInfos objectForKey:@"merkmale"];
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
- GDataXMLElement *prodImage = [_product elementsForName:@"product_image"].firstObject;
- NSString *imgString = prodImage.stringValue;
- UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgString]]];
- dispatch_async(dispatch_get_main_queue(), ^{
- if(img)
- {
- ((ProductTitleCell *)cell).productImage.image = img;
- }
- });
- });
- }
- else if(indexPath.section == 1)
- {
- cell = (TextViewCell *)[tableView dequeueReusableCellWithIdentifier:@"TextViewCellID" forIndexPath:indexPath];
- if(!cell)
- {
- cell = (ProductTitleCell *)[[NSBundle mainBundle] loadNibNamed:@"TextViewCell" owner:self options:0][0];
- cell.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.65];
- }
- ((TextViewCell *)cell).contentLabel.text = productDescription;
- [((TextViewCell *) cell).contentLabel sizeToFit];
- }
- else if(indexPath.section > 1 && indexPath.section < merkmaleHeader.count + 2)
- {
- cell = (TextViewCell *)[tableView dequeueReusableCellWithIdentifier:@"TextViewCellID" forIndexPath:indexPath];
- if(!cell)
- {
- cell = (ProductTitleCell *)[[NSBundle mainBundle] loadNibNamed:@"TextViewCell" owner:self options:0][0];
- cell.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.65];
- }
- ((TextViewCell *)cell).contentLabel.attributedText = merkmaleContent[indexPath.section - 2];
- [((TextViewCell *) cell).contentLabel sizeToFit];
- }
- return cell;
- }
Findet dort jemand (Bis auf das Bild laden) einen performancefressenden Fehler?
Da die HeaderView auch eine UIVisualView bzw. unter iOS 7 eine UIView mit Semitransparenz und 2 Label hat, habe ich diese auch schon gecached. Läuft aber immernoch nicht.
Vielleicht hat es ja etwas damit zu tun, dass die Cells dynamische Größen haben, also abhängig vom Content. Das habe ich gelöst indem ich einfach
gesetzt habe. Da wäre die Frage, warum funktioniert das?? Unter iOS 7 funktionierts nicht. Da werden die Cells immer mit 44 Höhe erstellt. Unter iOS 8 nimmt er die dynamische Größe der Cell.
Fragen über Fragen... Wäre dankbar für Tipps und Hilfe
Danke!