public FluentLayout(UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, float constant = 0f) { View = view; Attribute = attribute; Relation = relation; Multiplier = 1f; Constant = constant; }
public FluentLayout(UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, nfloat constant = default(nfloat)) { View = view; Attribute = attribute; Relation = relation; Multiplier = 1f; Constant = constant; Priority = (float)UILayoutPriority.Required; }
public FluentLayout(UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, nfloat constant = default(nfloat)) { View = view; Attribute = attribute; Relation = relation; Multiplier = 1f; Constant = constant; Priority = (float) UILayoutPriority.Required; }
public FluentLayout(UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, nfloat constant = default(nfloat)) { Constraint = new Lazy <NSLayoutConstraint>(CreateConstraint); View = view; Attribute = attribute; Relation = relation; Constant = constant; Priority = (float)UILayoutPriority.Required; }
public FluentLayout( UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, NSObject secondItem, NSLayoutAttribute secondAttribute) { View = view; Attribute = attribute; Relation = relation; SecondItem = secondItem; SecondAttribute = secondAttribute; Multiplier = 1f; }
public FluentLayout( UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, NSObject secondItem, NSLayoutAttribute secondAttribute) { View = view; Attribute = attribute; Relation = relation; SecondItem = secondItem; SecondAttribute = secondAttribute; Multiplier = 1f; Priority = (float) UILayoutPriority.Required; }
public FluentLayout( UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, NSObject secondItem, NSLayoutAttribute secondAttribute) { Constraint = new Lazy <NSLayoutConstraint>(CreateConstraint); View = view; Attribute = attribute; Relation = relation; SecondItem = secondItem; SecondAttribute = secondAttribute; Priority = (float)UILayoutPriority.Required; }
public FluentLayout( UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, NSObject secondItem, NSLayoutAttribute secondAttribute) { View = view; Attribute = attribute; Relation = relation; SecondItem = secondItem; SecondAttribute = secondAttribute; Multiplier = 1f; Priority = (float)UILayoutPriority.Required; }
public static NSLayoutConstraint [] PinTopRight(NSView view, NSView superView, float padding, NSLayoutRelation relation) { return(new NSLayoutConstraint [] { NSLayoutConstraint.Create(view, NSLayoutAttribute.Right, relation, superView, NSLayoutAttribute.Right, 1.0f, padding), NSLayoutConstraint.Create(view, NSLayoutAttribute.Top, relation, superView, NSLayoutAttribute.Top, 1.0f, padding) }); }
public static NSLayoutConstraint SetCenterYContraintTo(this UIView childView, UIView superView, float margin = 0, NSLayoutRelation relation = NSLayoutRelation.Equal, int priority = 1000) { var constraint = NSLayoutConstraint.Create(superView, NSLayoutAttribute.CenterY, relation, childView, NSLayoutAttribute.CenterY, 1, margin); constraint.Priority = priority; superView.AddConstraint(constraint); return(constraint); }
public LayoutConstraint(LayoutConstraintItem itemA, NSLayoutAttribute attributeA, NSLayoutRelation relation, UIView itemB, NSLayoutAttribute attributeB, nfloat multiplier, nfloat constant) { _value = NSLayoutConstraint.Create(itemA.Value, attributeA, relation, itemB, attributeB, multiplier, constant); }
// This solves the duplicate selector export problem while not breaking the API. public static NSLayoutConstraint Create(NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation, NSObject view2, NSLayoutAttribute attribute2, nfloat multiplier, nfloat constant) { return Create ((INativeObject) view1, attribute1, relation, view2, attribute2, multiplier, constant); }
/// <summary> /// A helper function that create a new constraint, add to given view and return the parent constraint to continue the chain method. /// </summary> private ParentConstraint AddNewConstraintToParent(UIView view, NSLayoutAttribute viewAttribute, NSLayoutRelation relation, UIView target, NSLayoutAttribute targetAttribute, float multiplier, float constant, float priority) { // create a new constraint var constraint = NSLayoutConstraint.Create(view, viewAttribute, relation, target, targetAttribute, multiplier, constant); constraint.Priority = priority; // add the new constraint to parent target.AddConstraint(constraint); // continue the chain return(this); }
public static NSLayoutConstraint PinFirstBaseline(NSView view, NSView superView, float padding, NSLayoutRelation relation) { return(NSLayoutConstraint.Create(view, NSLayoutAttribute.FirstBaseline, relation, superView, NSLayoutAttribute.FirstBaseline, 1.0f, padding)); }
public static NSLayoutConstraint Create(NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation) { return(NSLayoutConstraint.Create(view1, attribute1, relation, null, NSLayoutAttribute.NoAttribute, 1.0f, 0f)); }
public static void SetCenterXContraintTo(this UIView childView, UIView superView, float margin = 0, NSLayoutRelation relation = NSLayoutRelation.Equal) { superView.AddConstraint(NSLayoutConstraint.Create( superView, NSLayoutAttribute.CenterX, relation, childView, NSLayoutAttribute.CenterX, 1, margin)); }
internal LayoutConstraint[] AddConstraint(ICompound from, ICompound to = null, Coefficients[] coefficients = null, NSLayoutRelation relation = default(NSLayoutRelation)) { var results = new List <LayoutConstraint>(); for (var i = 0; i < from.Properties.Length; i++) { var n = coefficients?[i] ?? new Coefficients(); results.Add(AddConstraint(from.Properties[i], to: to?.Properties?[i], coefficients: n, relation: relation)); } return(results.ToArray()); }
internal LayoutConstraint AddConstraint(IProperty from, IProperty to = null, Coefficients coefficients = null, NSLayoutRelation relation = default(NSLayoutRelation)) { if (coefficients == null) { coefficients = new Coefficients(); } from.View.TranslatesAutoresizingMaskIntoConstraints = false; var constraint = NSLayoutConstraint.Create( from.View, from.Attribute, relation, to?.View, to?.Attribute ?? NSLayoutAttribute.NoAttribute, coefficients.Multiplier, coefficients.Constant ); if (to == null) { _constraints.Add(new Constraint(from.View, constraint)); } else { var common = from.View.ClosestCommonAncestor(to.View); if (common != null) { _constraints.Add(new Constraint(common, constraint)); } else { throw new Exception($"No common superview found between ${from.View} and ${to.View}"); } } return(constraint); }
internal LayoutConstraint AddConstraint(IProperty from, LayoutSupport to, Coefficients coefficients = null, NSLayoutRelation relation = default(NSLayoutRelation)) { if (coefficients == null) { coefficients = new Coefficients(); } from.View.TranslatesAutoresizingMaskIntoConstraints = false; var constraint = NSLayoutConstraint.Create( from.View, from.Attribute, relation, to.LayoutGuide, to.Attribute, coefficients.Multiplier, coefficients.Constant ); var view = from.View; while (view?.Superview != null) { view = view.Superview; } _constraints.Add(new Constraint(view, constraint)); return(constraint); }
public NSLayoutConstraint(AnyObject item, NSLayoutAttribute attribute2, NSLayoutRelation relatedBy, [Optional] AnyObject toItem, NSLayoutAttribute attribute, CGFloat multiplier, CGFloat constant) { }
/// <summary> /// Create a new height constraint with given parent view where the contraint should be added. /// Use this only if the view is not under the same parent view. /// </summary> public ParentConstraint HeightToParent(NSLayoutRelation relation, UIView target, NSLayoutAttribute attribute, float multiplier = 1f, float constant = 0f, float priority = Priority.Required) { return(AddNewConstraintToParent(View, NSLayoutAttribute.Height, relation, target, attribute, multiplier, constant, priority)); }
public static NSLayoutConstraint Create(NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation, nfloat multiplier, nfloat constant) { return(NSLayoutConstraint.Create(view1, attribute1, relation, null, NSLayoutAttribute.NoAttribute, multiplier, constant)); }
public static bool GenerateConstraint(this UIView view1, NSLayoutAttribute attribute1, NSLayoutRelation relation, UIView view2, NSLayoutAttribute attribute2, nfloat multiplier, nfloat constant) { NSLayoutConstraint constraint = view1.Constraints.Where(c => c.FirstAttribute == attribute1).FirstOrDefault(); if (constraint != null) { view1.RemoveConstraint(constraint); } constraint = NSLayoutConstraint.Create(view1, attribute1, relation, view2, attribute2, multiplier, constant); constraint.Active = true; view1.AddConstraint(constraint); view1.UpdateConstraints(); return(true); }
public static NSLayoutConstraint PinRight(NSView view, NSView superView, float padding, NSLayoutRelation relation) { return(NSLayoutConstraint.Create(view, NSLayoutAttribute.Right, relation, superView, NSLayoutAttribute.Right, 1.0f, padding)); }
public static NSLayoutConstraint ConstraintTo(this NSView view1, NSView view2, Expression <Func <ConstraintProxy, ConstraintProxy, bool> > expression) { var mainExpression = expression.Body as BinaryExpression; NSLayoutRelation relation = NSLayoutRelation.Equal; switch (mainExpression.NodeType) { case ExpressionType.Equal: relation = NSLayoutRelation.Equal; break; case ExpressionType.LessThanOrEqual: relation = NSLayoutRelation.LessThanOrEqual; break; case ExpressionType.GreaterThanOrEqual: relation = NSLayoutRelation.GreaterThanOrEqual; break; default: throw new ArgumentException("Relation " + mainExpression.NodeType.ToString() + " not valid"); } var propLeft = (NSLayoutAttribute)Enum.Parse(typeof(NSLayoutAttribute), ((MemberExpression)mainExpression.Left).Member.Name); var propRight = propLeft; if (mainExpression.Right.NodeType == ExpressionType.Constant) { var c = Convert.ToSingle(((ConstantExpression)mainExpression.Right).Value); // Console.WriteLine ("NSLayoutConstraint.Create ({0}, NSLayoutAttribute.{1}, NSLayoutRelation.{2}, {3}, NSLayoutAttribute.{4}, {5}f, {6}f),", view1, propLeft, relation, null, propRight, 1, c); return(NSLayoutConstraint.Create(view1, propLeft, relation, null, NSLayoutAttribute.NoAttribute, 1, c)); } else if (mainExpression.Right is MemberExpression) { propRight = (NSLayoutAttribute)Enum.Parse(typeof(NSLayoutAttribute), ((MemberExpression)mainExpression.Right).Member.Name); // Console.WriteLine ("NSLayoutConstraint.Create ({0}, NSLayoutAttribute.{1}, NSLayoutRelation.{2}, {3}, NSLayoutAttribute.{4}, {5}f, {6}f),", view1, propLeft, relation, view2, propRight, 1, 0); return(NSLayoutConstraint.Create(view1, propLeft, relation, view2, propRight, 1, 0)); } var addNode = mainExpression.Right as BinaryExpression; var mulNode = addNode; var constant = 0f; var multiplier = 1f; if (addNode.Left.NodeType == ExpressionType.Constant) { mulNode = addNode.Right as BinaryExpression; constant = Convert.ToSingle(((ConstantExpression)addNode.Left).Value); } else { mulNode = addNode.Left as BinaryExpression; constant = Convert.ToSingle(((ConstantExpression)addNode.Right).Value); } constant *= addNode.NodeType == ExpressionType.Subtract ? -1 : 1; if (mulNode != null) { if (mulNode.Left.NodeType == ExpressionType.Constant) { multiplier = Convert.ToSingle(((ConstantExpression)mulNode.Left).Value); propRight = (NSLayoutAttribute)Enum.Parse(typeof(NSLayoutAttribute), ((MemberExpression)mulNode.Right).Member.Name); } else { multiplier = Convert.ToSingle(((ConstantExpression)mulNode.Right).Value); propRight = (NSLayoutAttribute)Enum.Parse(typeof(NSLayoutAttribute), ((MemberExpression)mulNode.Left).Member.Name); } if (mulNode.NodeType == ExpressionType.Divide) { multiplier = 1.0f / multiplier; } } else { var member = (MemberExpression)(addNode.Right is MemberExpression ? addNode.Right : addNode.Left); propRight = (NSLayoutAttribute)Enum.Parse(typeof(NSLayoutAttribute), member.Member.Name); } // Console.WriteLine ("NSLayoutConstraint.Create ({0}, NSLayoutAttribute.{1}, NSLayoutRelation.{2}, {3}, NSLayoutAttribute.{4}, {5}f, {6}f),", view1, propLeft, relation, view2, propRight, multiplier, constant); return(NSLayoutConstraint.Create(view1, propLeft, relation, view2, propRight, multiplier, constant)); }
public static NSLayoutConstraint [] PinBottomLeft(NSView view, NSView superView, float padding, NSLayoutRelation relation) { return(new NSLayoutConstraint [] { NSLayoutConstraint.Create(view, NSLayoutAttribute.Left, relation, superView, NSLayoutAttribute.Left, 1.0f, padding), NSLayoutConstraint.Create(view, NSLayoutAttribute.Bottom, relation, superView, NSLayoutAttribute.Bottom, 1.0f, padding) }); }
/// <summary> /// Create a new width constraint. /// </summary> public ParentConstraint Width(NSLayoutRelation relation, NSObject target, NSLayoutAttribute attribute, float multiplier = 1f, float constant = 0f, float priority = Priority.Required) { return(AddNewConstraint(View, NSLayoutAttribute.Width, relation, target, attribute, multiplier, constant, priority)); }
public static NSLayoutConstraint Create (NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation, nfloat multiplier, nfloat constant) { return NSLayoutConstraint.Create (view1, attribute1, relation, null, NSLayoutAttribute.NoAttribute, multiplier, constant); }
public static NSLayoutConstraint Create (NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation) { return NSLayoutConstraint.Create (view1, attribute1, relation, null, NSLayoutAttribute.NoAttribute, 1.0f, 0f); }
// This solves the duplicate selector export problem while not breaking the API. public static NSLayoutConstraint Create(NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation, NSObject view2, NSLayoutAttribute attribute2, nfloat multiplier, nfloat constant) { return(Create((INativeObject)view1, attribute1, relation, view2, attribute2, multiplier, constant)); }
public static UIView WithConstraint(this UIView constrainedView, UIView view1, NSLayoutAttribute attribute1, NSLayoutRelation relation, UIView view2, NSLayoutAttribute attribute2, nfloat multiplier, nfloat constant, [CallerMemberName] string identifier = "", float?priority = null) { if (view1 != null && view1 != constrainedView) { view1.TranslatesAutoresizingMaskIntoConstraints = false; } if (view2 != null && view2 != constrainedView) { view2.TranslatesAutoresizingMaskIntoConstraints = false; } var constraint = NSLayoutConstraint.Create(view1, attribute1, relation, view2, attribute2, multiplier, constant); if (!string.IsNullOrEmpty(identifier)) { constraint.SetIdentifier(identifier); } if (priority.HasValue) { constraint.Priority = priority.Value; } constrainedView.AddConstraint(constraint); return(constrainedView); }