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 创建的视图控制器