可调整大小的 UIView

Resizable UIView

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

但是,一旦我向视图添加了旋转手势识别器,我就 运行 遇到了问题。如果我旋转视图或对视图应用变换,我将不再知道如何计算拖动距离和更改视图的框架。当事物以增加的角度放置或它们具有其他变换(例如平移变换)时,我如何计算新视图与原始视图之间的宽度和高度变化?

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

应用转换后不能使用frame

你有两个选择

1) 首先使用您的视图center计算所有内容

2) 如您所知,应用 identity 并更改框架

对于第 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