- Create element without an explicit
Frame
.
- Set
TranslatesAutoresizingMaskIntroConstraints = false
- Create an array of
NSLayoutConstraints
- Work top-to-bottom, left-to-right, or vice versa. Do this consistently throughout program
- Use Layout Anchors
- Use the top-level
UIView
s SafeAreaLayoutGuide
to position relative to the Window / screen
- For each dimension, set its location (
LeadingAnchor
/ TopAnchor
or TrailingAnchor
/ BottomAnchor
)
- Either set the other location anchor or set the internal dimension (
WidthAnchor
/ HeightAnchor
)
- Call
NSLayoutConstraint.ActivateConstraints
after the UIView
and any referenced UIView
objects have been added to the View Hierarchy (compiles OK, but runtime exception)
toolbar = new UIToolbar();
toolbar.TranslatesAutoresizingMaskIntoConstraints = false;
var tbConstraints = new[]
{
toolbar.LeadingAnchor.ConstraintEqualTo(this.View.SafeAreaLayoutGuide.LeadingAnchor),
toolbar.TrailingAnchor.ConstraintEqualTo(this.View.SafeAreaLayoutGuide.TrailingAnchor),
toolbar.TopAnchor.ConstraintEqualTo(this.View.SafeAreaLayoutGuide.TopAnchor),
toolbar.HeightAnchor.ConstraintEqualTo(toolbar.IntrinsicContentSize.Height)
};
View.AddSubview(toolbar);
NSLayoutConstraint.ActivateConstraints(tbConstraints);
label = new UILabel();
label.Text = "This is the detail view";
label.TranslatesAutoresizingMaskIntoConstraints = false;
var lblConstraints = new[]
{
label.LeadingAnchor.ConstraintEqualTo(this.View.SafeAreaLayoutGuide.LeadingAnchor, 20.0f),
label.WidthAnchor.ConstraintEqualTo(label.IntrinsicContentSize.Width),
label.TopAnchor.ConstraintEqualTo(this.toolbar.BottomAnchor, 20.0f),
label.HeightAnchor.ConstraintEqualTo(label.IntrinsicContentSize.Height)
};
View.AddSubview(label);
NSLayoutConstraint.ActivateConstraints(lblConstraints);