How to set UILabel only width and height and constraints programmatically
To create label with height and width constraints here is the constraints...And don't forget to add label in to view with addSubview
method
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]];
Swift 4:
label.translatesAutoresizingMaskIntoConstraints = falselabel.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))
And In Swift
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))
Check this link for more detail
UPDATE
As you update your question, here is my updated answer...
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]];
Result Screen
i try this method to change height as text length in your label.
put viewdidload
[yourlabel setNumberOfLines:0]; CGRect mainframe = _lbl_board.frame; mainframe.size.height = [self getLabelHeight:yourlabel]; yourlabel.frame = mainframe;
method
- (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;}
In Swift 3 : (just replace .Height by .height and .Equal by .equal)
self.addConstraint(NSLayoutConstraint(item: self, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 35))