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);
        }
Esempio n. 4
0
 /// <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)));
 }
Esempio n. 5
0
        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
            };
        }
Esempio n. 6
0
 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;
        }