我一直在使用 UIGraphicsBeginImageContextWithOptions()
,注意到该方法的最后一个字段是一个 scalefactor
。苹果文档中指出,如果我将其设置为 0.0,则会使用设备主屏幕的默认比例因子。是否有一种方法可以通过属性或方法获取该默认比例因子?
我一直在使用 UIGraphicsBeginImageContextWithOptions()
,注意到该方法的最后一个字段是一个 scalefactor
。苹果文档中指出,如果我将其设置为 0.0,则会使用设备主屏幕的默认比例因子。是否有一种方法可以通过属性或方法获取该默认比例因子?
Swift 3+ 版本:
UIScreen.main.scale
UIScreen.main.scale
翻译为:屏幕主要比例。 - twodayslateSwift5+ / macOS Big Sur:
let backingScaleFactor = NSScreen.main?.backingScaleFactor
Swift 5+
let scale = UIScreen.main.scale
print("scale is:\(scale)")
let screenScale: CGFloat = view.window?.windowScene?.screen.scale
CGSize textcontent =CGSizeMake(width, height);
UIGraphicsBeginImageContext(textcontent);
if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f)
{
UIGraphicsBeginImageContextWithOptions(textcontent, YES, 1.0f);
}
else
{
UIGraphicsBeginImageContext(textcontent);
}
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
[[UIScreen mainScreen] scale] == 2.0f
这种比较浮点数的方式是错误的,请不要使用 ==
。 - user529758
UIImage
作为一个scale
属性,以防您不想被绑定到设备而是绑定到内容。 - Juan Boero