MonoTouch: Podwojenie wyglądu Rozmiar obrazu, gdy odcień jest regulowany na wyświetlaczu Retina
Ustawiam tło NavBar za pomocą tego kodu, który działa doskonale na ekranach Retina i innych niż Retina. Jest obraz @ 2x i normalny. Więc wszystko w porządku:
UINavigationBar.Appearance.SetBackgroundImage(
GetImage(ImageTheme.menubar), UIBarMetrics.Default);
Teraz, kiedy to zastosujęChangeHue()
transformacja do obrazu w celu dostosowania jego odcienia, na wyświetlaczach Retina obraz jest dwa razy większy. Wyświetlacze inne niż Retina są w porządku:
UINavigationBar.Appearance.SetBackgroundImage(
ChangeHue(GetImage(ImageTheme.menubar)), UIBarMetrics.Default);
...
UIImage ChangeHue(UIImage originalImage){
var hueAdjust = new CIHueAdjust() {
Image = CIImage.FromCGImage(originalImage.CGImage),
Angle = hue * (float)Math.PI / 180f // angles to radians
};
var output = hueAdjust.OutputImage;
var context = CIContext.FromOptions(null);
var cgimage = context.CreateCGImage(output, output.Extent);
var i = UIImage.FromImage(cgimage);
return i;
}
Oto wynik na ekranach innych niż siatkówka i siatkówka po zastosowaniu odcienia: