【问题标题】:Create stretch header using autolayout via storyboard通过情节提要使用自动布局创建拉伸标题
【发布时间】:2016-10-26 03:37:51
【问题描述】:

问题

您好,我遇到了以下问题。我正在通过情节提要创建标题由三个块组成。我试图让它伸展以适应所有使用自动布局的设备。 我有三张图片:

  • 左角图像(具有圆形左边框)
  • 中心图像(只是一条线)
  • 右角图像(有圆形右边框)

图片右角示例:

我希望这三幅图像在中心的一条线上。 结果应如下所示:

第一个解决方案

我创建了以下约束: 对于左块:

  • 宽度 = 152
  • 高度 = 50
  • 引导到superview
  • 顶部到超级视图

左图限制:

对于中间块:

  • 高度 = 50
  • 拖到左侧图像 = 0
  • 向右图像 = 0
  • 顶部到超级视图

中间图像约束:

对于正确的图像:

  • 宽度 = 152
  • 高度 = 50
  • 跟踪到superview
  • 顶部到超级视图

正确的图片限制:

当我在模拟器上运行我的应用程序时,一切正常,我在所有设备上都看到了良好的结果,但如果我使用这个约束,我会在故事板和控制台中收到很多警告:Unable to simultaneously satisfy constraints.

实际上控制台中会因此出现警告

  • 左图尾随等于 0
  • 右图前导等于 0

第二种解决方案

我还尝试对中间图像进行以下约束:

  • 删除左图的尾随约束
  • 为父视图添加与右图宽度相等的前导约束

但这个解决方案会产生更多警告

问题

是否有解决方案如何通过情节提要创建这样的标题,而不是将宽度设为常数并针对每个屏幕宽度进行更新?

【问题讨论】:

  • 你是否混淆了中间图像的尾随和前导约束?
  • @Code 你所说的混合约束是什么意思?
  • 我认为它应该是向左和向右。
  • @Code no,如果前导在左边,那么中间的图片会从左边开始,中间图片的结尾会和右边的图片在同一个地方跨度>
  • 我的意思是中间的前导 = 左边的尾随等。你能发布你的约束图像吗?

标签: ios objective-c swift autolayout uistoryboard


【解决方案1】:

所以你需要你写的所有约束,但你还需要添加约束,说明所有这三个图像具有相同的宽度。 例如告诉第一个与第二个相同,第二个与第三个相同。而且您还需要删除宽度限制。

此类错误的原因是您设置了两个项目宽度 = 152*2 = 304。如果此值大于屏幕宽度,则会出现警告。

【讨论】:

  • 但所有三个图像的宽度不应相同。中间图像将始终具有单独的宽度。我遇到的主要问题正是中间图像应该具有拉伸和改变宽度的能力。我有警告是因为Trailing to left image equal to 0Leading to right image equal to 0。如果我删除其中一个警告就会消失。
  • 模拟器iphone 5和iphone 6
  • 我只能假设一件事如何解决它。 1)左图-宽度,高度,通向superview,顶部到superview 2)右图-宽度,高度,traling到superview,顶部到superview 3)中间图像-中心水平,顶部,高度,与superview成比例的宽度。比所有三个视图都不会连接。仍然不是很好的解决方案。为什么需要宽度等于 152?
  • 比例宽度是什么意思?怎么做?您的意思是通过代码进行更改吗?大约 152。我首先想到的是,如果我让左右图像拉伸,那么圆角将被像素化,并且边框半径将不平滑。其次不要使用 think that there is a possible situation when 3*width != width of screen (可能有 1pt 的差异,但可能很明显)
  • 要使宽度成比例,您需要更改约束乘数。它可以在生成器中完成。并且要留下相同的圆角,您可以使用其他图像渲染模式(我的意思是您的图像视图的大小可以不是图像分辨率,但其他渲染模式只会在需要的一侧切割图像)。这将给我们,角落将具有相同的角落半径,只是图像的末端(这只是一条线)将被切割。
【解决方案2】:

中间的约束是错误的。它们应该是:

  • middle.leading = left.trailing
  • middle.trailing = right.leading

【讨论】:

  • 现在就是这样,除了会产生很多警告之外,它完美地工作。
  • @Danny 现在是怎么做的?但你的形象却不然。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 2018-05-24
相关资源
最近更新 更多