Beispiel #1
0
        /// <summary>
        ///     UIView with the colored border for target edges.
        /// </summary>
        /// <returns>UIView with border.</returns>
        /// <param name="view">Target view.</param>
        /// <param name="borderWidth">Border width.</param>
        /// <param name="borderColor">Border color.</param>
        /// <param name="edge">Border edge.</param>
        public static UIView WithBorder(this UIView view, nfloat borderWidth, CGColor borderColor, UIRectEdge edge)
        {
            if (edge == UIRectEdge.None)
            {
                return(view);
            }

            if (edge.HasFlag(UIRectEdge.All))
            {
                return(WithBorder(view, borderWidth, borderColor));
            }

            if (edge.HasFlag(UIRectEdge.Top))
            {
                AddBorder(
                    view,
                    borderColor,
                    UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleBottomMargin,
                    new CGRect(0, 0, view.Frame.Size.Width, borderWidth));
            }

            if (edge.HasFlag(UIRectEdge.Bottom))
            {
                AddBorder(
                    view,
                    borderColor,
                    UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleTopMargin,
                    new CGRect(0, view.Frame.Size.Height - borderWidth, view.Frame.Size.Width, borderWidth));
            }

            if (edge.HasFlag(UIRectEdge.Left))
            {
                AddBorder(
                    view,
                    borderColor,
                    UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleRightMargin,
                    new CGRect(0, 0, borderWidth, view.Frame.Size.Height));
            }

            if (edge.HasFlag(UIRectEdge.Right))
            {
                AddBorder(
                    view,
                    borderColor,
                    UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleLeftMargin,
                    new CGRect(view.Frame.Size.Width - borderWidth, 0, borderWidth, view.Frame.Size.Height));
            }

            return(view);
        }
 /// <summary>
 /// Adds borders (as UIViews) to a view.
 /// </summary>
 /// <param name="view">The view to add the borders to.</param>
 /// <param name="edges">The edges to add borders to.</param>
 /// <param name="borderColor">The color of the borders.</param>
 /// <param name="thickness">The thickness of the borders.</param>
 public static void AddBordersToView(this UIView view, UIRectEdge edges, UIColor borderColor, float thickness = 1)
 {
     if (edges.HasFlag(UIRectEdge.Top) || edges.HasFlag(UIRectEdge.All))
     {
         var top = GetBorderView(borderColor);
         view.Add(top);
         view.AddConstraints(new[] {
             NSLayoutConstraint.Create(top, NSLayoutAttribute.Top, NSLayoutRelation.Equal, view, NSLayoutAttribute.Top, 1, -thickness),
             NSLayoutConstraint.Create(top, NSLayoutAttribute.Left, NSLayoutRelation.Equal, view, NSLayoutAttribute.Left, 1, 0),
             NSLayoutConstraint.Create(top, NSLayoutAttribute.Right, NSLayoutRelation.Equal, view, NSLayoutAttribute.Right, 1, 0),
             NSLayoutConstraint.Create(top, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, thickness)
         });
     }
     if (edges.HasFlag(UIRectEdge.Right) || edges.HasFlag(UIRectEdge.All))
     {
         var right = GetBorderView(borderColor);
         view.Add(right);
         view.AddConstraints(new[] {
             NSLayoutConstraint.Create(right, NSLayoutAttribute.Top, NSLayoutRelation.Equal, view, NSLayoutAttribute.Top, 1, 0),
             NSLayoutConstraint.Create(right, NSLayoutAttribute.Bottom, NSLayoutRelation.Equal, view, NSLayoutAttribute.Bottom, 1, 0),
             NSLayoutConstraint.Create(right, NSLayoutAttribute.Right, NSLayoutRelation.Equal, view, NSLayoutAttribute.Right, 1, thickness),
             NSLayoutConstraint.Create(right, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, thickness)
         });
     }
     if (edges.HasFlag(UIRectEdge.Bottom) || edges.HasFlag(UIRectEdge.All))
     {
         var bottom = GetBorderView(borderColor);
         view.Add(bottom);
         view.AddConstraints(new[] {
             NSLayoutConstraint.Create(bottom, NSLayoutAttribute.Bottom, NSLayoutRelation.Equal, view, NSLayoutAttribute.Bottom, 1, thickness),
             NSLayoutConstraint.Create(bottom, NSLayoutAttribute.Left, NSLayoutRelation.Equal, view, NSLayoutAttribute.Left, 1, 0),
             NSLayoutConstraint.Create(bottom, NSLayoutAttribute.Right, NSLayoutRelation.Equal, view, NSLayoutAttribute.Right, 1, 0),
             NSLayoutConstraint.Create(bottom, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, thickness)
         });
     }
     if (edges.HasFlag(UIRectEdge.Left) || edges.HasFlag(UIRectEdge.All))
     {
         var left = GetBorderView(borderColor);
         view.Add(left);
         view.AddConstraints(new[] {
             NSLayoutConstraint.Create(left, NSLayoutAttribute.Top, NSLayoutRelation.Equal, view, NSLayoutAttribute.Top, 1, 0),
             NSLayoutConstraint.Create(left, NSLayoutAttribute.Bottom, NSLayoutRelation.Equal, view, NSLayoutAttribute.Bottom, 1, 0),
             NSLayoutConstraint.Create(left, NSLayoutAttribute.Left, NSLayoutRelation.Equal, view, NSLayoutAttribute.Left, 1, -thickness),
             NSLayoutConstraint.Create(left, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, thickness)
         });
     }
 }