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元素的位置?的主要内容,如果未能解决你的问题,请参考以下文章