2014-10-28 13 views
11

ist hier der Code-SnippetWarum gibt systemLayoutSizeFittingSize (0, 0) für UITableViewCell zurück?

self.xyzIcon = [UIImage mobileImageNamed:@"icon_xyz"]; 
    self.xyzIconImageView = [UIImageView new]; 
    [self.contentView addSubview:self.xyzIconImageView]; 

    [self.xyzIconImageView mas_makeConstraints:^(MASConstraintMaker *make) { 
     make.left.equalTo(weakSelf.contentView.mas_left); 
     make.width.equalTo(@(weakSelf.xyzIcon.size.width)); 
     make.height.equalTo(@(weakSelf.xyzIcon.size.height)); 
    }]; 

Im View-Controller, die Tableview

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (!self.prototypeCell) { 
     self.prototypeCell = [UITableViewCell new]; 
    } 

    [self.prototypeCell configure]; 

    CGFloat heightCalculated = [self.prototypeCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height + 1.f; 

    NSLog(@"Height calculated %f", heightCalculated); 

    returns heightCalculated; 
} 

verwendet diese 1.F. immer wieder Bitte helfen Sie mir und ich bin mir nicht sicher, was ich hier falsch mache.

Antwort

26

Das Problem ist, dass Ihre Einschränkungen nicht für die Höhe der Zelle bestimmend sind. Sie haben den oberen Teil der Bildansicht oder den unteren Teil der Bildansicht nicht in der Superansicht fixiert (contentView). Also hat die Zelle nichts internes, um zu verhindern, dass sie bis auf null zusammenbricht, sozusagen, wenn Sie systemLayoutSizeFittingSize anrufen.

Um es anders auszudrücken: Die Art und Weise, wie systemLayoutSizeFittingSize funktioniert, besteht darin, die internen Beschränkungen von etwas als Struts zu behandeln, die ihm eine minimale (oder maximale) Größe geben. Du hast keine Streben.

+0

Das machte so viel Sinn. Aber es funktioniert immer noch nicht :(. Ich habe hinzugefügt: make.top.equalTo (@ 0); – mobjug

+0

Uh-huh. Hast du gelesen, was ich gesagt habe? Sie müssen _ top_and_ die Unterseite der Bildansicht _toin den Inhalt _pin_ View_. Du hast das nicht getan. Ich kann dir nicht helfen, wenn du nicht hörst. – matt

+0

OK Ich hatte die Unterseite verpasst. Danke. – mobjug

Verwandte Themen