2013-11-02 5 views
2

Мне было интересно, как приложения Apple «Pro» (Final Cut Pro X, Compressor и т. Д.) Всегда отображают «графитовый» вид, даже если пользователь имеет «синюю» настройку на системные настройки.Как приложения Apple от приложения «графитовый» вид?

Выполнение некоторых исследований Я обнаружил, что код, который делает это происходит, находится в функции под названием NSProApplicationMain. Если я создам новый проект Xcode, свяжите его с ProKit.framework и замените NSProApplicationMain вместо NSApplicationMain, приложение получит «графитовый» вид.

Кто-нибудь знает, что это делает? Есть системный вызов или что-то еще?

+1

Это частный фреймворк, а это значит, что никакой документации для каких-либо его методов не будет. Поскольку это всего лишь фреймворк, вы можете просто импортировать его, но вы захотите использовать альтернативу, если хотите разместить его в магазине приложений. – TheAmateurProgrammer

+0

Yeap Я знаю это, я просто задаюсь вопросом, знает ли кто-нибудь, что называется призывом, которое приложение использует графитовый вид, поэтому я могу сделать это, не используя частную инфраструктуру. Это скорее любопытство, я не планирую использовать его в производственном программном обеспечении ... –

+0

Вы просто .. импортируете его в качестве рамки. Свяжите фреймворк из каталога фреймворка '/ System/Library/PrivateFrameworks/ProKit.framework', а затем импортируйте его в свои классы с помощью' #import '. – TheAmateurProgrammer

ответ

7

я, наконец, понял это, это очень просто и не предполагает использование частного API:

[[NSUserDefaults standardUserDefaults] setVolatileDomain:@{@"AppleAquaColorVariant": @6} forName:NSArgumentDomain]; 

Я обнаружил, что это разборка рамки ProKit, которая поставляется с новым IMOVIE;)

Редактировать: Код, указанный выше, должен быть запущен до UIApplicationMain.

+0

вы можете уточнить? кажется, ничего не делает, когда вы вводите в applicationDidFinishLaunching: метод нового приложения на 10.13 – user1259710

+0

Вы должны запустить это перед UIApplicationMain. Я добавил его к main.m. –

2

ProKit реализует этот внешний вид. Он не полагается на встроенный графит в AppKit.

Нет никакого поддерживаемого способа использования этого внешнего вида, кроме переопределения его самостоятельно.

1

Если вы хотите иметь похожий вид, вам нужно будет с NSBorderlessWindowMask на данный момент и переопределить много тонкости. Кнопки светофора - это немного работы, чтобы получить право. Все должно изменить свой внешний вид, основываясь на главном или главном окне, а приложение больше всего.
NSAppearance может превратиться во что-то полезное в будущем. Не задерживайте дыхание. Идите и погрузитесь в глубину NSWindow, NSWindowController, NSView, NSViewController, и после этого сложная часть поставляется с реализацией всех остальных элементов управления и видов в вашем новом стиле.

+0

Выполнено: D https://github.com/insidegui/GRProKit –

+0

Да. Вам понадобятся таблицы и схемы. Не говоря уже о хозяине, если другие ... – uchuugaka

Смежные вопросы