在 Interface Builder 中更新 UIView 类

Posted

技术标签:

【中文标题】在 Interface Builder 中更新 UIView 类【英文标题】:Update UIView class in Interface Builder 【发布时间】:2012-05-23 16:53:29 【问题描述】:

我正在 XCode 界面构建器中构建 UI。在布置了所需的视图层次结构后,我意识到靠近层次结构顶部的视图之一应该是UIScrollView,而不是UIView

有没有什么方法可以轻松地将该视图的类型从 UIView 更改为 UIScrollView 而无需使用自己的子视图层次结构重新布局所有子组件?

【问题讨论】:

【参考方案1】:

据我所知,最简单的方法是右键单击相应的 .xib 文件并选择Opern As --> Source Code。然后,您可以找到要更改的视图。它看起来像这样。

<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0gr-sH-vvn">
.
.
.
</view>

改成

<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0gr-sH-vvn">
.
.
.
</scrollView>

基本上,您需要将view 更改为scrollView,当您通过界面构建​​器心情下的属性检查器部分更改它们时,其他属性将自动生成(右键单击.xib 文件并选择@ 987654326@)

【讨论】:

+1 这是最简单的,因为在将 UIScrollView 设置为自定义类后,接受的答案不会在检查器中显示 UIScrollView 属性。例如键盘关闭行为 我自己的经验:这会导致Xcode陷入不断崩溃的循环。所以你的里程可能会有所不同。【参考方案2】:

是的,单击您要更改的UIView。选择后,打开 Identity Inspector 窗格。

在 Identity Inspector 中,您应该会在顶部看到一个名为“Class”的字段,并且当前值(灰色)应该显示为“UIView”。

输入“UIScrollView”并按 Enter。

这会将您的 Nib 文件和我以前的 UIView 更新为 UIScrollView。此外,如果您已经将视图连接到 IBOutlet,请确保更新 IBOutlet 类定义,如果它不是 id

【讨论】:

完美!正是我想要的。 如果你想查看 ScrollView 的属性检查器,你需要像这样编辑 nib/storyboard:codenetwaves.blogspot.com.br/2012/09/… 如果您尝试,请小心使用 codenetwaves 示例。我的 Id 不合适,Xcode 清除了 Interface Builder 中的整个场景,无法撤消。

以上是关于在 Interface Builder 中更新 UIView 类的主要内容,如果未能解决你的问题,请参考以下文章

xcode Interface Builder 未更新 IBDesignable 类

Interface Builder 中的“查看方式”问题

在 Cocoa/Interface Builder 中,单击按钮后如何清除文本字段中的文本

Interface Builder中的WKWebView

@IBDesignable 错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool 崩溃

iOS Update Interface Builder视图框架基于约束