Xamarin iOS 故事板,子视图半宽然后是父视图。看法
Xamarin iOS Storyboard, child view half width then parent. view
我是 iOS UI 开发的新手。我陷入了以下问题。
我正在尝试将父视图宽度的一半分配给 2 个子视图。 (见图)。我不能将乘数设置为小于零。红色和绿色子视图的宽度应相等,宽度应为父视图的一半。
我正在使用 visual studio 进行开发。
您应该能够将乘数设置为 1:2
,因为它适用于比率。
我觉得这是 Visual Studio 中 iOS 设计器的一个错误,因为乘数是一个浮点数。来自文档 here:
Multiplier: The value of attribute 2 is multiplied by this floating point number. In this case, the multiplier is 1.0.
在 Xamarin Studio 中,iOS Designer a ratio is accepted, Also 1/2
0.5
:
在Xcode中:
它甚至被添加到 xib/storyboard 的源代码中,如下所示:
<constraint id="9" firstItem="3" firstAttribute="width" secondItem="8bC-Xf-vdC" secondAttribute="width" multiplier="1:2"/>
因此,您可以编辑 .xib 或 .storyboard 文件,但这并不理想。
您可以设置乘数的替代方法:
红景
LeadingSpace 到 superview.leadingspace
TrailingSpace 到 superview.CenterX
绿景
LeadingSpace 到 superview.CenterX
TrailingSpace 到 superview.trailingspace
这与将宽度设置为父视图宽度大小的一半相同。
TBH Visual studio 和 Xamarin studio 的 iOS 设计器在添加复杂约束方面与 Xcode 相比不是很好(这并不复杂,但仍然失败)。如果可以的话,我建议尝试在 Xcode 中对其进行编辑。
更新
如果您想以编程方式添加它们,请在 ViewDidLoad
中添加:
public override void ViewDidLoad()
{
base.ViewDidLoad();
greenView.TranslatesAutoresizingMaskIntoConstraints = false;
redView.TranslatesAutoresizingMaskIntoConstraints = false;
View.AddConstraints(new NSLayoutConstraint[]{
NSLayoutConstraint.Create(redView, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, View, NSLayoutAttribute.Leading, 1, 0),
NSLayoutConstraint.Create(redView, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterX, 1, 0),
NSLayoutConstraint.Create(redView, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterX, 1, 0),
NSLayoutConstraint.Create(greenView, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterX, 1, 0),
NSLayoutConstraint.Create(greenView, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, View, NSLayoutAttribute.Trailing, 1, 0),
NSLayoutConstraint.Create(greenView, NSLayoutAttribute.Top, NSLayoutRelation.Equal, redView, NSLayoutAttribute.Top, 1, 0),
});
}
它会生成这样的视图:
我是 iOS UI 开发的新手。我陷入了以下问题。
我正在尝试将父视图宽度的一半分配给 2 个子视图。 (见图)。我不能将乘数设置为小于零。红色和绿色子视图的宽度应相等,宽度应为父视图的一半。
我正在使用 visual studio 进行开发。
您应该能够将乘数设置为 1:2
,因为它适用于比率。
我觉得这是 Visual Studio 中 iOS 设计器的一个错误,因为乘数是一个浮点数。来自文档 here:
Multiplier: The value of attribute 2 is multiplied by this floating point number. In this case, the multiplier is 1.0.
在 Xamarin Studio 中,iOS Designer a ratio is accepted, Also 1/2
0.5
:
在Xcode中:
它甚至被添加到 xib/storyboard 的源代码中,如下所示:
<constraint id="9" firstItem="3" firstAttribute="width" secondItem="8bC-Xf-vdC" secondAttribute="width" multiplier="1:2"/>
因此,您可以编辑 .xib 或 .storyboard 文件,但这并不理想。
您可以设置乘数的替代方法:
红景
LeadingSpace 到 superview.leadingspace
TrailingSpace 到 superview.CenterX
绿景
LeadingSpace 到 superview.CenterX
TrailingSpace 到 superview.trailingspace
这与将宽度设置为父视图宽度大小的一半相同。
TBH Visual studio 和 Xamarin studio 的 iOS 设计器在添加复杂约束方面与 Xcode 相比不是很好(这并不复杂,但仍然失败)。如果可以的话,我建议尝试在 Xcode 中对其进行编辑。
更新
如果您想以编程方式添加它们,请在 ViewDidLoad
中添加:
public override void ViewDidLoad()
{
base.ViewDidLoad();
greenView.TranslatesAutoresizingMaskIntoConstraints = false;
redView.TranslatesAutoresizingMaskIntoConstraints = false;
View.AddConstraints(new NSLayoutConstraint[]{
NSLayoutConstraint.Create(redView, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, View, NSLayoutAttribute.Leading, 1, 0),
NSLayoutConstraint.Create(redView, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterX, 1, 0),
NSLayoutConstraint.Create(redView, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterX, 1, 0),
NSLayoutConstraint.Create(greenView, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterX, 1, 0),
NSLayoutConstraint.Create(greenView, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, View, NSLayoutAttribute.Trailing, 1, 0),
NSLayoutConstraint.Create(greenView, NSLayoutAttribute.Top, NSLayoutRelation.Equal, redView, NSLayoutAttribute.Top, 1, 0),
});
}
它会生成这样的视图: