Autolayout - 锚定到右下角

时间:2014-03-06 17:24:05

标签: ios objective-c xcode autolayout

我正在开发一款针对iOS6 / 7的应用,我已经失去了两个小时盯着故事板,试图理解为什么自动布局不能做我想做的事。

基本上,我有一个包含滚动视图的场景,在其中,我希望在右下角有一个UIIMage。因此,我为图像设置了四个约束:

  • 宽度等于
  • 高度等于
  • 底层空间到superview和
  • 追踪空间到superview

XCode没有抱怨定位,所以我自信地运行我的应用程序,却发现它没有以任何方向显示。它无处可寻!

我知道要找到autolayout如何实现约束并发挥其魔力,我必须检查view.bounds rect。我检查了viewDidAppear事件,发现它的值尽可能符合预期:

图片位置为:0.000000,0.000000 106.000000x103.000000

框架当然是故事板中的实际位置,我猜是可以预期的。

这是我的故事板的屏幕截图: Twilight zone or plain dizzy developer error?

有什么想法吗?

更新 更多信息: 如果我删除所有约束并运行应用程序,图像视图将以纵向显示在我视图的右下角,但是在旋转时,如预期的那样,它不会显示。

更新2: 这一切都应该落在可怕的UIScrollView和AutoLayout线程中。最后我恢复使用UIView,其中包含UIScrollView,其中包含我想要滚动的所有内容(因此在横向模式下键盘不会隐藏任何文本字段)。我希望锚定在底部的图像留在容器UIView中,它都按预期工作。

1 个答案:

答案 0 :(得分:0)

如果你想锚定到右下角,Programmatic autoresizingMask对我来说更加一致。

它与IB略有相反,所以如果你想要在右下方锚定,你希望左边距灵活且上边距灵活

yourView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;

这意味着底部边距,右边距,高度和宽度都将保持不变,使其保持在视图的右下角。