2012-04-28 3 views

答えて

0

基本的な考え方:

  1. 選択した画像を使用して新しい一時-ImageViewのを作成します。
  2. これを元のImageViewの正確な位置にウィンドウに追加します。
  3. 元のイメージビューを削除する(必要な場合)
  4. temp-ImageViewを画面上の希望する位置に移動/拡大/縮小します。
  5. 最終的なImageViewを青い領域の目的の位置に追加します。
  6. temp-ImageViewを削除します。

あなたはといくつかの計算を行う必要があります - (CGRect)convertRect:(CGRect)RECTのfromView:(UIViewの*)ビュー わからないが、ピッカーはあなたの青い部分とは別のウィンドウに横たわっていたことがあります。

CGRect destRect; // position in window, height/width need to be flipped, so the size is correct after rotation 

// add a ContainerView so rotation-handling is easier, esp. durring moving/scaling 
UIView *containerView = [[UIView alloc] initWithFrame:destRect]; 

// set the frame of the imageView, origin 0/0 so rotation is easy to handle, height/width flipp back 
UIImageView *tempImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, destRect.size.height, destRect.size.width)]; 

// flip layer center as well 
[tempImageView setCenter:CGPointMake(camView.center.y, camView.center.x)]; 

// add the rotation 
[tempImageView setTransform:CGAffineTransformMakeRotation(M_PI_2)]; 

[tempImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; 
+0

私は実際にこれをしました。しかし、ここに問題があります: 1.myアプリは横長モードです 2. temp-ImageViewをウィンドウに追加すると、temp-Imageviewに回転効果があり、縦長モードでは正しく表示されますが、横向きモードでは正しく表示されませんそれは私が期待したことではありません。この問題を解決できますか? –

+0

アプリは常に横長モードですか?そうであれば、ハードコードされた90度回転をtemp-Imageviewに追加するだけで簡単です。そうしないと、デバイスの向きを評価する必要があります。私は私のポストに回転を処理するいくつかのコードスニペットを追加します。 –

+0

ご協力ありがとうございます。これは間違いなく機能します。しかし、あなたが知っている、このソリューションはほんの少し退屈であり、あまり優雅ではありません。それ以上のアイデアはありますか? –

関連する問題