【问题标题】: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中找到样本

      【讨论】:

        猜你喜欢
        • 2012-03-05
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        • 1970-01-01
        • 1970-01-01
        • 2015-03-12
        相关资源
        最近更新 更多