我使用以下代码来实现这一点
我在故事板中创建了3个带有uiImageView的滚动视图
@iboutlet var faces:[uiview]!
viewdidiload
var perspective:catTransform3D=catTransform3Identity
透视图.m34=-1.0/500.0
自我观察?.layer.sublayerTransform=透视
透视图=cattransform3drotate(透视图,cgfloat(-double.pi/4),1,0,0)
透视图=cattransform3drotate(透视图,cgfloat(-double.pi/4),0,1,0)
打印(透视)
self.view.layer.sublayerTransform=透视
//添加立方体面1
var变换:catransform3d=catransform3dmakestransform(0,0,50)
添加面(0,带transform:transform)
//添加立方体面2
转换=CatTransform3dMakeTranslation(50、0、0)
transform=cattransform3drotate(transform,cgfloat(double.pi/2),0,1,0)
添加面(1,带变换:变换)
//添加立方体面3
转换=CatTransform3dMakeTranslation(0,-50,0)
transform=cattransform3drotate(transform,cgfloat(double.pi/2),1,0,0)
添加面(2,带变换:变换)
addface函数
func addface(u index:int,withtransform-transform:cattransform3d){
让我们面对:uiview?=面[索引]
如果让Aface=脸{
self.view.addSubview(aface)视图
}
让集装箱尺寸:cgsize?=self.view.bounds.size
面对?.center=cgpoint(x:(集装箱尺寸?.宽度??0.0)/2.0,y:(集装箱尺寸?.高度??0.0)/2.0)
面对?.layer.transform=转换
}
输出

@IBOutlet var faces: [UIView]!
视图迪迪洛德
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)
添加面函数
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
}
产量
