iOS自动布局问题

3

我刚接触自动布局(auto layout)并遇到了一些问题。看下面这张竖屏的视图:

Portrait View

我希望能够旋转设备并获得如下的横屏视图:

Landscape view

按钮和标签的高度是固定的,所以我希望图片视图和表格视图可以调整大小。但是我无法通过自动布局实现这一点。这是否可行?

我已经能够做类似的事情,但是图片视图的高度是固定的,而我不想要这个。

提前感谢.


在您的描述中,看起来它会调整大小,您的意思是表格的内容视图保持以前的宽度,例如? - Tancrede Chazallet
不,宽度没问题,但是如果不为图像视图指定高度,就会出现各种奇怪的冲突。 - Grant J
UIImageView和UITableView的高度有什么关系? - Arek Holko
你可以为UIImageView的比例设置自动布局关系,这样它就始终保持正方形,如果它是正方形的话。 - Tancrede Chazallet
2个回答

2

您可以使用AutoLayout实现此目的。

UIImage View:

  • 上部间距:Superview = 0
  • 右侧间距:Superview = 0
  • 左侧间距:Superview = 0
  • 下部间距:UIButton = 0
  • 高度大于等于:(某些最小尺寸)

UIButton:

  • 上部间距:ImageView = 0
  • 右侧间距:Superview = 0
  • 左侧间距:Superview = 0
  • 下部间距:UILabel = 0
  • 高度等于:(某个高度)

UILabel:

  • 上部间距:UIButton = 0
  • 右侧间距:Superview = 0
  • 左侧间距:Superview = 0
  • 下部间距:UITableView = 0
  • 高度等于:(某个高度)

UITableView:

  • 上部间距:UILabel = 0
  • 右侧间距:Superview = 0
  • 左侧间距:Superview = 0
  • 下部间距:Superview = 0
  • 高度大于等于:(某些最小尺寸)

自动布局抛出的错误可能非常有帮助,即使它们最初看起来很神秘。在编辑器左侧点击小红色或黄色箭头即可查看这些错误。一旦创建了所有这些约束条件,它们应该全部消失。您可能会发现,先排列顶部和底部元素,然后再连接中间两个元素会更容易。不断调整直到它能正常工作,您就可以在任何方向和任何设备大小上拥有完美的魔力了。 - ryan cumley

1

我认为你不能简单地在IB中完成它。在我看来,你有两个选择:

  1. 使用VLF以编程方式完成所有操作,使用UIViewController的旋转方法添加和删除约束
  2. 在IB中添加所有约束,将纵向约束设置为最高优先级,横向约束设置为最低优先级。在根据方向旋转之前,可以更改优先级,从低到高或相反。

如果将UIImageView和UItableView的高度设置为相同的约束,则可以按照您想要的方式进行操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接