在CATransform3DRotate之后查看剪辑

时间:2017-01-13 11:38:23

标签: ios swift quartz-graphics

我尝试将视角转换应用于视图(让我们称之为subview)只沿其框架绘制一个正方形,在其超视图中水平居中并且是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

导致它的原因是什么?我怎么能避免它?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

因为我仍然希望它能够水平居中,所以这个剪辑完成了诀窍:

class Order extends OrderCore
{

    public function __construct($id = null, $id_lang = null)
    {
        parent::__construct($id, $id_lang);

        self::$definition['fields']['deldate'] = array('type' => self::TYPE_STRING);
        Cache::clean('objectmodel_def_Order');

    }

}