【问题标题】:How to edit / refactor properties of XIB files in bulk?如何批量编辑/重构 XIB 文件的属性?
【发布时间】:2012-09-18 11:52:23
【问题描述】:

我的一个大项目是客户只是希望更改整个应用程序中的主要字体。 代码分配的字体非常简单(我有某种抽象字体创建的主题系统)。

但问题始于 XIB 文件中使用的字体。我是否必须彻底检查所有这些并手动将更改应用于属性(我实际上有几十个)?

是否有任何智能终端命令可以更有效地执行此操作(ibtool, xargs, find 的组合)?

我已经完成了类似的问题 - 提取 XIB 中使用的所有字符串,如下所述:

https://stackoverflow.com/a/7754884/229229

我希望任何 XIB 属性也有一些搜索(和替换)模式。

【问题讨论】:

  • 你能用任何旧的 IDE 在文件夹中搜索和替换吗? XIB 文件毕竟只是文本。显然,首先备份所有内容。
  • 但首先我需要知道要搜索什么。例如:如果要替换字体属性并且我搜索 UIFont(或 NSFont),结果中没有显示任何 xib 文件。这些必须以其他形式存储。但是好的建议 - 我将在文本编辑器中研究它们,但是一些关于 XIB 文件中对象的 xml 表示的文档会很有用。

标签: iphone xcode refactoring interface-builder xib


【解决方案1】:

.xib 文件是普通的 .xml 文件,可以简单地编辑。
.xib 文件中只定义了非默认字体。简化示例:

<object class="NSTextField" id="298830314">
    <object class="NSTextFieldCell" key="NSCell" id="386648753">
        <object class="NSFont" key="NSSupport">
            <string key="NSName">Arial-BoldMT</string>
            <double key="NSSize">18</double>
            <int key="NSfFlags">16</int>
        </object>
    </object>
</object> 

换句话说,删除所有&lt;object class="NSFont"&gt; 路径以恢复为默认字体。
要将所有 NSTextField 更改为特定字体,请添加如下内容:

<object class="NSFont" key="NSSupport">
    <string key="NSName">Arial-BoldMT</string>
    <double key="NSSize">18</double>
    <int key="NSfFlags">16</int>
</object>

致所有&lt;object class="NSTextField"&gt;

Xcode 没有内置功能可以批量自动执行此操作。

编辑 (对评论的回应)

通过单击“字体面板...”按钮选择特定字体:

使用字体面板,您可以选择任何字体:

【讨论】:

  • 如果在 XIB 中设置了默认字体,则关于缺少字体描述的好点。这是否适用于任何其他属性,如颜色、自动调整大小的蒙版?你觉得使用自定义字体名称有变化吗(当然是在 Info.plist 中注册它们之后)。我注意到没有办法使用界面生成器界面设置自定义字体。
  • @Lukasz - 您可以使用字体选择器选择任何字体。确保字体已添加到系统字体册中,否则不会显示。签出插入到.xib 文件中的代码,并将其批量添加到其他.xib 文件中。
猜你喜欢
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多