我想做的是在Xcode的interface-builder中将组件/视图从一个超级视图拖到另一个视图,而无需重置其框架/位置。
Xcode在执行此操作时的默认行为似乎是在保持其尺寸不变的情况下,使视图在其新的超级视图中垂直和水平移动居中。这非常令人沮丧,因为这意味着需要在新的超级视图中手动重新定位视图。但是在移动它之前,我已经正确放置了它,因此我希望Xcode仅记住其框架的所有属性,而不仅仅是其宽度/高度。这可能吗?
我想做的是在Xcode的interface-builder中将组件/视图从一个超级视图拖到另一个视图,而无需重置其框架/位置。
Xcode在执行此操作时的默认行为似乎是在保持其尺寸不变的情况下,使视图在其新的超级视图中垂直和水平移动居中。这非常令人沮丧,因为这意味着需要在新的超级视图中手动重新定位视图。但是在移动它之前,我已经正确放置了它,因此我希望Xcode仅记住其框架的所有属性,而不仅仅是其宽度/高度。这可能吗?
Answers:
另一个解决方案:
我发现了一些可以帮助你们的东西!
任务是将“子视图”重新分组为“父视图”,以便它们成为父视图的子视图,并像实际操作一样保留显示的物理位置。
首先,调整父视图以实际覆盖子视图的区域。其次,确保所有的孩子都在视图列表中使用它。
现在,用鼠标选择所有子级,然后将它们向上移动一个像素,例如向下移动一个像素(也就是说IB会有一些变化)。释放孩子之后,他们将神奇地成为父母的孩子,并保持自己的位置。
它适用于OSX 10.8.2和Xcode 4.6。
祝好运!
我设法节省了大量时间来重新放置内容,并执行以下操作:
虽然不是很优雅,但无法理解为什么XCode不支持Shift或其他功能。
选择要从一个UIView移到另一个UiView(不是孩子)或ScrollView的所有控件
剪切/复制
现在,将新的UIView / ScrollView拖动到现有的UIView之后,不要单击一次以将其选中,而是双击新的UIView / ScrollView并粘贴所有控件。
所有控件之间的距离差异将保持不变,但是您可能不得不重新定位控件。因此,在重新放置控件之前,不要单击任何地方,只需通过导航箭头重新放置所有控件,因为它们都已被选中,或者您可能必须再次选择它们。
注意:我在XCode 4.2上
我已经完成了与Stepan解决方案类似的操作,而没有使用情节提要。在IB中,当ViewController的视图打开时:
问:将
一个视图(其中包含许多其他子视图)嵌入到ScrollView或另一个顶级视图中,与我到目前为止所看到的并不直接。此后不久发生的事情是,所有子视图似乎都由于找不到原始框架而被放错了位置。
答:请
按照以下步骤操作,您将可以更轻松地解决它:
不,还没有完成!有时,您可能会遇到与UI约束有关的问题,您将不得不相应地解决它们。
我发现了另一种方法。基本上是:移动=剪切+粘贴
这样,您可以:
这样,您不会:
事实是,情节提要中除一个(根)视图外的每个视图都有其父视图。接下来,当您复制/移动多个子视图时,会丢失框架和约束。
答案很简单。您可以通过将子视图(SV)的父视图(P)复制到新的父视图(P')中来进行复制。这样,您可能只需要重新创建从该父新视图(P')到其新父视图的约束,而无需重新创建要移动的每个子视图。
在将父视图(P)的副本复制到新视图(P')后,您可以:
从原始父视图(P),您:
之前:
查看1
视图2
P
您想要移动的SV
SV不想移动
视图3
后:
查看1
视图2
P
SV不想移动
视图3
P'
SV您想要移动
我要强调的是,如果您将UIScrollView作为父视图,则这不能很好地概括。然后,它的副本将再次是UIScrollView,这可能不是所希望的。
另一件事是,当您确实删除了原始父视图(P)中的某些子视图(SV)时,如果其他(不可移动的子视图)引用了它们,则可能需要重新创建一些约束。但是您还是应该这样做。