可调整大小的 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
我正在构建一个可以旋转和调整大小的自定义 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