검정색 이미지를 전달하는 public static 메서드가 있습니다 (검정색 이미지를 전달하고 검정색 대신 빨강 색 또는 같은 색을 반환 함). 나는 동료와 이야기하고 우리가 이미지 (색상과 색상이 아닌)에 저장하는 것이 더 될 줄 알았는데, 색상이미지와 색상에 public static fields를 사용해야합니까?
public class ColorImage
{
public static UIImage GetColoredImage(UIImage image, UIColor color)
{
UIImage coloredImage = null;
if (color == null)
{
color = UIColor.FromRGB(44, 132, 248);
}
UIGraphics.BeginImageContextWithOptions(image.Size, false, UIScreen.MainScreen.Scale);
using (CGContext context = UIGraphics.GetCurrentContext())
{
context.TranslateCTM(0, image.Size.Height);
context.ScaleCTM(1.0f, -1.0f);
var rect = new RectangleF(0, 0, (float)image.Size.Width, (float)image.Size.Height);
context.ClipToMask(rect, image.CGImage);
context.SetFillColor(color.CGColor);
context.FillRect(rect);
coloredImage = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
}
return coloredImage;
}
}
우리는 공공 장소에서 우리의 응용 프로그램 전체에서 사용할 계획 :
그것은 다음과 같습니다 정적 필드.
Textfield.BackgroundColor = ColorCache.MainColor;
Textfield.Image = ImageCache.UserImage;
을 또는 그 라인을 따라 뭔가 : 나는이 색상이나 이미지 중 하나를 사용하는 데 필요한 경우 그 방법, 난 그냥 호출 할 수 있습니다. 이것은 Xamarin을 사용하는 iOS 앱용입니다. 이 방법으로 문제가 있습니까? 이미지를 잡고 반복적으로 색상을 처리하지 않기 때문에 목록 뷰를로드하는 속도가 빨라질 수도 있습니다.
이미지는 심지어 같은 화면에 같은 이미지를 여러 번 같이 응용 프로그램을 통해 모든 사용된다. 지금은리스트 뷰의 경우 이미지를 계속해서 색칠합니다. 나는 ios가 동일한 이미지를 사용하여이를 최적화하는지 또는 디스크에서 매번 이미지를 가져 오는 지 여부를 알지 못합니다 ... 성능 향상을 위해 이미지의 메모리를 약간 희생 시키십시오. – aufty
경우, 내 의견에 더 나은 접근 방식은 다음과 같습니다 : 싱글 톤을 만들 때마다 이미지 처리가 가능할 때마다 한 번 이미지가 사전에 보관됩니다., 다음 번에 싱글 톤이 해고됩니다. 그 이미지가있을 경우 그 이미지를, 그렇지 않으면 새로운 것을 생성합니다. 그런 식으로 룰렛과 같이 다양한 이미지를 만드는 것이 아니라 "주문형"데이터를 항상 사용할 수 있습니다. –
Tomerz