Difference between ContentHugging and ContentCompressionResistance with example codesw

Needone App
2 min readDec 8, 2022

--

In Swift, it is quite common to see ContentHugging and ContentCompressionResistance either when we are using the storyboard or code to render the user interface. Which ContentHugging and ContentCompressionResistance are two properties that determine how a view adjusts its size when it is placed in a user interface.

ContentHugging

ContentHugging determines how strongly a view resists increasing its size to fit its content. This property is often used to prevent a view from becoming too large for its content, which can cause the content to be truncated or obscured.

An example:

// don't let label text field stretch at all
label.setContentHuggingPriority(.required, for: .horizontal)

// let label text field stretch if needed
label.setContentHuggingPriority(.defaultHigh, for: .horizontal)

ContentCompressionResistance

ContentCompressionResistance determines how strongly a view resists decreasing its size when there is not enough space for it in the user interface. This property is often used to prevent a view from becoming too small for its content, which can cause the content to be difficult to read or understand.

let myView = UIView()
myView.setContentCompressionResistancePriority(.required, for: .vertical)

We are creating a new view and setting its content compression resistance priority for the vertical axis to .required. This means that the view will resist shrinking along the vertical axis as much as possible, and it will only shrink if there is not enough space in the user interface for it to maintain its original size.

Notice that: We can set up the orientation (either .horizontal or .vertical) for both ContentHugging and ContentCompressionResistance.

In general, views that contain text or other important content should have high values for both content hugging and content compression resistance, while views that are less important or that can be resized without affecting the readability of the content can have lower values.

Originally published at https://needone.app on December 8, 2022.

--

--

No responses yet