具有预定义常量值的 Interface Builder
Interface Builder with predefined constant values
是否可以在 Interface Builder 中使用预定义的常量值?
例如。如果我在头文件中定义 MyConstantWidth = 10;
,我可以在 IB 中使用它吗?我希望它不起作用,但也许有人有一个聪明的解决方案。
据我所知,Interface Builder 是一张 one-way 票。
您只能向 .m 提供信息(通过运行时属性),而不能使用 .m/.h 中的信息向 IB 提供信息。
从概念上讲,将值放在代码中以在 IB 中使用违背了将视觉效果与编码逻辑分开的整个想法。
我确实认识到在 IB 中使用 "named" 值有助于保持一致性和促进更新。在这方面,颜色是我个人最讨厌的东西。
如果您打算以编程方式更改在 IB 中仅具有初始值的属性,那么 outlets 可能是您唯一的选择。
您还可以使用隐藏控件或低优先级约束来表达您通过插座映射到的任意值。我有时会使用它在约束值之间切换,方法是创建两个额外的低优先级约束,并在适当时将它们的 .constant 值复制到高优先级约束。这使 IB 中的所有值保持一致并且彼此接近(更重要的是在代码之外)。
是否可以在 Interface Builder 中使用预定义的常量值?
例如。如果我在头文件中定义 MyConstantWidth = 10;
,我可以在 IB 中使用它吗?我希望它不起作用,但也许有人有一个聪明的解决方案。
据我所知,Interface Builder 是一张 one-way 票。
您只能向 .m 提供信息(通过运行时属性),而不能使用 .m/.h 中的信息向 IB 提供信息。
从概念上讲,将值放在代码中以在 IB 中使用违背了将视觉效果与编码逻辑分开的整个想法。
我确实认识到在 IB 中使用 "named" 值有助于保持一致性和促进更新。在这方面,颜色是我个人最讨厌的东西。
如果您打算以编程方式更改在 IB 中仅具有初始值的属性,那么 outlets 可能是您唯一的选择。
您还可以使用隐藏控件或低优先级约束来表达您通过插座映射到的任意值。我有时会使用它在约束值之间切换,方法是创建两个额外的低优先级约束,并在适当时将它们的 .constant 值复制到高优先级约束。这使 IB 中的所有值保持一致并且彼此接近(更重要的是在代码之外)。