gpt4 book ai didi

ios - CATransform3DRotate 之后的 View 裁剪

转载 作者:行者123 更新时间:2023-11-28 08:19:45 28 4
gpt4 key购买 nike

我正在尝试将透视变换应用于 View (我们称它为 subview),该 View 仅沿其框架绘制一个正方形,在其父 View 中水平居中并且是其父 View 的 3/4宽度: enter image description here

我正在使用这个片段:

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

哪个做了我需要的转换,但有一个奇怪的效果——矩形的右边部分被“剪裁”了:

enter image description here

是什么原因造成的?我该如何避免?

谢谢!

最佳答案

啊,这是一个古老的边界与框架问题。转换后框架变宽,不再适合边界。

因为我仍然希望它水平居中,所以这个片段起到了作用:

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)

关于ios - CATransform3DRotate 之后的 View 裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41633810/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com