Search code examples
iosobjective-cswiftautolayoutnslayoutconstraint

UIView with dynamic height multiple UILabel


I'm making a custom UIView with 2 UILabel in it, with each UILabel having dynamic height. I'm unable to set constraints for dynamic height. (I'm new to Auto-Layout & iOS stuff).

Both UILabels are connected to each other from Top & Bottom, and are Horizontally aligned to superview. And when I change content of one of the UILabel, UIView and UILabel does not resize as required.

Please suggest. Attaching screenshots for current constraints.


Solution

  • I made a demo for you according to your requirement. Download it from below link,

    Autoresize UIView and UILabel

    Step by Step Guide :-

    Step 1 :- Set constrain to UIView

    1) Leading 2) Top 3) Trailing (From mainview)

    enter image description here

    Step 2 :- Set constrain to Label 1

    1) Leading 2) Top 3) Trailing (From it's superview)

    enter image description here

    Step 3 :- Set constrain to Label 2

    1) Leading 2) Top 3) Trailing (From it's superview)

    enter image description here

    Step 4 :- Most tricky give bottom to UILabel from UIView.

    In Xcode 10 and above - Select your UIView and Label after that from the Align Constraint section select Bottom Edges constraint.

    enter image description here

    enter image description here

    Step 5 :- (Optional) Set constrain to UIButton

    1) Leading 2) Bottom 3) Trailing 4) Fixed Height (From mainview)

    enter image description here

    Output :-

    enter image description here

    Note :- Make sure you have set Number of lines =0 in Label property.

    enter image description here

    Edit1 :- If you want to increase size with BottomConstrain (>=) please check below Image.

    enter image description here

    I hope this info enough to understand Autoresize UIView according to UILabel's height and Autoresize UILabel According to text.