Bra*_*red 20 cocoa objective-c osx-mavericks
我正在阅读Cocoa文档,并偶然发现了10.9 API中的一些新功能.
从我收集的文档中,NSAppearance该类和相关协议NSAppearanceCustomization似乎是一种定制外观NSView及其后代的方法.
NSAppearance对象表示一个文件,该文件指定应用于应用程序中UI元素子集的标准或自定义外观.应用程序可以包含多个外观文件,并且 - 因为NSAppearance符合NSCoding - 您可以使用Interface Builder将UI元素分配给外观.
通常,您可以使用Xcode自定义窗口,以创建包含要自定义的视图和应该应用于它们的自定义艺术的外观文件.Xcode将文件的艺术内容转换为AppKit在显示指定视图时可以绘制的运行时格式.
好吧,所有听起来都很整洁和有希望,但在文档中没有任何地方可以找到外观文件是什么或如何制作一个.除了我已经阅读过的精简文档之外,谷歌的搜索空无一人.
我确实看到UIKit有一个类似的声音UIAppearance类,但据我所知,这不是UIKit类的直接端口.
有谁知道如何制作这些神奇的"外观文件"之一以及我们能用它们做些什么?
Gui*_*mbo 11
有一个称为"CoreThemeDefinition"的私有框架,它处理uicatalog文件,这些文件可以变成".car"文件并使用NSAppearance加载.我个人认为Apple将来会在Xcode中包含一个编辑器,但是现在你可以使用我制作的这个小工具:https://github.com/insidegui/AppearanceMaker
首先打开应用程序并选择保存uicatalog文件的位置,然后单击"创建骨架".这将导出包含控件默认图像的各种PSD,然后您可以编辑它们,使用该应用程序保存并导出汽车文件.
此文件需要包含在您应用的资源中,并使用以下命令加载此自定义外观:
[[NSAppearance alloc] initWithAppearanceNamed:@"Your-appearance-name" bundle:nil]
Run Code Online (Sandbox Code Playgroud)
编辑:Guilherme的反应更准确,尽管在iOS中仍然没有公开的方式来改变外观.
NSAppearance不像UIAppearance(据我所知),它只涉及在正常或浅色外观下进行控制.一个例子是当您绘制一个popover(light)与一个窗口工具栏(正常)时,NSAppearance允许您识别您正在绘制的环境.说实话,我还没有使用它,但我发现的最多信息是在WWDC 2013视频中关于Cocoa中的新功能和10.9发行说明
根据我的理解,它允许您指定控件在特定背景上的外观.如果您使用的控件要在不同的背景上重复使用,则可以检查当前外观并相应地使用控件绘制[NSAppearance currentAppearance]
另一个重要的部分是你的视图或窗口可以采用一种称为NSAppearanceCustomization协议的新协议,它允许你指定视图的外观.不完全确定这是如何工作但它就在那里.一些Cocoa控件也实现了这些,这些都在HIG for Controls中讨论过.
Apple定义了两种外观,但您可以使用自己的字符串定义自己的外观(同样,不确定).在您链接到的文档的底部,您将找到以下两个常量:
APPKIT_EXTERN NSString *const NSAppearanceNameAqua;
APPKIT_EXTERN NSString *const NSAppearanceNameLightContent;
Run Code Online (Sandbox Code Playgroud)
所以它不是UIAppearance,它只是一种了解你正在绘制什么类型的背景的方式.
| 归档时间: |
|
| 查看次数: |
3583 次 |
| 最近记录: |