将旋转变换应用于平铺的背景图像

时间:2017-04-02 14:26:02

标签: ios swift

有一种简单的方法可以将旋转的平铺图像渲染为视图背景吗?有什么效果UIColor(patternImage:),但图像以某个角度旋转?

2 个答案:

答案 0 :(得分:1)

没有简单的方法可以实现这一点,至少在香草Swift中没有。我会使用另一个displayMetricTables('Oracle_BI*','dms_cProcessInfo') 作为原始视图的子视图,将其背景设置为平铺图像并向该特定视图添加UIView

答案 1 :(得分:1)

结果核心图像过滤器CIAffineTile完全符合我的要求。

extension UIImage {
    func tile(angle: CGFloat) -> CIImage? {
        return CIImage(image: self)?.applyingFilter(
            "CIAffineTile",
            withInputParameters: [
                kCIInputTransformKey: NSValue(
                    cgAffineTransform: CGAffineTransform(rotationAngle: angle)
                )
            ]
        )
    }
}

此函数创建一个具有无限范围的CIImage,可以裁剪并转换为真实图像。

let v = UIImageView()

// ...

let source = UIImage(named: "sample")!
let tiled = source.tile(angle: CGFloat.pi / 6)!
let result = UIImage(ciImage: tiled.cropping(to: v.bounds))

v.image = result