如何使用编程约束对齐控件

时间:2016-10-04 13:27:06

标签: ios xamarin.ios nslayoutconstraint

我想要完成的内容在故事板中相当简单,但我无法通过代码完成工作 - 这对我的特定问题是必要的。

我的代码:

import Data.Random.Source.MWC

sample :: [Bool]
sample = runST $ do
  g <- create
  stTrav (\i -> runRVar ranfu g)

我想做的事情:

最后,我想将自己置于故事板中类似于Top + Bottom Layout指南的位置 - 代码并未反映出这一点。我用过.Top(/ Bottom)LayoutGuide,它基本上产生了同样的错误。

为什么我要这样做?

我的布局需要适应方向变化 - 限制似乎是去那里的方式。使用布局指南似乎也在某种程度上在故事板中工作 - 所以它在代码中也必须可行吗?此外,导航+标签栏也与滚动条重叠。

我收到此错误消息:

(这可能会帮助那些因为类似问题而从谷歌来这里的人)

        scrollView.TopAnchor.ConstraintEqualTo(this.View.TopAnchor, 50).Active = true;
        scrollView.BottomAnchor.ConstraintEqualTo(this.View.BottomAnchor, 50).Active = true;
        scrollView.LeftAnchor.ConstraintEqualTo(this.View.LeftAnchor, 50).Active = true;
        scrollView.RightAnchor.ConstraintEqualTo(this.View.RightAnchor, 50).Active = true;
        scrollView.BackgroundColor = UIColor.Black;

        View.AddSubview(scrollView);

如果有人能够把我推向正确的方向,我会非常感激。我似乎无法找到传递给约束的正确锚点。

1 个答案:

答案 0 :(得分:1)

您必须先添加子视图。然后你可以添加约束。将translatesAutoresizingMaskIntoConstraints设置为false也是必要的。

scrollView.translatesAutoresizingMaskIntoConstraints = false;
View.AddSubview(scrollView);
scrollView.TopAnchor.ConstraintEqualTo(this.View.TopAnchor, 50).Active = true;     
scrollView.BottomAnchor.ConstraintEqualTo(this.View.BottomAnchor, 50).Active = true; 
scrollView.LeftAnchor.ConstraintEqualTo(this.View.LeftAnchor, 50).Active = true; 
scrollView.RightAnchor.ConstraintEqualTo(this.View.RightAnchor, 50).Active = true;