首页 > 解决方案 > 从 3D 旋转的 UIView 或 UIImageView 获取像素颜色

问题描述

我有从视图中获取像素颜色的代码。

代码每次都运行良好,除非我将视图旋转 X 轴或 Y 轴。

该代码也适用于 Z 轴,但因为 X 轴和 Y 轴适用于图层,这可能是我没有按预期获得像素颜色的原因

这是我用来获取像素颜色的代码

func getPixelColor(_ point: CGPoint) -> UIColor? {
    let pixel = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: 4)
    let colorSpace = CGColorSpaceCreateDeviceRGB()
    let context = CGContext(data: pixel, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 4, space: colorSpace, bitmapInfo: CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue).rawValue)
    context?.translateBy(x: -point.x, y: -point.y)
    if let context = context {
        layer.render(in: context)
    }
    let color = UIColor(red: CGFloat(Double(pixel[0]) / 255.0), green: CGFloat(Double(pixel[1]) / 255.0), blue: CGFloat(Double(pixel[2]) / 255.0), alpha: CGFloat(Double(pixel[3]) / 255.0))
    return color
}

即使使用 X 轴和 Y 轴旋转,也应该进行哪些更改才能获得正确的像素颜色

谢谢!

标签: iosswiftuiviewrotationuigraphicscontext

解决方案


推荐阅读