2017-08-21 158 views
1

我正在构建自定义UIView,您可以旋转和调整大小。我可以通过拖动UIView的角来调整UIView的大小。我计算了我拖动了多少,然后相应地更改了UIView的框架。可调整大小的UIView

但是,一旦向视图中添加旋转手势识别器,我遇到了问题。如果我旋转或对视图应用变换,我不再知道如何计算拖动距离并更改视图的框架。我怎么能计算出我的新视图和原始视图之间的宽度和高度变化,当事物被放在一个附加的角度,或者如果他们有其他变换,如翻译变换?

我想过将视图的变换设置回.identity的可能性,更改视图的大小,然后重新应用其变换,但我不确定如何实际执行此操作。

+1

根本不应该使用该框架。如果有变换,帧是没有意义的。 – matt

+0

您应该处理超级视图中的手势。这将允许您将适当的转换作为增量应用于视图,并使计算更容易。 – clemens

回答

0

应用变换后,您不能使用frame

你有两个选择

使用您的视图

2)的center如你所知申请identity和变化框架

1)首先计算一切

对于第2点我已添加可能对您有用的示例

let transform = imageView.transform 
    imageView.transform = CGAffineTransform.identity 
    var rect: CGRect = imageView.frame 

    rect = // Change Rect here  

    imageView.frame = rect // Assign it 
    imageView.transform = transform // Apply Transform