ios objective-c uilabel nslayoutconstraint

ios - Cómo configurar UILabel solo ancho y alto y restricciones mediante programación



objective-c nslayoutconstraint (3)

En Swift 3: (solo reemplaza .Hight por .height y .Equal por .equal)

self.addConstraint(NSLayoutConstraint(item: self, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 35))

Quiero crear un UILabel programáticamente con altura, ancho y luego quiero agregarle restricciones también programáticamente para colocar el UILabel.

Actualizar:

Quiero crear una interfaz de usuario como esta:

Cómo crear esta interfaz de usuario todo programáticamente

Código para crear una etiqueta label1 manera similar, creé dos etiquetas label2 y label3

UILabel *label1 = [[UILabel alloc]init]; label1.font = TitleFont; label1.numberOfLines=0; label1.text= @"Descriptions"; label1.lineBreakMode=NSLineBreakByWordWrapping; [label1 sizeToFit]; label1.backgroundColor=[UIColor blueColor]; label1.textColor=[UIColor blackColor]; label1.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:label1];

Y ahora puedo agregarles restricciones horizontales con este código.

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[label1]-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(label1)]];

También puedo establecer restricciones verticales con la vista pero no puedo establecer restricciones con una etiqueta a otra.


Intento este método para cambiar la altura como la longitud del texto en su etiqueta.

poner viewdidload

[yourlabel setNumberOfLines:0]; CGRect mainframe = _lbl_board.frame; mainframe.size.height = [self getLabelHeight:yourlabel]; yourlabel.frame = mainframe;

método

- (CGFloat)getLabelHeight:(UILabel*)label { CGSize constraint = CGSizeMake(label.frame.size.width, CGFLOAT_MAX); CGSize size; NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init]; CGSize boundingBox = [label.text boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:label.font} context:context].size; size = CGSizeMake(ceil(boundingBox.width), ceil(boundingBox.height)); return size.height; }


Para crear etiquetas con restricciones de altura y anchura, aquí están las restricciones ... Y no olvide agregar etiquetas para ver con el método addSubview

UILabel *Label = [[UILabel alloc] init]; [Label setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.view addSubview:Label]; // Width constraint [Label addConstraint:[NSLayoutConstraint constraintWithItem:Label attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1 constant:200]]; // Height constraint [Label addConstraint:[NSLayoutConstraint constraintWithItem:Label attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1 constant:21]];

Y en veloz

Label.setTranslatesAutoresizingMaskIntoConstraints(false) self.view.addSubview(Label) Label.addConstraint(NSLayoutConstraint(item: Label, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 21)) Label.addConstraint(NSLayoutConstraint(item: Label, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 200))

Revisa este link para más detalles.

ACTUALIZAR
A medida que actualizas tu pregunta, aquí está mi respuesta actualizada ...

UILabel *Label1 = [[UILabel alloc] init]; [Label1 setTranslatesAutoresizingMaskIntoConstraints:NO]; UILabel *Label2 = [[UILabel alloc] init]; [Label2 setTranslatesAutoresizingMaskIntoConstraints:NO]; Label1.text = @"Label1"; Label1.backgroundColor = [UIColor blueColor]; Label2.text = @"Label2"; Label2.backgroundColor = [UIColor redColor]; [self.view addSubview:Label1]; [self.view addSubview:Label2]; // Width constraint [Label1 addConstraint:[NSLayoutConstraint constraintWithItem:Label1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1 constant:280]]; // Height constraint [Label1 addConstraint:[NSLayoutConstraint constraintWithItem:Label1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1 constant:21]]; // CenterX constraint [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:Label1 attribute: NSLayoutAttributeCenterX multiplier:1 constant:0]]; // Top constraint [self.view addConstraint:[NSLayoutConstraint constraintWithItem:Label1 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute: NSLayoutAttributeBottom multiplier:1 constant:40]]; // label2 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:Label1 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:Label2 attribute: NSLayoutAttributeLeading multiplier:1 constant:0]]; // label2.Height = label1.Height [self.view addConstraint:[NSLayoutConstraint constraintWithItem:Label1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:Label2 attribute: NSLayoutAttributeHeight multiplier:1 constant:0]]; // label2.width = label1.width [self.view addConstraint:[NSLayoutConstraint constraintWithItem:Label1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:Label2 attribute: NSLayoutAttributeWidth multiplier:1 constant:0]]; // label2.Top [self.view addConstraint:[NSLayoutConstraint constraintWithItem:Label2 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:Label1 attribute: NSLayoutAttributeBottom multiplier:1 constant:34]];

Pantalla de resultados