public override void LoadView()
        {
            View = new UIView();
            View.BackgroundColor = UIColor.White;

            var imageView = new UIImageView
            {
                ContentMode = UIViewContentMode.ScaleAspectFit,
                TranslatesAutoresizingMaskIntoConstraints = false
            };
            ImageView = imageView;
            View.Add(ImageView);

            var ratingControl = new AAPLRatingControl();
            ratingControl.TranslatesAutoresizingMaskIntoConstraints = false;
            ratingControl.AddTarget(RatingChanges, UIControlEvent.ValueChanged);
            RatingControl = ratingControl;
            View.Add(RatingControl);

            var overlayButton = new AAPLOverlayView();
            overlayButton.TranslatesAutoresizingMaskIntoConstraints = false;
            OverlayButton = overlayButton;
            View.Add(OverlayButton);

            UpdatePhoto();

            var views = NSDictionary.FromObjectsAndKeys(
                   new object[] { imageView, ratingControl, overlayButton },
                   new object[] { "imageView", "ratingControl", "overlayButton" }
               );

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("|[imageView]|",
                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|[imageView]|",
                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("[ratingControl]-|",
                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("[overlayButton]-|",
                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("V:[overlayButton]-[ratingControl]-|",
                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            var constraints = new List<NSLayoutConstraint>();

            constraints.AddRange(NSLayoutConstraint.FromVisualFormat("|-(>=20)-[ratingControl]",
                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            constraints.AddRange(NSLayoutConstraint.FromVisualFormat("|-(>=20)-[overlayButton]",
                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            foreach (var constraint in constraints)
                constraint.Priority = (int)UILayoutPriority.Required - 1;

            View.AddConstraints(constraints.ToArray());
        }
        public override void LoadView()
        {
            View = new UIView();
            View.BackgroundColor = UIColor.White;

            var imageView = new UIImageView
            {
                ContentMode = UIViewContentMode.ScaleAspectFit,
                TranslatesAutoresizingMaskIntoConstraints = false
            };

            ImageView = imageView;
            View.Add(ImageView);

            var ratingControl = new AAPLRatingControl();

            ratingControl.TranslatesAutoresizingMaskIntoConstraints = false;
            ratingControl.AddTarget(RatingChanges, UIControlEvent.ValueChanged);
            RatingControl = ratingControl;
            View.Add(RatingControl);

            var overlayButton = new AAPLOverlayView();

            overlayButton.TranslatesAutoresizingMaskIntoConstraints = false;
            OverlayButton = overlayButton;
            View.Add(OverlayButton);

            UpdatePhoto();

            var views = NSDictionary.FromObjectsAndKeys(
                new object[] { imageView, ratingControl, overlayButton },
                new object[] { "imageView", "ratingControl", "overlayButton" }
                );

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("|[imageView]|",
                                                                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("V:|[imageView]|",
                                                                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("[ratingControl]-|",
                                                                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("[overlayButton]-|",
                                                                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            View.AddConstraints(NSLayoutConstraint.FromVisualFormat("V:[overlayButton]-[ratingControl]-|",
                                                                    NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            var constraints = new List <NSLayoutConstraint>();

            constraints.AddRange(NSLayoutConstraint.FromVisualFormat("|-(>=20)-[ratingControl]",
                                                                     NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            constraints.AddRange(NSLayoutConstraint.FromVisualFormat("|-(>=20)-[overlayButton]",
                                                                     NSLayoutFormatOptions.DirectionLeadingToTrailing, null, views));

            foreach (var constraint in constraints)
            {
                constraint.Priority = (int)UILayoutPriority.Required - 1;
            }

            View.AddConstraints(constraints.ToArray());
        }