iOS:当其中一些可能改变大小时,如何通过IB正确调整UI元素的位置?

Posted

技术标签:

【中文标题】iOS:当其中一些可能改变大小时,如何通过IB正确调整UI元素的位置?【英文标题】:iOS: how to adjust positions of UI elements one by one properly by IB when some of them may change size? 【发布时间】:2012-04-11 13:48:43 【问题描述】:

例如,在一个 UIView 上,从左到右有三个按钮:,button1,button2,button3。 当按钮1变宽时,比如宽度变成原来宽度的两倍,有没有界面构建器可以让按钮2&3自动向右移动?

抱歉,我没有把我的问题说清楚。

我的意思是这样的大小变化:我按下button1,然后我在我的代码中改变它的框架,而不是由butotn1中的文本变化引起的。我希望 button2&3 自动向右移动,保持按钮 1 和 2 之间间隙的宽度不变。

谢谢大家。

【问题讨论】:

按钮 1 变宽的条件是什么?您是指轮换还是指在设计应用程序时使用 IB,而不是运行它? 您的意思是当您有时更改按钮上的文本时,它们会调整大小以适应文本,这会破坏您的布局?如果是这样,最好使按钮足够宽以容纳尽可能宽的文本。如果它们不能全部适合,请重新考虑按钮上的文本数量。 @MikeZ 抱歉我没有说清楚,现在我更新了我的问题,我的意思是当我运行程序并更改代码中的按钮侧时。 @Dondragmer 不,没那么复杂,我只是在用户按下按钮时在代码中更改按钮大小。 【参考方案1】:

IB 只能用于视图的初始定位。

没错,您还可以定义视图的自动调整大小掩码,仅此而已。

任何额外的布局都应该在代码中完成。

【讨论】:

【参考方案2】:

我可能是错的,但我不知道在 IB 中有什么方法可以做到这一点。不过,它在代码中非常简单,只需将按钮链接到一些 IBOutlets 并检查按钮图像的大小 (myUIImage.size),然后调整按钮的框架(在 viewWillAppear 中进行)。

查看您的编辑 - 如果您正在使用代码调整其大小,请也调整其位置。

【讨论】:

【参考方案3】:

如果您的按钮位于屏幕底部的一行中,请考虑使用UIToolBar。它的UIBarButtonItem 对象会自动调整以适应彼此的width 更改。对于更一般的情况,您需要按照 Franklyn Weber 的回答重新计算位置和大小。

【讨论】:

【参考方案4】:

是的 - 通过使用自动调整大小的蒙版。如果您允许边距灵活(没有红线将框架连接到父视图的框架)并允许灵活的宽度和高度,则按钮将按比例调整大小和移动。

【讨论】:

我需要检查一下 - 总是愿意学习新东西!谢谢。 自动调整掩码大小将使视图响应其父视图中的更改,但不会解决 OP 移动以响应视图层次结构中同一级别的其他视图的问题。 我回答后,OP似乎改变了他们的问题。

以上是关于iOS:当其中一些可能改变大小时,如何通过IB正确调整UI元素的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何用IB改变UIBarButtonItem的宽度

如何正确自动缩放 UIButton 和标题文本?

如何减小ios安装包大小

UIImageView 意外改变大小

在 IB 中,当我调整父视图的大小时,如何让子视图保持与父视图相同的大小?

iOS主要故事板元素未显示