public static IEnumerable <FluentLayout> FullSizeOf( [NotNull] this UIView view, [NotNull] UIView parent, [NotNull] IUILayoutSupport topLayoutGuide, [NotNull] IUILayoutSupport bottomLayoutGuide, [CanBeNull] nfloat?margin = null) { if (view == null) { throw new ArgumentNullException(nameof(view)); } if (parent == null) { throw new ArgumentNullException(nameof(parent)); } if (topLayoutGuide == null) { throw new ArgumentNullException(nameof(topLayoutGuide)); } if (bottomLayoutGuide == null) { throw new ArgumentNullException(nameof(bottomLayoutGuide)); } return(FullSizeOf(view, parent, topLayoutGuide, bottomLayoutGuide, new Margins((float)margin.GetValueOrDefault(DefaultMargin)))); }
public static IEnumerable <FluentLayout> FullSizeOf( [NotNull] this UIView view, [NotNull] UIView parent, [NotNull] IUILayoutSupport topLayoutGuide, [NotNull] IUILayoutSupport bottomLayoutGuide, [NotNull] Margins margins) { if (view == null) { throw new ArgumentNullException(nameof(view)); } if (parent == null) { throw new ArgumentNullException(nameof(parent)); } if (topLayoutGuide == null) { throw new ArgumentNullException(nameof(topLayoutGuide)); } if (bottomLayoutGuide == null) { throw new ArgumentNullException(nameof(bottomLayoutGuide)); } if (margins == null) { throw new ArgumentNullException(nameof(margins)); } var nsTopLayoutGuide = Runtime.GetNSObject(topLayoutGuide.Handle); var nsBottomLayoutGuide = Runtime.GetNSObject(bottomLayoutGuide.Handle); return(new List <FluentLayout> { view.Top().NotNull().EqualTo(margins.Top).NotNull().BottomOf(nsTopLayoutGuide).NotNull().WithIdentifier("Top"), view.Bottom().NotNull().EqualTo(margins.Bottom).NotNull().TopOf(nsBottomLayoutGuide).NotNull().WithIdentifier("Bottom"), view.AtLeftOf(parent, margins.Left).NotNull().WithIdentifier("Left"), view.AtRightOf(parent, margins.Right).NotNull().WithIdentifier("Right") }); }
public static NSLayoutConstraint AttachToBottomLevelGuide ( UIView parent, IUILayoutSupport bottomGuide, UIView child, nfloat margin ) { NSLayoutConstraint result = NSLayoutConstraint.Create ( bottomGuide, NSLayoutAttribute.Top, NSLayoutRelation.Equal, child, NSLayoutAttribute.Bottom, 1, margin ); parent.AddConstraint(result); return(result); }
/// <summary> /// Anchors the view below a layout guide. /// </summary> /// <param name="view">A view to anchor.</param> /// <param name="layoutGuide">A layout guide to anchor to.</param> /// <param name="constant">An offset between the two objects.</param> /// <returns>The NSLayoutConstraint for the anchor.</returns> public static NSLayoutConstraint AnchorBelow(this UIView view, IUILayoutSupport layoutGuide, float constant = 0) { Throw.IfArgumentNull(layoutGuide, nameof(layoutGuide)); return(UIViewExtensions.Activate(view.TopAnchor.ConstraintEqualTo(layoutGuide.GetBottomAnchor(), constant))); }
void CreateRegularConstraints() { if (regularConstraints?.Length > 0 && sharedConstraints?.Count > 0) { return; } UILayoutGuide leadingMercuryGuide = NewLayoutGuide("leadingMercuryGuide"); UILayoutGuide leadingVenusGuide = NewLayoutGuide("leadingVenusGuide"); UILayoutGuide leadingEarthGuide = NewLayoutGuide("leadingEarthGuide"); UILayoutGuide leadingMarsGuide = NewLayoutGuide("leadingMarsGuide"); UILayoutGuide leadingJupiterGuide = NewLayoutGuide("leadingJupiterGuide"); UILayoutGuide leadingSaturnGuide = NewLayoutGuide("leadingSaturnGuide"); UILayoutGuide leadingUranusGuide = NewLayoutGuide("leadingUranusGuide"); UILayoutGuide leadingNeptuneGuide = NewLayoutGuide("leadingNeptuneGuide"); UILayoutGuide trailingMercuryGuide = NewLayoutGuide("trailingMercuryGuide"); UILayoutGuide trailingVenusGuide = NewLayoutGuide("trailingVenusGuide"); UILayoutGuide trailingEarthGuide = NewLayoutGuide("trailingEarthGuide"); UILayoutGuide trailingMarsGuide = NewLayoutGuide("trailingMarsGuide"); UILayoutGuide trailingJupiterGuide = NewLayoutGuide("trailingJupiterGuide"); UILayoutGuide trailingSaturnGuide = NewLayoutGuide("trailingSaturnGuide"); UILayoutGuide trailingUranusGuide = NewLayoutGuide("trailingUranusGuide"); UILayoutGuide trailingNeptuneGuide = NewLayoutGuide("trailingNeptuneGuide"); IUILayoutSupport topLayoutGuide = TopLayoutGuide; var planetsAndGuides = NSDictionary.FromObjectsAndKeys(new object[] { mercury, venus, earth, mars, jupiter, saturn, uranus, neptune, leadingMercuryGuide, leadingVenusGuide, leadingEarthGuide, leadingMarsGuide, leadingJupiterGuide, leadingSaturnGuide, leadingUranusGuide, leadingNeptuneGuide, trailingMercuryGuide, trailingVenusGuide, trailingEarthGuide, trailingMarsGuide, trailingJupiterGuide, trailingSaturnGuide, trailingUranusGuide, trailingNeptuneGuide, topLayoutGuide }, new object[] { "mercury", "venus", "earth", "mars", "jupiter", "saturn", "uranus", "neptune", "leadingMercuryGuide", "leadingVenusGuide", "leadingEarthGuide", "leadingMarsGuide", "leadingJupiterGuide", "leadingSaturnGuide", "leadingUranusGuide", "leadingNeptuneGuide", "trailingMercuryGuide", "trailingVenusGuide", "trailingEarthGuide", "trailingMarsGuide", "trailingJupiterGuide", "trailingSaturnGuide", "trailingUranusGuide", "trailingNeptuneGuide", "topLayoutGuide" }); var topToBottom = NSLayoutConstraint.FromVisualFormat("V:|[topLayoutGuide]-[leadingMercuryGuide]-" + "[leadingVenusGuide]-[leadingEarthGuide]-[leadingMarsGuide]-" + "[leadingJupiterGuide][leadingSaturnGuide][leadingUranusGuide]-" + "[leadingNeptuneGuide]-20-|", NSLayoutFormatOptions.DirectionLeadingToTrailing, null, planetsAndGuides); sharedConstraints = new List <NSLayoutConstraint> (topToBottom); SetLayoutIdentifierForArray((NSString)"topToBottom", NSArray.FromObjects(topToBottom)); NewHorizontalArray("|[leadingMercuryGuide][mercury][trailingMercuryGuide]|", "hMercury", planetsAndGuides); NewHorizontalArray("|[leadingVenusGuide][venus][trailingVenusGuide]|", "hVenus", planetsAndGuides); NewHorizontalArray("|[leadingEarthGuide][earth][trailingEarthGuide]|", "hEarth", planetsAndGuides); NewHorizontalArray("|[leadingMarsGuide][mars][trailingMarsGuide]|", "hMars", planetsAndGuides); NewHorizontalArray("|[leadingJupiterGuide][jupiter][trailingJupiterGuide]|", "hJupiter", planetsAndGuides); NewHorizontalArray("|[leadingSaturnGuide][saturn][trailingSaturnGuide]|", "hSaturn", planetsAndGuides); NewHorizontalArray("|[leadingUranusGuide][uranus][trailingUranusGuide]|", "hUranus", planetsAndGuides); NewHorizontalArray("|[leadingNeptuneGuide][neptune][trailingNeptuneGuide]|", "hNeptune", planetsAndGuides); sharedConstraints.Add(GuideHeightToPlanet(leadingMercuryGuide, mercury, "guideHeightToMercury")); sharedConstraints.Add(GuideHeightToPlanet(leadingVenusGuide, venus, "guideHeightToVenus")); sharedConstraints.Add(GuideHeightToPlanet(leadingEarthGuide, earth, "guideHeightToEarth")); sharedConstraints.Add(GuideHeightToPlanet(leadingMarsGuide, mars, "guideHeightToMars")); sharedConstraints.Add(GuideHeightToPlanet(leadingJupiterGuide, jupiter, "guideHeightToJupiter")); sharedConstraints.Add(GuideHeightToPlanet(leadingSaturnGuide, saturn, "guideHeightToSaturn")); sharedConstraints.Add(GuideHeightToPlanet(leadingUranusGuide, uranus, "guideHeightToUranus")); sharedConstraints.Add(GuideHeightToPlanet(leadingNeptuneGuide, neptune, "guideHeightToNeptune")); mercuryLeadingToTrailing = leadingMercuryGuide.WidthAnchor.ConstraintEqualToAnchor(trailingMercuryGuide.WidthAnchor, .02f); venusLeadingToTrailing = leadingVenusGuide.WidthAnchor.ConstraintEqualToAnchor(trailingVenusGuide.WidthAnchor, .03f); earthLeadingToTrailing = leadingEarthGuide.WidthAnchor.ConstraintEqualToAnchor(trailingEarthGuide.WidthAnchor, .06f); marsLeadingToTrailing = leadingMarsGuide.WidthAnchor.ConstraintEqualToAnchor(trailingMarsGuide.WidthAnchor, .1f); jupiterLeadingToTrailing = leadingJupiterGuide.WidthAnchor.ConstraintEqualToAnchor(trailingJupiterGuide.WidthAnchor, .2f); saturnLeadingToTrailing = leadingSaturnGuide.WidthAnchor.ConstraintEqualToAnchor(trailingSaturnGuide.WidthAnchor, 1f); uranusLeadingToTrailing = leadingUranusGuide.WidthAnchor.ConstraintEqualToAnchor(trailingUranusGuide.WidthAnchor, 2.7f); neptuneLeadingToTrailing = leadingNeptuneGuide.WidthAnchor.ConstraintEqualToAnchor(trailingNeptuneGuide.WidthAnchor, 10f); mercuryLeadingToTrailing.SetIdentifier("leadingTrailingAnchorMercury"); venusLeadingToTrailing.SetIdentifier("leadingTrailingAnchorVenus"); earthLeadingToTrailing.SetIdentifier("leadingTrailingAnchorEarth"); marsLeadingToTrailing.SetIdentifier("leadingTrailingAnchorMars"); jupiterLeadingToTrailing.SetIdentifier("leadingTrailingAnchorJupiter"); saturnLeadingToTrailing.SetIdentifier("leadingTrailingAnchorSaturn"); uranusLeadingToTrailing.SetIdentifier("leadingTrailingAnchorUranus"); neptuneLeadingToTrailing.SetIdentifier("leadingTrailingAnchorNeptune"); regularConstraints = new [] { mercuryLeadingToTrailing, venusLeadingToTrailing, earthLeadingToTrailing, marsLeadingToTrailing, saturnLeadingToTrailing, jupiterLeadingToTrailing, uranusLeadingToTrailing, neptuneLeadingToTrailing }; }
public LayoutSupport(IUILayoutSupport layoutGuide, NSLayoutAttribute layoutAttribute) { LayoutGuide = layoutGuide; Attribute = layoutAttribute; }
public static NSLayoutConstraint AttachToBottomLevelGuide ( UIView parent, IUILayoutSupport bottomGuide, UIView child, nfloat margin ) { NSLayoutConstraint result = NSLayoutConstraint.Create ( bottomGuide, NSLayoutAttribute.Top, NSLayoutRelation.Equal, child, NSLayoutAttribute.Bottom, 1, margin ); parent.AddConstraint(result); return result; }