2017-08-21 22 views
1

UIViewというカスタムを作成しています。これを回転したりサイズを変更したりすることができます。 UIViewの角をドラッグしてUIViewのサイズを変更できます。私はどれくらいドラッグして、UIViewのフレームをそれに応じて変更するかを計算します。サイズ変更可能UIView

ただし、回転ジェスチャ認識機能をビューに追加すると問題にぶつかります。ビューを回転させたり、変換を適用したりすると、ドラッグ距離を計算してビューのフレームを変更する方法はわかりません。追加された角度で物が置かれたり、トランスフォームのような他のトランスフォームがある場合、新しいビューと元のビューの幅と高さの変化をどのように計算できますか?

ビューのトランスフォームを.identityに戻して、ビューのサイズを変更してからトランスフォームを再適用する可能性を考えましたが、実際にこれを実装する方法はわかりません。

+1

フレームをまったく使用しないでください。変換がある場合、フレームは無意味です。 – matt

+0

スーパービューでジェスチャーを処理する必要があります。これにより、適切な変換をデルタとしてビューに適用し、計算をはるかに簡単にすることができます。 – clemens

答えて

0

変換を適用した後、あなたはidentityを適用し、フレーム

を変更知っているように次の2つのオプション

1ビューのcenter

2を使用して)最初に計算すべてを)持っているframe

を使用することはできません

for point 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 
関連する問題