2012-12-02 3 views
1

나는 MonoTouch을 사용하여 CGColors의 목록을 만드는 효율적인 방법을 찾고 있습니다. MonoTouch - 효율적으로 모든 CGColor 유형의 목록을 만드는 방법

내가하는 방법으로 지금까지 무엇을 가지고 : 내가 지금 무작위로 목록에서 그 색상 중 하나를 선택하는

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

그것은 쉽게,하지만 난 모두를 추가하는 효율적인 방법을 찾고 있어요 매번 colourList.Add()을 사용할 필요없이 CGColor의이 옵션을이 목록에 추가 할 수 있습니다.

내 목록에 추가 할 수있는 루프의 각 가능한 옵션 (파란색, 주황색, 녹색, 보라색 등 ...)을 어떻게 실행할 수 있습니까?

감사합니다.

답변

2

의 의미에 따라 달라집니다.. 이 값이 일 때이되도록하려면 Add을 계속 사용하고 나만의 목록을 작성하십시오.

C# 3 기능을 사용하여 일부 소스 코드를 삭제할 수 있습니다 (예 :

일리노이로 컴파일되면 동일하므로보기가 더 좋고 (IMHO) 더 빨리 실행됩니다.

System.Reflection을 사용하여 UIColor의 모든 정적 속성 (CGColor 반환)을 찾아 목록에 추가 할 수도 있습니다. 이 기능을 사용하면 소스 코드를 변경하지 않고도 iOS의 새로운 버전에 추가 된 새로운 색상이 추가 될 수 있습니다. 그러나 실행 (목록 작성)은 조금 느려집니다. 또한 응용 프로그램에서 필요로하는 것처럼 보이지 않기 때문에 관리되는 링커에서 사용하도록 설정하면 일부 색상이 제거 될 수 있습니다.

마지막으로 임의의 색상을 원할 경우 RGBA 값만 유지하고 그 값을 기준으로 CGColor을 다시 만들 수 있습니다. Take는 더 적은 양의 메모리를 사용하고 미리 정의 된 RGBA 배열을 사용할 수있게합니다.

+0

고맙습니다 poupou, 나는 효율적으로 명확히 했어야했는데, 나는 코드를 작성하는 더 깔끔한 방법과 가능한 경우 빠른 것을 의미한다고 생각합니다. 지금은 간단히 소스 코드를 간소화하는 방법을 설명하겠다. 그리고 나는 Reflection에 대해서도 간략히 들었다. 나는 그것을 사용하는 모든 UIColor 정적 프로퍼티의 목록을 가져올 수 있었기 때문에 나중에 사용할 수도있다. 내 응용 프로그램에 대해 충분히 빠르지 마세요 :) - RGBA 값을 임의로 사용하는 방법에 대해서도 생각했습니다. 0-155 사이의 정수를 사용하여 하나의 값을 얻기에 충분히 간단해야합니다. 아마도 다른 방법 일 수 있습니다! – Shogan

관련 문제