我如何水平对齐三个元素[A B C]并使其一个又一个受约束?
public static void AddConstraintsElements(UIView View, UIView element, UIView element2, UIView element3)
{
NSLayoutConstraint.ActivateConstraints(new[] {
element.TopAnchor.ConstraintGreaterThanOrEqualTo(View.TopAnchor, constant: 20),
element.LeadingAnchor.ConstraintGreaterThanOrEqualTo(View.LeadingAnchor, constant: 100),
element.WidthAnchor.ConstraintGreaterThanOrEqualTo(View.WidthAnchor, 1),
element.HeightAnchor.ConstraintGreaterThanOrEqualTo(View.HeightAnchor, 1),
element2.BottomAnchor.ConstraintGreaterThanOrEqualTo(View.TopAnchor, constant: 20),
element2.TrailingAnchor.ConstraintGreaterThanOrEqualTo(View.LeadingAnchor, constant: 120),
element2.WidthAnchor.ConstraintGreaterThanOrEqualTo( 1),
element2.HeightAnchor.ConstraintGreaterThanOrEqualTo( 1),
element3.BottomAnchor.ConstraintGreaterThanOrEqualTo(View.TopAnchor, constant: 20),
element3.TrailingAnchor.ConstraintGreaterThanOrEqualTo(View.LeadingAnchor, constant: 120),
element3.WidthAnchor.ConstraintGreaterThanOrEqualTo( 1),
element3.HeightAnchor.ConstraintGreaterThanOrEqualTo( 1)
});
}
其他具有第一和第二要素的情况,请删除第三要素 :
我尝试了,但是没用
element1.WidthAnchor.ConstraintEqualTo(25).Active = true;
element1.HeightAnchor.ConstraintEqualTo(element1.WidthAnchor).Active = true;
element2.WidthAnchor.ConstraintEqualTo(30).Active = true;
element2.HeightAnchor.ConstraintEqualTo(30).Active = true;
element1.TrailingAnchor.ConstraintEqualTo(element2.LeadingAnchor).Active = true;
element1.TopAnchor.ConstraintEqualTo(View.TopAnchor, 15).Active = true;
element2.TopAnchor.ConstraintEqualTo(View.TopAnchor, 15).Active = true;
element1.LeftAnchor.ConstraintEqualTo( View.CenterXAnchor).Active = true;
element2.RightAnchor.ConstraintEqualTo(View.RightAnchor).Active = true;
答案 0 :(得分:2)
假设您想将它们对齐:
+-----------------------------------------------+
| ^ |
| 120 |
| v |
| +---------++---------++---------+ |
| | || || | |
| | A || B || C | |
| | || || | |
| +---------++---------++---------+ |
| |
| |
| |
项目居中放置,从顶部开始指向120个点,并且它们的宽度和高度固定。您可以执行以下操作:
// set widths and heights
a.WidthAnchor.ConstraintEqualTo(25).Active = true;
a.HeightAnchor.ConstraintEqualTo(a.WidthAnchor).Active = true;
b.WidthAnchor.ConstraintEqualTo(25).Active = true;
b.HeightAnchor.ConstraintEqualTo(b.WidthAnchor).Active = true;
c.WidthAnchor.ConstraintEqualTo(25).Active = true;
c.HeightAnchor.ConstraintEqualTo(c.WidthAnchor).Active = true;
// align B view as the middle view
b.CenterXAnchor.ConstraintEqualTo(View.CenterXAnchor).Active = true;
// align A to left of B
a.TrailingAnchor.ConstraintEqualTo(b.LeadingAnchor).Active = true;
// align C to right of B
c.LeadingAnchor.ConstraintEqualTo(b.TrailingAnchor).Active = true;
// align A, B and C, 120 points from the top
a.TopAnchor.ConstraintEqualTo(View.TopAnchor, 120).Active = true;
b.TopAnchor.ConstraintEqualTo(View.TopAnchor, 120).Active = true;
c.TopAnchor.ConstraintEqualTo(View.TopAnchor, 120).Active = true;
答案 1 :(得分:1)
我将居中对齐B,然后将宽度设置为首选高度,然后将A和C匹配到B的宽度,高度和垂直方向,并将A和C相对于B的水平方向匹配为首选。
所以
B->宽度,高度,垂直,水平
A->将宽度与B匹配,将高度与B匹配,将垂直与B匹配,参照B的位置(例如-15或类似位置)设置“水平”
C->将宽度与B匹配,将高度与B匹配,将垂直与B匹配,参照B的位置(例如+15或类似值)设置“水平”