2016-07-08 97 views
0

我有一个旋转框的功能,可以正常工作。当用户完成旋转时,我想将父视图放到旋转的框中,但它只是完全不成比例,我不知道为什么,因为我只是在旋转后的视图和父视图之间交换了尺寸和属性。变换使尺寸不同

旋转:

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

希望有人能帮助我。

+0

你真的想改变它的框架与它的上海华? –

+0

是的,这是一个自定义的UIView类 – Imbue

回答

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 
+0

不幸的是没有区别 – Imbue

+1

你能提供一个示例项目吗?我们需要更多的信息来帮助你 –

+0

我不能遗憾。我通过围绕旋转视图和设置网站来解决这个问题。它看起来相当笨拙,但它起作用。尽管如此,我仍然希望看到如何解决这个问题 – Imbue