我有这样的代码:
// 1.
UIGraphics.BeginImageContextWithOptions(contentSize, false, 0);
// 2.
//UIGraphics.BeginImageContext(contentSize);
using (var g = UIGraphics.GetCurrentContext()) {
g.TranslateCTM(0, contentSize.Height);
g.ScaleCTM(1, -1);
DrawContent(g, contentSize);
}
img = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
// skip some stuff
mylayer.Contents = img.CGImage;
如果我使用(1)变体,我看不到任何图画。如果我使用(2)变体,我会看到模糊的图像。 为了检查图像,我通过context.DrawImage和(1)变体看起来很清晰。 myLayer是创建的CALayer。 BeginImageContextWithOptions和BeginImageContext之间有什么区别,所以第一层没有绘制图像?
更新
事实证明,真正的设备中没有出现问题(我只有5秒)。但它发生在iPhone模拟器上。
答案 0 :(得分:0)
来自Apple Developer Documentation
<强> UIGraphicsBeginImageContext 强>
此功能相当于调用 UIGraphicsBeginImageContextWithOptions 将opaque参数设置为的函数 没有 比例因子为1.0。
换句话说,这些函数调用之间的差异是比例因子的值。
//scale factor is 1
UIGraphics.BeginImageContext(contentSize);
//scale factor is 0
UIGraphics.BeginImageContextWithOptions(contentSize, false, 0);
如果您明确地将0作为比例参数传递,则比例因子将设置为设备主屏幕的比例因子。该值的范围在1-3之间,具体取决于设备的屏幕分辨率。您可以通过UIScreen.MainScreen.Scale
访问它。
答案 1 :(得分:0)
我已经解决了这个问题!这是因为模拟器的图像太大了。在调试模式下,我将它缩小,模拟器开始显示它!