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:
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
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
- #pragma mark -
- #pragma mark Ausgabefeld (5)
- -(bool)addOutputfield
- {
- UILabel *outputLabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0,self.maxLabelSize.width,self.maxLabelSize.height)];
- if(outputLabel)
- {
- outputLabel.text=self.feld.anzeigetext;
- outputLabel.font=[UIFont systemFontOfSize:FONTSIZE];
- outputLabel.textColor=[UIColor blackColor];
- outputLabel.textAlignment=NSTextAlignmentLeft;
- [self.contentView addSubview:outputLabel];
- // Links ausrichten
- [self setPositionOf:outputLabel relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeLeft offset:CELLPADDING_LEFT];
- // Vertikal ausrichten
- [self setVerticalPositionOf:outputLabel];
- UIView *seperator=[[UIView alloc] initWithFrame:CGRectMake(CELLPADDING_LEFT,CELLPADDING_TOP,100,10)];
- if(seperator)
- {
- seperator.backgroundColor=[UIColor blackColor];
- [self.contentView addSubview:seperator];
- // Links ausrichten
- [self setPositionOf:seperator relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeLeft offset:CELLPADDING_LEFT];
- // Breite flexibel machen
- [seperator setContentHuggingPriority:UILayoutPriorityFittingSizeLevel - 1.0 forAxis:UILayoutConstraintAxisHorizontal];
- // Rechts ausrichten
- [self setPositionOf:seperator relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeRight offset:-CELLPADDING_RIGHT];
- // Oben ausrichten
- [self setPositionOf:seperator relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeTop offset:CELLPADDING_TOP];
- }
- }
- return YES;
- }
- #pragma mark -
- #pragma mark Constraint helper
- -(void)setPositionOf:(UIView*)source relativeTo:(UIView*)relation parent:(UIView*)parent anchor:(NSInteger)attribute offset:(NSInteger)offset
- {
- [source setTranslatesAutoresizingMaskIntoConstraints:NO];
- NSLayoutConstraint *myConstraint =[NSLayoutConstraint constraintWithItem:source attribute:attribute relatedBy:NSLayoutRelationEqual toItem:relation attribute:attribute multiplier:1.0 constant:offset];
- [parent addConstraint:myConstraint];
- return;
- }
- -(void)setVerticalPositionOf:(UIView*)source
- {
- [self setPositionOf:source relativeTo:self.contentView parent:self.contentView anchor:NSLayoutAttributeTop offset:CELLPADDING_TOP+([BesuchsberichtFeldCell heightForFeld:self.feld] source.frame.size.height)/2];
- }
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
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen