我正在使用此代码设置导航栏的背景,该代码在 Retina 和非 Retina 显示器中效果很好。有一个@2x 和正常图像。所以,一切都很好:
UINavigationBar.Appearance.SetBackgroundImage(
GetImage(ImageTheme.menubar), UIBarMetrics.Default);
现在,当我将此ChangeHue()
变换应用于图像以调整其色调时,在 Retina 上显示图像的大小是原来的两倍。非 Retina 显示器很好:
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;
}
以下是应用 Hue 后在非 Retina 和 Retina 显示中的结果: