我试图将透视转换应用于一个视图(让我们称它为subview),该视图只沿其框架绘制一个正方形,在其superview中以水平方向居中,并且是其superview宽度的3/4:

我在用这个片段:
var rotationAndPerspectiveTransform = CATransform3DIdentity
rotationAndPerspectiveTransform.m34 = CGFloat(-1.0/280.0)
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 30.0 * CGFloat.pi / 180.0, 1.0, 0.0, 0.0)
subview.layer.transform = rotationAndPerspectiveTransform它完成了我需要的转换,但是有一个奇怪的效果--矩形的右侧是“剪裁”的:

是什么引起的?我怎么才能避免呢?
谢谢!
发布于 2017-01-13 14:01:51
啊,这是一个很好的边界和帧的问题。框架在转换后变得更宽,不再适合于边界。
由于我仍然希望它是以水平为中心的,所以这个剪贴画做到了这一点:
let transformedFrame = segmentView.layer.frame
let transformedBounds = segmentView.layer.bounds
let correctedBoundsX = (transformedFrame.width - transformedBounds.width) / 2
segmentView.layer.bounds = CGRect(x: correctedBoundsX, y: transformedBounds.origin.y, width: transformedBounds.width, height: transformedBounds.height)https://stackoverflow.com/questions/41633810
复制相似问题