I'm having a UIView
that's containing two UILabels, which have dynamic heights. I want the UIView
to fit the size of the UILabels + some padding. Right now I'm drawing the labels and then sets the UIView's width and height constraints to the combined size of the labels.
Right now I'm doing this:
func populateWithMessage(headline: String?, message: String) {
// Sets text
self.headerLabel.text = headline
self.messageLabel.text = message
self.headerLabel.sizeToFit()
self.messageLabel.sizeToFit()
self.layoutSubviews()
// Finding the label with the greatest width
var longestLabel: UILabel!
if self.headerLabel.frame.width > self.messageLabel.frame.width {
longestLabel = self.headerLabel
} else {
longestLabel = self.messageLabel
}
let combinedLabelHeight = self.headerLabel.frame.height + self.messageLabel.frame.height
// Update the container view's constraints
self.containerViewWidtConstraint.constant = longestLabel.frame.width + 10
self.containerViewHeightConstraint.constant = combinedLabelHeight + 10
self.updateConstraints()
}
Unfortunately it doesn't work. I'm using Swift 2.3 and Autolayout.
If you want to get the view's size: float viewWidth = view. Frame. Width; float viewHeight = view.
The function sizeToFit is used when you want to automatically resize a label based on the content stored within it. As you can see, there is no change as the text is perfectly fitting in labelOne. sizeToFit only changes the label's frame.
The UIView class is a concrete class that you can instantiate and use to display a fixed background color. You can also subclass it to draw more sophisticated content.
Call this method when you want to resize the current view so that it uses the most appropriate amount of space. Specific UIKit views resize themselves according to their own internal needs. In some cases, if a view does not have a superview, it may size itself to the screen bounds.
You can do it using the storyboard itself.
Set the View's bottom constraint to second UIlabel. So when the height of label increases, UIView's height will also increases.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With