Constraints lassen View verschwinden...

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Constraints lassen View verschwinden...

    Hi,

    ich bastel ja gerade mächtig mit den Constraint rum und das klappt auch soweit super. Aber jetzt habe ich ein Problem das verstehe ich nicht. Eventuell sehe ich auch gerade den Wald vor lauter Bäumen nicht?

    Ich habe ein TableView und die Zelle erstelle ich programmatisch. Dabei wird z.B. eine Zelle erstellt, welche nur ein Label hat und es soll über dem Label ein Trennstrich angezeigt werden (Die Tableview selber hat keine Separater) um eine neuen Abschnitt zu markieren.

    Der Code dazu:

    Quellcode

    1. #pragma mark -
    2. #pragma mark Ausgabefeld (5)
    3. -(bool)addOutputfield
    4. {
    5. UILabel *outputLabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0,self.maxLabelSize.width,self.maxLabelSize.height)];
    6. if(outputLabel)
    7. {
    8. outputLabel.text=self.feld.anzeigetext;
    9. outputLabel.font=[UIFont systemFontOfSize:FONTSIZE];
    10. outputLabel.textColor=[UIColor blackColor];
    11. outputLabel.textAlignment=NSTextAlignmentLeft;
    12. [self.contentView addSubview:outputLabel];
    13. // Links ausrichten
    14. [self setPositionOf:outputLabel relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeLeft offset:CELLPADDING_LEFT];
    15. // Vertikal ausrichten
    16. [self setVerticalPositionOf:outputLabel];
    17. UIView *seperator=[[UIView alloc] initWithFrame:CGRectMake(CELLPADDING_LEFT,CELLPADDING_TOP,100,10)];
    18. if(seperator)
    19. {
    20. seperator.backgroundColor=[UIColor blackColor];
    21. [self.contentView addSubview:seperator];
    22. // Links ausrichten
    23. [self setPositionOf:seperator relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeLeft offset:CELLPADDING_LEFT];
    24. // Breite flexibel machen
    25. [seperator setContentHuggingPriority:UILayoutPriorityFittingSizeLevel - 1.0 forAxis:UILayoutConstraintAxisHorizontal];
    26. // Rechts ausrichten
    27. [self setPositionOf:seperator relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeRight offset:-CELLPADDING_RIGHT];
    28. // Oben ausrichten
    29. [self setPositionOf:seperator relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeTop offset:CELLPADDING_TOP];
    30. }
    31. }
    32. return YES;
    33. }
    34. #pragma mark -
    35. #pragma mark Constraint helper
    36. -(void)setPositionOf:(UIView*)source relativeTo:(UIView*)relation parent:(UIView*)parent anchor:(NSInteger)attribute offset:(NSInteger)offset
    37. {
    38. [source setTranslatesAutoresizingMaskIntoConstraints:NO];
    39. NSLayoutConstraint *myConstraint =[NSLayoutConstraint constraintWithItem:source attribute:attribute relatedBy:NSLayoutRelationEqual toItem:relation attribute:attribute multiplier:1.0 constant:offset];
    40. [parent addConstraint:myConstraint];
    41. return;
    42. }
    43. -(void)setVerticalPositionOf:(UIView*)source
    44. {
    45. [self setPositionOf:source relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeTop offset:CELLPADDING_TOP+([BesuchsberichtFeldCell heightForFeld:self.feld] source.frame.size.height)/2];
    46. }
    Alles anzeigen


    Wenn ich die Constraints vom Seperator weglassen (Also ausdokumentiere) erscheint das View aber natürlich nur 320 Pixel lang denn der Autoresize funktioniert ja nicht. Wenn ich nur einen einzigen der Constraints setze, dann ist der View komplett weg.

    Was läuft schief?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • macmoonshine schrieb:

    Wahrscheinlich schieben die Constraints den View aus dem sichtbaren Bereich. Hast Du mal untersucht, wohin der View verschwindet?


    Gute Idee. Darauf bin ich gar nicht gekommen einfach mal im viewDidAppear() das Frame auszugeben.
    mache ich Morgen mal, jetzt ist schon Couchtime.

    Danke

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)