【问题标题】:xamarin Ios add UIView to ContainerViewxamarin Ios 将 UIView 添加到 ContainerView
【发布时间】:2018-03-25 17:36:27
【问题描述】:
我需要帮助对齐 ContainerView 中的子视图。我尝试添加约束,但它搞砸了一切,所以我尝试了 FluentLayout (https://github.com/FluentLayout/Cirrious.FluentLayout)
我的代码如下所示:
public override void ViewDidLoad()
{
SFCalendar calendar = new SFCalendar();
containerView.AddSubview(calendar);
containerView.AtBottomOf(this.View);
containerView.AtTopOf(this.View);
containerView.WithSameWidth(this.View);
calendar.AtBottomOf(containerView);
calendar.AtTopOf(containerView);
calendar.WithSameWidth(containerView);
}
但最后我的日历被切断了一点,我在这里做错了什么?
【问题讨论】:
标签:
ios
xamarin
constraints
syncfusion
sfcalendar
【解决方案1】:
在使用自动布局之前,您应该禁用 TranslatesAutoresizingMaskIntoConstraints。所以将这两个控件的属性设置为 False 会很麻烦,而且你应该更正你的用法:
containerView.TranslatesAutoresizingMaskIntoConstraints = false;
SFCalendar calendar = new SFCalendar();
containerView.AddSubview(calendar);
calendar.TranslatesAutoresizingMaskIntoConstraints = false;
View.AddConstraints(containerView.AtBottomOf(this.View),
containerView.AtTopOf(this.View),
containerView.WithSameWidth(this.View));
containerView.AddConstraints(calendar.AtBottomOf(containerView),
calendar.AtTopOf(containerView),
calendar.WithSameWidth(containerView));
但我建议您使用本机约束来执行此操作,而且您似乎想让这个containerView 全屏显示。添加它的前导、尾随、顶部、底部会更好:
SFCalendar calendar = new SFCalendar();
containerView.AddSubview(calendar);
containerView.TranslatesAutoresizingMaskIntoConstraints = false;
containerView.LeadingAnchor.ConstraintEqualTo(View.LeadingAnchor).Active = true;
containerView.TopAnchor.ConstraintEqualTo(TopLayoutGuide.GetBottomAnchor()).Active = true;
containerView.TrailingAnchor.ConstraintEqualTo(View.TrailingAnchor).Active = true;
containerView.BottomAnchor.ConstraintEqualTo(BottomLayoutGuide.GetTopAnchor()).Active = true;
calendar.TranslatesAutoresizingMaskIntoConstraints = false;
calendar.LeadingAnchor.ConstraintEqualTo(containerView.LeadingAnchor).Active = true;
calendar.TopAnchor.ConstraintEqualTo(containerView.TopAnchor).Active = true;
calendar.TrailingAnchor.ConstraintEqualTo(containerView.TrailingAnchor).Active = true;
calendar.BottomAnchor.ConstraintEqualTo(containerView.BottomAnchor).Active = true;
【解决方案2】:
我们使用NSLayoutConstraint 创建了一个示例。在此您可以更改布局大小,但我们无法访问其中的fluentlayout。请从以下link中找到样本