Storyboard 通过全局值访问 UIControl 属性

Posted

技术标签:

【中文标题】Storyboard 通过全局值访问 UIControl 属性【英文标题】:Storyboard access UIControl property through global value 【发布时间】:2018-08-29 12:12:56 【问题描述】:

我有一个带有多个视图控制器的 iPhone 应用程序。他们各自的 UI 设置在主故事板文件中。为了保持一致性,我为文本字段高度、字体大小、按钮高度等定义了一些全局值,这些值将被许多控件使用。当前设置这些控件的方法是在情节提要中初始化它们,然后在各自的视图控制器中,在 viewDidAppear 中,高度、字体等的全局值被访问并分配为这些控件的剩余属性。

但是这个过程是碎片化的,容易出错。有没有更好的方法来做到这一点?是否可以在故​​事板中访问在 swift 文件中定义的全局值?例如,属性检查器指向的文本字段的字体是否实际上引用了全局值?

谢谢

【问题讨论】:

【参考方案1】:

没有办法设置你想要的,如果你有一个预定义的高度/字体,那么直接在属性检查器中设置它,如果你想为不同的设备配置你可以尝试使用大小类

或者

创建所需元素的子类(UITextField / UIIButton),并将它们分配给 IB 中的类名

【讨论】:

您可以创建一个子类的示例,例如UIButton 为没有太多经验的人使用常量数据。 我最终为所需元素添加了自定义类,这还不错。【参考方案2】:

一个可能的解决方案是预处理故事板文件。运行一个脚本,在故事板文件中搜索相关的 XML 元素并将它们替换为正确的值。您可能希望将其添加为运行脚本阶段,以便在每次编译之前运行(我没有尝试过,但似乎有可能,尽管在开发时您不会在情节提要中看到固定值),或者只是手动运行它从命令行。

【讨论】:

这是我想要的解决方案,但我看不到 IB 中的各种值这一事实是一个交易破坏者。

以上是关于Storyboard 通过全局值访问 UIControl 属性的主要内容,如果未能解决你的问题,请参考以下文章

使用 App Delegate 访问通过 Storyboard 创建的视图控制器

storyboard传值方式

如何通过 Python 和 ctype 访问 C 全局变量结构

用于约束的 Storyboard 共享常量

Watchkit:以编程方式设置全局色调

如何在android中全局设置值[重复]