首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >灵活的图像视图

灵活的图像视图
EN

Stack Overflow用户
提问于 2013-06-26 20:20:43
回答 4查看 258关注 0票数 3

我正在处理一个包含三个UIImageViews的视图。在情节提要中创建视图和子图像视图。这些图像视图的图像是从服务器加载的。当服务器返回所有三个图像的图像时,它应该如下所示:

当第三个imageview没有可用的图像时,布局应该像这样动态变化(图像缩放到imageview等,我知道这一部分):

我已经在使用Interface Builder很长一段时间了,但我不知道如何实现这一点。

有没有人可以帮我解决这个问题,最好在IB中使用自动调整大小?

EN

Stack Overflow用户

发布于 2013-06-26 22:07:45

使用自动布局可以做到这一点,但您仍然需要根据显示的是一个还是两个UIImageViews,通过编程来修改一个约束。

下面是你如何使用自动布局的方法:

创建容器视图

在容器视图的左边缘到左边距处创建约束。将容器视图的右边缘移到右边距。将容器视图的约束height.

  • Delete
  1. height.
  2. Delete
    1. UIView to

创建UIImageViews

  1. 在容器视图中创建三个图像。
  2. 根据需要调整UIImage视图的大小并将其对齐。
  3. 固定第一个图像视图与第二个图像视图之间的水平间距。
  4. 固定第二个图像视图与第三个图像视图之间的水平间距。

<

  1. >H125>将第一个图像视图上的前导空间固定到第一个图像视图上,并将第三个图像视图上的尾随空间与所有三个图像视图对齐,并将宽度与对齐中心x固定第二个图像视图上的约束。
  2. 在第二个图像视图上选择图像视图约束的尾随空间,并将优先级设置为900 (important).

创建神奇的额外约束

  1. 将尾随空格固定到第二个图像视图上的superview。
  2. 选择新约束并将优先级设置为850。
  3. 将约束的常量值设置为0。

容器UIView只是维护包含视图的边距和高度。

第二个图像视图现在应该有两个拖尾约束,它们都显示为虚线。旋转屏幕应该使容器视图伸展以适应,并且三个UIImageViews也伸展以适应。

当前,第二和第三图像视图之间的约束比第二图像视图和容器视图之间的“魔术”约束更高优先级,导致第二图像视图的右边缘与第三图像视图的左边缘间隔开。要调整两个图像的布局,“魔术”约束必须比另一个具有更高的优先级,从而使第二个图像视图的右边缘与superview的右边缘对齐。

只需为“魔术”约束创建一个IBOutlet (在第二个图像视图上的superview的尾随空格),并根据需要提高和降低优先级。

代码语言:javascript
运行
复制
if (imageCount == 2) {
  // Second image view should favor right edge of superview
  self.myConstraint.priority = 950;
} else if (imageCount == 3) {
  // Second image view should favor left edge of third image view
  self.myConstraint.priority = 850;
}

必要时,您可能还希望隐藏第三个图像视图。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17319860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档