/// <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) }); } }