这个 NSView 的子类使用 NSImage 作为模式或 NSColor 来填充其背景。视图将使用 NSCompositeSourceOver 来填充,这样下面的图层在透明效果使用时仍然是可见的。
RMSkinnedWindow 的核心功能是在 Interface builder 中直接定义某些属性,这减少了构建美观应用程序所需的代码量。为此,将一个新的 NSView
拖动到你的 UI 中,并将 RMSkinnedView
选为其类。在同一个 Interface Builder 视图中(身份检查器),根据以下规则添加属性到 用户定义的运行时属性。
backgroundPatternImageName (STRING) 你要作为视图背景模式使用的图像的名称。图像可以包含透明效果。将使用 [NSImage imageNamed:];
加载图像。如果存在模式图像,则指定的颜色将被忽略。
offsetString (STRING) 定义背景模式绘制的二维偏移量的字符串。由于模式依赖于窗口的大小,您只需编写并尝试直到它符合您的需求!
colorString (STRING) 一个定义您想使用的颜色的 RGBa 字符串,如果您不想使用模式图像。RGBa 字符串的格式为 [0-255][0-255][0-255][0.0-1.0]
,例如 255,128,0,0.5
。如果设置了模式图像,则颜色将被忽略。
cornerRadius (NUMBER) 定义视图所有四个角半径的数字。您必须手动启用每个角,使用以下设置。
roundedTopLeft (BOOL),roundedTopRight (BOOL),roundedBottomLeft (BOOL),roundedBottomRight (BOOL) 启用各个角度的圆角。
示例
通常,必须将 NSView 子类化以提供自定义的背景模式图像并保留对 NSView 实例的引用以设置图像。使用此类,可以简单地定义图像路径(就像使用 +(NSImage *) imageNamed:;)
一样)在 Interface Builder 对象属性中。
在我们的项目中,我们经常使用 RMSkinnedView 作为 INAppStoreWindow 窗口的标题栏视图。左侧顶部和右侧顶部的半径允许我们完美匹配窗口的角落半径。
看到标注过的头文件后,使用方法应该很清晰。
版权(c)2013 拉法埃尔·汉纳曼姆 巴塞德尔斯 根据BSD许可证。
关注@raffael_me以获取类似发布信息。