繁体   English   中英

适用于iOS的NSColorList,或通过某种方式在IB和代码之间共享颜色

[英]NSColorList for iOS, or some way to share colors between IB and code

开发应用程序时,通常会在UIColor上创建类别,并为Interface Builder创建特定颜色的自定义调色板(CLR文件)。 但这意味着我必须在2个地方添加新颜色并更新旧颜色。 我可以创建一堆IBOutlet ,在代码中设置颜色,而不使用CLR文件,但是我讨厌创建大量的IBOutlet

我想在包中包含CLR文件,然后在代码中需要的地方访问颜色。 在OS XI上,相信我可以使用NSColorList类来实现。 由于NSColorList对于iOS不存在,因此我相信唯一的选择是构建自己的“ ColorList”类,该类可以从CLR文件创建和返回UIColor

是否在某处记录了CLR文件格式? 我是否缺少其他方法将颜色保留在一个位置并从IB和代码访问它们?

苹果文档:

我已经做到了。 我无法完全共享在NDA下工作时编写的所有代码。 但是作为提示,我想出的解决方案是将UIColor类别转换为琐碎的clr导出器。 您可以轻松编写Mac OS终端应用程序来执行此操作。 例:

    for (NSString *key in _colorList.allKeys) //_colorList is NSColorList
    {
        NSColor *color = [_colorList colorWithKey:key];

        NSNumber *red = @([color redComponent]);
        NSNumber *blue = @([color blueComponent]);
        NSNumber *green = @([color greenComponent]);
        NSNumber *alpha = @([color alphaComponent]);

        NSString *method = [NSString stringWithFormat:methodString, key, red, blue, green, alpha];
        [codeString appendString:method];
    }

如果让设计人员遵循一些常见的可可方法命名和颜色命名约定标准,则可以在IB中使用CLR,并使用导出器导出类别。 它不是您要找的(或我一直在寻找的),但确实可以完成工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM