static void InstallEqual(NSLayoutAttribute attribute, UIView first, UIView second) { UIView commonAncestor = AssertCommonAncestor (first, second); var c = CreateEqual (attribute, first, second); commonAncestor.AddConstraint (c); }
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, 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; }
static Tuple <UIView, NSLayoutAttribute, float, float> GetRight(Expression expr) { var r = expr; UIView view = null; NSLayoutAttribute attr = NSLayoutAttribute.NoAttribute; var mul = 1.0f; var add = 0.0f; var pos = true; if (r.NodeType == ExpressionType.Add || r.NodeType == ExpressionType.Subtract) { var rb = (BinaryExpression)r; if (IsConstant(rb.Left)) { add = ConstantValue(rb.Left); if (r.NodeType == ExpressionType.Subtract) { pos = false; } r = rb.Right; } else if (IsConstant(rb.Right)) { add = ConstantValue(rb.Right); if (r.NodeType == ExpressionType.Subtract) { add = -add; } r = rb.Left; } else { throw new NotSupportedException("Addition only supports constants: " + rb.Right.NodeType); } } if (r.NodeType == ExpressionType.Multiply) { var rb = (BinaryExpression)r; if (IsConstant(rb.Left)) { mul = ConstantValue(rb.Left); r = rb.Right; } else if (IsConstant(rb.Right)) { mul = ConstantValue(rb.Right); r = rb.Left; } else { throw new NotSupportedException("Multiplication only supports constants."); } } if (IsConstant(r)) { add = Convert.ToSingle(Eval(r)); } else if (r.NodeType == ExpressionType.MemberAccess || r.NodeType == ExpressionType.Call) { var t = GetViewAndAttribute(r); view = t.Item1; attr = t.Item2; } else { throw new NotSupportedException("Unsupported layout expression node type " + r.NodeType); } if (!pos) { mul = -mul; } return(Tuple.Create(view, attr, mul, add)); }
static NSLayoutConstraint SetLE(NSLayoutAttribute attribute, UIView view, nfloat value) { return(NSLayoutConstraint.Create(view, attribute, NSLayoutRelation.LessThanOrEqual, null, NSLayoutAttribute.NoAttribute, 0, value)); }
static NSLayoutConstraint Set(NSLayoutAttribute attribute, UIView first, UIView second, float constant) { return(NSLayoutConstraint.Create(first, attribute, NSLayoutRelation.Equal, second, attribute, 1, constant)); }
public UIViewAndLayoutAttribute(UIView view, NSLayoutAttribute attribute) { Attribute = attribute; View = view; }
void addEdgeConstraint(NSLayoutAttribute edge, NSView parentView, NSView subView) { var constraint = NSLayoutConstraint.Create(subView, edge, NSLayoutRelation.Equal, parentView, edge, 1, 0); parentView.AddConstraint(constraint); }
public static NSLayoutConstraint Create (NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation) { return NSLayoutConstraint.Create (view1, attribute1, relation, null, NSLayoutAttribute.NoAttribute, 1.0f, 0f); }
static NSLayoutConstraint CreateEqual(NSLayoutAttribute attribute, UIView refView, UIView view, float constant = 0) { return NSLayoutConstraint.Create (view, attribute, NSLayoutRelation.Equal, refView, attribute, 1, constant); }
static NSLayoutConstraint SetLE(NSLayoutAttribute attribute, UIView view, nfloat value) { return NSLayoutConstraint.Create (view, attribute, NSLayoutRelation.LessThanOrEqual, null, NSLayoutAttribute.NoAttribute, 0, value); }
private static void ClearConstraint(UIView view, NSLayoutAttribute attribute) { NSLayoutConstraint constraint = GetConstraint(view, view.Superview, attribute); constraint?.Clear(false); }
private static void DetermineConstraintInformationFromExpression( Expression expression, out MethodCallExpression methodCallExpression, out UIView view, out NSLayoutAttribute layoutAttribute, bool throwOnError = true) { methodCallExpression = FindExpressionOfType <MethodCallExpression>(expression); if (methodCallExpression == null) { if (throwOnError) { throw new NotSupportedException("Constraint expression must be a method call."); } else { view = null; layoutAttribute = default(NSLayoutAttribute); return; } } layoutAttribute = NSLayoutAttribute.NoAttribute; switch (methodCallExpression.Method.Name) { case nameof(LayoutExtensions.Width): layoutAttribute = NSLayoutAttribute.Width; break; case nameof(LayoutExtensions.Height): layoutAttribute = NSLayoutAttribute.Height; break; case nameof(LayoutExtensions.Left): case nameof(LayoutExtensions.X): layoutAttribute = NSLayoutAttribute.Left; break; case nameof(LayoutExtensions.Top): case nameof(LayoutExtensions.Y): layoutAttribute = NSLayoutAttribute.Top; break; case nameof(LayoutExtensions.Right): layoutAttribute = NSLayoutAttribute.Right; break; case nameof(LayoutExtensions.Bottom): layoutAttribute = NSLayoutAttribute.Bottom; break; case nameof(LayoutExtensions.CenterX): layoutAttribute = NSLayoutAttribute.CenterX; break; case nameof(LayoutExtensions.CenterY): layoutAttribute = NSLayoutAttribute.CenterY; break; case nameof(LayoutExtensions.Baseline): layoutAttribute = NSLayoutAttribute.Baseline; break; case nameof(LayoutExtensions.Leading): layoutAttribute = NSLayoutAttribute.Leading; break; case nameof(LayoutExtensions.Trailing): layoutAttribute = NSLayoutAttribute.Trailing; break; default: if (throwOnError) { throw new NotSupportedException("Method call '" + methodCallExpression.Method.Name + "' is not recognized as a valid constraint."); } break; } if (methodCallExpression.Arguments.Count != 1) { if (throwOnError) { throw new NotSupportedException("Method call '" + methodCallExpression.Method.Name + "' has " + methodCallExpression.Arguments.Count + " arguments, where only 1 is allowed."); } else { view = null; return; } } var viewExpression = methodCallExpression.Arguments.FirstOrDefault() as MemberExpression; if (viewExpression == null) { if (throwOnError) { throw new NotSupportedException("The argument to method call '" + methodCallExpression.Method.Name + "' must be a member expression that resolves to the view being constrained."); } else { view = null; return; } } view = Evaluate <UIView>(viewExpression); if (view == null) { if (throwOnError) { throw new NotSupportedException("The argument to method call '" + methodCallExpression.Method.Name + "' resolved to null, so the view to be constrained could not be determined."); } else { view = null; return; } } }
private static NSString GetDeactivatedConstraintKey(NSLayoutAttribute attribute) { return(attribute == NSLayoutAttribute.Right ? DeactivatedConstraintRight : DeactivatedConstraintBottom); }
private static NSLayoutConstraint GetConstraint(UIView view, UIView constraintView, NSLayoutAttribute attribute) { return(constraintView.Constraints.FirstOrDefault( constraint => constraint.FirstItem.Equals(view) && constraint.FirstAttribute == attribute)); }
NSLayoutConstraint SetConstant(UIView view, NSLayoutAttribute attr, nfloat value) { var c = NSLayoutConstraint.Create (view, attr, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0, value); view.AddConstraint (c); return c; }
public static UIViewAndLayoutAttribute WithLayoutAttribute(this UIView view, NSLayoutAttribute attribute) { return(new UIViewAndLayoutAttribute(view, attribute)); }
static NSLayoutConstraint Set(NSLayoutAttribute attribute, UIView first, UIView second, float constant) { return NSLayoutConstraint.Create (first, attribute, NSLayoutRelation.Equal, second, attribute, 1, constant); }
public Dimension(Context context, UIView view, NSLayoutAttribute attribute) { View = view; Context = context; Attribute = attribute; }
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, nfloat multiplier, nfloat constant) { return(NSLayoutConstraint.Create(view1, attribute1, relation, null, NSLayoutAttribute.NoAttribute, 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); }
public static NSLayoutConstraint Create(NSObject view1, NSLayoutAttribute attribute1, NSLayoutRelation relation) { return(NSLayoutConstraint.Create(view1, attribute1, relation, null, NSLayoutAttribute.NoAttribute, 1.0f, 0f)); }
static NSLayoutConstraint CreateEqual(NSLayoutAttribute attribute, UIView first, UIView second) { return NSLayoutConstraint.Create (first, attribute, NSLayoutRelation.Equal, second, attribute, 1, 0); }
// 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 UIViewAndLayoutAttribute WithLayoutAttribute(this UIView view, NSLayoutAttribute attribute) { return new UIViewAndLayoutAttribute(view, attribute); }
internal Edge(Context context, UIView view, NSLayoutAttribute attribute) { View = view; Context = context; Attribute = attribute; }
private FluentLayout SetSecondItem(NSObject view2, NSLayoutAttribute attribute2) { ThrowIfSecondItemAlreadySet(); SecondAttribute = attribute2; SecondItem = view2; return this; }
public static UIViewAndLayoutAttribute WithLayoutAttribute(this UIView view, NSLayoutAttribute attribute) => new UIViewAndLayoutAttribute(view, attribute);
public static UIView WithConstraint(this UIView constrainedView, UIView view, NSLayoutAttribute attribute, NSLayoutRelation relation, nfloat multiplier, nfloat constant, [CallerMemberName] string identifier = "", float?priority = null) { if (view != null && view != constrainedView) { view.TranslatesAutoresizingMaskIntoConstraints = false; } var constraint = NSLayoutConstraint.Create(view, attribute, relation, multiplier, constant); if (!string.IsNullOrEmpty(identifier)) { constraint.SetIdentifier(identifier); } if (priority.HasValue) { constraint.Priority = priority.Value; } constrainedView.AddConstraint(constraint); return(constrainedView); }
static NSLayoutConstraint CreateEqual(NSLayoutAttribute attribute, UIView refView, UIView view, float constant = 0) { return(NSLayoutConstraint.Create(view, attribute, NSLayoutRelation.Equal, refView, attribute, 1, constant)); }