MonoTouch - как эффективно создать список со всеми типами CGColor
Я смотрю на эффективный способ создания списка CGColors
с помощью 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()
каждый раз.
Как я могу просмотреть все возможные варианты (синий, оранжевый, зеленый, фиолетовый и т. Д.) В цикле, чтобы добавить их в свой список?
Спасибо!
1 ответ
Это зависит от того, что вы подразумеваете под эффективным. Если вы хотите, чтобы это было быстро, продолжайте использовать 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.