我想要做的是在Xcode的界面构建器中将组件/视图从一个超级视图拖到另一个超级视图,而不必重置其帧/位置。
执行此操作时,Xcode的默认行为似乎是将视图在其新的超视图中垂直和水平移动,同时保留其尺寸。这非常令人沮丧,因为这意味着需要在新的superview中手动重新定位视图。但是在我移动它之前我已经正确定位了,所以我希望Xcode能够记住它的框架的所有属性,而不仅仅是它的宽度/高度。这可能吗?
答案 0 :(得分:213)
另一种解决方案:
答案 1 :(得分:28)
我发现了一些可能对你有帮助的东西!
任务是将“子视图”重新组合成“父视图”,以便它们成为父级视图的子级,并在操作之前保留显示的物理位置。
首先,调整父视图以物理覆盖子视图的区域。其次,确保所有孩子都在视图列表中显示出来。
现在用鼠标选择所有孩子并移动它们,例如一个像素向上,一个像素向下(只是说IB有一些变化)。在那之后,孩子们和他们将神奇地成为父母的孩子,并保持他们的立场。
它适用于OSX 10.8.2和Xcode 4.6。
祝你好运!答案 2 :(得分:22)
我设法节省了大量时间重新定位的东西,并做到了这一点:
虽然不是很优雅,但是看不出为什么XCode不支持Shift或其他东西。
答案 3 :(得分:10)
选择要从一个UIView移动到另一个UiView(可能是孩子)或ScrollView
剪切/复制
现在将新的UIView / ScrollView拖到现有的UIView后,不要单击一次选择它,而是双击新的UIView / ScrollView并粘贴所有控件。
所有控件之间的距离差异将保持不变,但您可能需要重新定位控件。因此,在重新定位之前不要点击任何地方,只需按导航箭头重新定位所有控件,因为这些已全部选中,或者您可能再次选择它们。
注意:我在XCode 4.2上
答案 4 :(得分:4)
我做了类似Stepan的解决方案,没有使用故事板。在IB中,ViewController的视图是打开的:
答案 5 :(得分:2)
这是将子视图复制到另一个视图并保留位置的最佳解决方案:
第6步会移除嵌入视图,您只会复制子视图。
答案 6 :(得分:2)
问:
将视图(其中包含许多其他子视图)嵌入到ScrollView或另一个顶级视图中,这与我到目前为止所看到的并不直接。不久之后发生的事情是,所有子视图可能由于找不到原始框架而被放错了位置。
A:
请按照以下步骤操作,您将可以更轻松地解决它:
否,尚未完成!有时,您可能会遇到与UI约束有关的问题,您将不得不相应地解决它们。
答案 7 :(得分:1)
我发现了另一种方法。它基本上是:Move = Cut + Paste
这样做:
这样你不会:
基础是,除了Storyboard 中的一个(根)之外的每个视图都有其父视图。接下来,当您复制/移动多个子视图时,会丢失框架和约束。
答案很简单。您可以通过将父视图(P)复制到新的父视图(P')来复制子视图(SV)。这样,您可能只需要从父新视图(P')重新创建约束到新的父视图,但不能重新创建您想要移动的每个子视图。
在您将父视图(P)复制到新视图(P')之后,从该新视图(P')中:
从原始父母视图(P)中你:
<强>之前:强>
视图1
视图2
P
SVS-你想学对移动
SVS-你-拒收想对移动
VIEW3
<强>后:强>
视图1
视图2
P
SVS-你-拒收想对移动
VIEW3
P&#39;
的SV&#39; -you-想到移动
我应该强调,如果你有例如UIScrollView作为父视图。然后,它的副本将再次是UIScrollView,这可能是不可取的。
另一件事是当您删除原始父视图(P)中的某些子视图(SV)时,如果其他(不可移动的子视图)引用它们,则可能需要重新创建一些约束。但无论如何你应该这样做。
答案 8 :(得分:0)
帮助我解决此问题的是-