2016-07-29 35 views
0

Zuerst zeige ich meine cell, mein Label mehr constaints hat:Q: eine Constraints Ansicht erhalten gibt leere Array


constrains


In meiner - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath Methode.

ich die label ‚s Constraints:

NSArray *cons = (((NoticeAnnouncementCell*)cell).mainTitle).constraints;

aber ich bekomme ein leeres Array.

+0

gibt cell.constraints/cell.contentView.constraints auch nil zurück? –

+0

Sie sollten zuerst die Instanz von NoticeAnnouncementCell erstellen und dann auf die Integritätsbedingung des Labels zugreifen als NSArray * constraintOfMainTitleLabel = cell.mainTitleLable.constraints; –

Antwort

0

Vielleicht müssen Sie die Einschränkungen von SuperView bekommen?

NSArray *constraints = cell.constraints; 

oder

Fund Einschränkung in Subviews

NSArray *subviews = cell.subviews; 

[subviews enumerateObjectsUsingBlock:^(UIView _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
    if (obj.constraints.count == 0) { 
     return; 
    } 

    NSLog(@"%@", obj); 
    NSLog(@"%@", obj.constraints); 

}]; 
+0

@Teja Nandamuri.Wenn ich die "constaints" von supperView erhalte, woher weiß ich, welches "label's" constaint ist? – aircraft

1

Sie sollten zunächst eine Instanz von Zelle erstellen und dann die Einschränkung des Labels zugreifen, wie unten,

-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell1 = (UITableViewCell*) [tableView cellForRowAtIndexPath:indexPath]; 
    UILabel *label = (UILabel*) [cell viewWithTag:10]; 
    NSArray *arrayOfLableConstraint = [label constraints]; 

} 

Durch diese Sie werden nur auf die Beschriftung selbst wie Breite und Höhe oder irgendeine Ausrichtungsbeschränkung, zu ge Wenn Sie alle Integritätsregeln verwenden, sollten Sie auf die Integritätsbedingung der Zelle zugreifen. Sie müssen sich nicht darum kümmern, wie Sie die Label-Integritätsbedingung nur aus anderen Sichten heraus finden. Sie können dies einfach tun, indem Sie den Bezeichner für die Einschränkungen festlegen.

Sie können die Kennung der Einschränkung festgelegt, indem Sie einfach die Einschränkung einzeln auswählen und die Kennung von Größe Inspektor als Show gesetzt unten,

enter image description here

Hoffnung, das Ihnen hilft ...

+0

Ich habe Ihre Methode getestet, und ich denke, Ihre Funktion ist gut, aber da ist es nicht sinnvoll für mein Problem, und ich danke Ihnen noch einmal. – aircraft

+1

Was ist Ihr Problem, dann habe ich nur auf Ihre Fragen geantwortet, das heißt, Sie sind nicht in der Lage, auf die Einschränkung des Labels zuzugreifen. Und könnten Sie erklären, warum Sie auf die Einschränkung zugreifen möchten, denn wenn Sie eine bestimmte Abhängigkeit wie in dem von Ihnen bereitgestellten Bild ändern möchten, können Sie, wenn Sie die Beschränkung von verticalSpace/topSpace ändern möchten, einfach einen Auslass dieser Konstante und erstellen keine Notwendigkeit, jede Einschränkung zu durchlaufen. –

+0

danke dein Patient, mein Problem ist, dass ich die "Label's" -Beschränkungen bekomme, es zeigt leere Array. Ich werde Ihre Antwort verbessern, es ist eine gute Antwort für die Suche nach Constraint. – aircraft