【问题标题】:Resizable UIView可调整大小的 UIView
【发布时间】:2017-08-21 17:43:17
【问题描述】:

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

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

我想到了将视图的变换设置回.identity,更改视图的大小,然后重新应用其变换的可能性,但我不确定如何实际实现这一点。

【问题讨论】:

  • 您根本不应该使用框架。如果有变换,框架就没有意义了。
  • 您应该在超级视图中处理手势。这将允许您将适当的转换作为增量应用到视图,并使计算更加容易。

标签: ios swift uiviewanimation


【解决方案1】:

应用转换后你不能使用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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多