0

背景がUIImage透明な があります。この画像を回転するとき、グラフィックの周りのバウンディング ボックスを見つけたいと思います (つまり、透明でない部分を回転させると、透明な部分を含むUIImageView全体のバウンディング ボックスが見つかりますUIImage)。

私のためにこれを行う可能性のあるAppleライブラリはありますか? そうでない場合、これを行う方法を知っている人はいますか?

4

1 に答える 1

1

あなたの質問を正しく理解していれば、uiimageview のフレーム (境界ではない) を取得してから、個々の cgpoints を取得し、これらのポイントを明示的に変換して、変換された四角形を取得できます。Apple のドキュメントには次のように書かれているため です。関数 CGRectApplyAffineTransform を呼び出すことで、CGRect 構造体を操作できます。この関数は、渡された四角形の変換されたコーナー ポイントを含む最小の四角形を返します。ポイントを 1 つずつ変換すると、この自動修正動作を回避できます。

CGRect originalFrame = UIImageView.frame;
CGPoint p1 = originalFrame.origin;
CGPoint p2 = p1; p2.x += originalFrame.width;
CGPoint p3 = p1; p3.y += originalFrame.height;

//Use the same transformation that you applied to uiimageview here
CGPoint transformedP1 = CGPointApplyAffineTransform(p1, transform);
CGPoint transformedP2 = CGPointApplyAffineTransform(p2, transform);
CGPoint transformedP3 = CGPointApplyAffineTransform(p3, transform);

これで、これらの 3 点から新しい長方形を定義できるはずです (幅と高さは 3 点から計算できるため、4 番目の長方形はオプションです。注意すべき点の 1 つは、cgrect が定義されているため、この新しい長方形を cgrect に格納できないことです)。辺が常に x 軸と y 軸に平行になるように、原点とサイズ Apple の cgrect 定義では、回転した四角形を格納することはできません。

于 2013-01-27T22:38:54.577 に答える