如何设置UIScrollView像3D Square

Khu*_*sai 11 3d uiimageview ios swift

我正在制作照片编辑应用程序,我有3个Scrollviews和UIImageview,我想将ScrollViews设置为如下

在此输入图像描述

我曾尝试过" Scenekit ",但它不起作用,因为我想要ScrollableView.

基本上我想创建3D拼贴画
有没有其他方法可以做到这一点?

是否可以像3d Square一样设置UIScrollView?

Khu*_*sai 6

我使用CATransform3D使用以下代码实现了这一点

我在StoryBoard中用UIImageview创建了3个Scrollview

@IBOutlet var faces: [UIView]!
Run Code Online (Sandbox Code Playgroud)

ViewDidiLoad

    var perspective: CATransform3D = CATransform3DIdentity
    perspective.m34 = -1.0 / 500.0

    self.view?.layer.sublayerTransform = perspective

    perspective = CATransform3DRotate(perspective, CGFloat(-Double.pi / 4), 1, 0, 0)
    perspective = CATransform3DRotate(perspective, CGFloat(-Double.pi / 4), 0, 1, 0)

    print(perspective)

    self.view.layer.sublayerTransform = perspective

    //add cube face 1
    var transform: CATransform3D = CATransform3DMakeTranslation(0, 0, 50)
    addFace(0, withTransform: transform)

    //add cube face 2
    transform = CATransform3DMakeTranslation(50, 0, 0)
    transform = CATransform3DRotate(transform, CGFloat(Double.pi / 2), 0, 1, 0)

    addFace(1, withTransform: transform)

    //add cube face 3
    transform = CATransform3DMakeTranslation(0, -50, 0)
    transform = CATransform3DRotate(transform, CGFloat(Double.pi / 2), 1, 0, 0)

    addFace(2, withTransform: transform)
Run Code Online (Sandbox Code Playgroud)

addFace功能

func addFace(_ index: Int, withTransform transform: CATransform3D) {
    let face: UIView? = faces[index]

    if let aFace = face {
        self.view.addSubview(aFace)
    }

    let containerSize: CGSize? = self.view.bounds.size

    face?.center = CGPoint(x: (containerSize?.width ?? 0.0) / 2.0, y: (containerSize?.height ?? 0.0) / 2.0)
    face?.layer.transform = transform
}
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述