2019/07/13更新
var millimeter: CGFloat {
if let screen = self.view.window?.screen {
let key = NSDeviceDescriptionKey(rawValue: "NSScreenNumber")
let id = screen.deviceDescription[key] as! UInt32
let physicalSize: CGSize = CGDisplayScreenSize(id)
let pixelSize = screen.deviceDescription[NSDeviceDescriptionKey.size] as! CGSize
return pixelSize.width / physicalSize.width
} else {
return 5.039370154423904 // According to MacBook Retina 13inch Default Resolution
}
}
MacBookのディスプレイなら正しく1mmが取れるが,外部ディスプレイの場合正しく取れない場合もある模様.