变换使尺寸不同

时间:2016-07-08 07:39:22

标签: ios swift core-graphics core-animation

我有一个旋转盒子的功能,工作正常。当用户完成旋转时,我想让父视图适合旋转的框,但它只是完全超出比例,我无法弄清楚为什么,因为我只是交换旋转视图和旋转视图之间的尺寸和属性父母观点。

旋转:

func rotateThisView(gesture : UIRotationGestureRecognizer){
    if activated {
        if gesture.state == .Began || gesture.state == .Changed {
            wrapView.transform = CGAffineTransformRotate(wrapView.transform, gesture.rotation)
            gesture.rotation = 0
        }
    }
}

这可以正常工作,但是当用户完成编辑(旋转)时,我运行此功能:

    wrapPoints = wrapView.center
    wrapDimensions = wrapView.frame
    wrapRotation = wrapView.transform

    print(wrapPoints, wrapDimensions, wrapRotation)
    wrapView.frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)
    wrapView.transform = CGAffineTransformIdentity
    wrapView.center = center

    frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)
    center = wrapPoints
    transform = wrapRotation

这就是一切都不合适的地方。我已经包含两个屏幕截图来显示最新情况。父视图变大,旋转的视图变得异常大。

enter image description here enter image description here

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

您应该将wrapView.frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)的地点改为wrapView.transform = CGAffineTransformIdentity的地方

            wrapView.transform = CGAffineTransformIdentity
            wrapView.frame = CGRect(x: 0, y: 0, width: wrapDimensions.width, height: wrapDimensions.height)
            wrapView.center = center