代码之家  ›  专栏  ›  技术社区  ›  BR75

xamarin Ios将UIView添加到ContainerView

  •  1
  • BR75  · 技术社区  · 8 年前

    我需要帮助在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);
            }
    

    但最后我的日历被剪掉了一点,我做错了什么?

    enter image description here enter image description here

    2 回复  |  直到 8 年前
        1
  •  1
  •   Ax1le    8 年前

    在使用自动布局之前,应禁用 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
  •  1
  •   Ishank    8 年前

    我们使用创建了一个示例 NSLayoutConstraint 。在这里,您可以更改布局大小,但我们无法访问 fluentlayout 在这方面。请从以下内容中查找样本 link