Как я могу редактировать пользовательские интерфейсы программ Mac OS X? Я бы хотел настроить параметры некоторых программ, например размеры окон.
1 ответ
Приложения Mac OS X, созданные с использованием XCode, имели свой графический интерфейс, обычно разработанный с помощью Interface Builder (теперь интегрированный в XCode 4).
Определения GUI хранятся в файлах с расширением .nib
и в каталоге Contents/Resources
готового пакета приложений. Эти файлы можно редактировать с помощью Interface Builder, поскольку они не скомпилированы так же, как файлы исходного кода.
В следующем примере редактируется файл определения окна About для Reeder, коммерческой программы чтения RSS/ATOM.
Это Reeder.app/Contents/Resources/About.nib
. Если мы откроем этот файл в Интерфейсном Разработчике, он не будет отображаться. В течение некоторого времени файлы .nib
распространяются в "скомпилированной" форме, возможно, из-за того, что их редактирование было слишком широко распространено.
Чтобы иметь возможность редактировать файлы .nib
, нам нужно "декомпилировать" их, например, с помощью этой программы под названием NibDecompiler. Загрузите и скопируйте файл NibDecompiler.workflow
в ~/Library/Services
. Теперь в файлах появится контекстное меню NibCompiler, которое мы можем использовать для редактирования файлов .nib
.
Создайте копию Reeder's Reeder.app/Contents/Resources/About.nib
на своем рабочем столе, "декомпилируйте" ее из контекстного меню и откройте ее в Интерфейсном Разработчике или Xcode 4.
Теперь вы можете редактировать, например, метку, содержащую название программы. Сохраните и замените исходный файл в комплекте приложений Reeder. Запустите Reeder и убедитесь сами:
В редакторе ясно видно, что не все разработано в Интерфейсном Разработчике. Некоторые приложения могут создавать весь пользовательский интерфейс в коде, и им вообще не нужны файлы .nib
. Другие создают только самые сложные части некоторых окон в коде. Используя этот подход, мы можем редактировать только то, что было разработано в файлах .nib
.
Это означает, что вы можете изменить размер окон, определенных в этих файлах:
Но если их содержимое создано программно, не разочаровывайтесь в том, что разработчики не развивались с учетом ваших изменений и, например, разрывов макета.
Редактирование ресурсов нарушит подпись кода, которая используется для брандмауэра OS X и, AFAIK, аутентификации цепочки для ключей (чтобы разрешить доступ после обновлений приложения автоматически).
Поскольку некоторые приложения загружают .nib
а затем выполняют некоторые дополнительные изменения (например, вставляя номер версии в диалоговое окно «О программе»), вы можете на самом деле нарушить некоторые функции при этом. Вы, вероятно, вообще не должны этого делать ;-)