我正在寻找一种使用CGColors
创建MonoTouch
列表的有效方法。
这是我到目前为止的方法:
List<CGColor> colourList = new List<CGColor>();
colourList.Add(UIColor.Blue.CGColor);
colourList.Add(UIColor.Brown.CGColor);
colourList.Add(UIColor.Cyan.CGColor);
我现在很容易从列表中随机选择其中一种颜色,但我正在寻找一种有效的方法,可以将CGColor
的所有不同选项添加到此列表中,而无需使用{{1每一次。
如何在循环中浏览每个可能的选项(蓝色,橙色,绿色,紫色等...)以将这些选项添加到我的列表中?
谢谢!
答案 0 :(得分:2)
这取决于高效的含义。如果您希望快速,请继续使用Add
并构建您自己的列表。
您可以使用C#3功能删除一些源代码,例如
List<CGColor> colourList = new List<CGColor> () {
UIColor.Blue.CGColor,
UIColor.Brown.CGColor,
UIColor.Cyan.CGColor, ...
};
看起来更好(恕我直言)并且执行起来会很快,因为一旦编译成IL,它将是相同的。
您还可以使用System.Reflection
查找UIColor
的所有静态属性(返回CGColor
)并将其添加到列表中。这样做的好处是,未来版本的iOS中添加的任何新颜色都将在不更改源代码的情况下添加。但是执行(创建列表)会慢一点。此外,托管链接器可能会在启用时删除一些颜色(因为它们不会被视为应用程序所需)。
最后,如果您想要随机颜色,那么您只能保留RGBA值并根据它们重新创建CGColor
。 Take会占用较少的内存,并允许您使用预定义的RGBA值数组。