Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Width of UILabel created programmatically

I'm trying to create a UILabel programmatically that fits it's content. The best I could do was to use the NSString's method sizeWithAtributes to get it's content's required width and then apply a constraint that fixes the width to that value.

Is this the way it is supposed to be done using autolayout?

like image 590
Mppl Avatar asked Dec 01 '25 20:12

Mppl


1 Answers

if you need some with aoutolayouts, i try comment:

    UILabel *testLabel = [UILabel new];
    [testLabel setFont:[UIFont systemFontOfSize:16]];
    [testLabel setText:@"Test text for size context"];
    [testLabel setTextAlignment:NSTextAlignmentLeft];
    [testLabel setNumberOfLines:0]; //0 - infiniy lines if not enough space more
    [testLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; // Autolayout rule: The higher the priority, the more important hold the text.. by horizontal
    [testLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];//some like above but verticale
    [testLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];// reverse like Hugging but Compression. then lower priority then text croping.
    [testLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisVertical];
    [testLabel preferredMaxLayoutWidth:200];//Start new line each 200 points width
    [testLabel setPreferredMaxLayoutWidth:YES];// resize Font size by label size.
    [testLabel setTranslatesAutoresizingMaskIntoConstraints:NO]; // Disable autolaresize, enable autolayouts
like image 133
Bimawa Avatar answered Dec 03 '25 12:12

Bimawa



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!