1

我正在寻找一种创建CGColorsusing列表的有效方法MonoTouch

这是我迄今为止在一种方法中所拥有的:

List<CGColor> colourList = new List<CGColor>();
colourList.Add(UIColor.Blue.CGColor);
colourList.Add(UIColor.Brown.CGColor);
colourList.Add(UIColor.Cyan.CGColor);

我现在很容易从列表中随机选择其中一种颜色,但我正在寻找一种有效的方法来将所有不同的选项添加CGColor到此列表中,而无需colourList.Add()每次都使用。

如何在循环中运行每个可能的选项(蓝色、橙色、绿色、紫色等...)以将它们添加到我的列表中?

谢谢!

4

1 回答 1

2

这取决于您所说的效率。如果您希望这更快,请继续使用Add并构建您自己的列表。

您可以使用 C# 3 功能删除一些源代码,例如

List<CGColor> colourList = new List<CGColor> () {
    UIColor.Blue.CGColor,
    UIColor.Brown.CGColor,
    UIColor.Cyan.CGColor, ...
};

这看起来更好(恕我直言),并且执行起来也一样快,因为一旦编译为 IL,它将是相同的。

您还可以使用查找(返回 a )System.Reflection的所有静态属性并将它们添加到列表中。这样做的好处是,在未来版本的 iOS 中添加的任何新颜色都将在不更改源代码的情况下添加。但是执行(创建列表)会慢一些。此外,托管链接器在启用时可能会删除一些颜色(因为它们不会被应用程序视为需要)。UIColorCGColor

最后,如果您想要随机颜色,那么您可以只保留 RGBA 值并CGColor根据它们重新创建一个。Take 将占用较少的内存,并允许您使用预定义的 RGBA 值数组。

于 2012-12-02T16:09:19.843 回答