0

私のアプリでは:

  • 私はclipsToBound=YESのビュー(UIView * myView)を持っています。

  • 境界の原点プロパティを変更するためのボタンがあります。

CGRect newRect = myView.bounds;
newRect.origin.x += 100;
myView.bounds = newRect;
myView.layer.frame = newRect;
  • 次に、ビューから画像を取得します。
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage_after = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage_after, nil, nil, nil);

思いもよらないイメージになります。iPhoneの画面に表示されている画像が欲しいです。

ここのコードへのリンク: http ://www.mediafire.com/?ufr1q8lbd434wu1

私を助けてください!

4

1 に答える 1

1

コンテキスト内で画像自体をレンダリングする必要はありません。これは常に同じ方法でレンダリングされます(画像を変更するのではなく、ビューの上方に移動します)。

画像の親ビューを次のようにレンダリングします。

UIGraphicsBeginImageContext(myView.superview.bounds.size);
[myView.superview.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage_after = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage_after, nil, nil, nil);

編集

ただし、スーパービューですべてをレンダリングしたくない場合があります:)

あなたの意見は次のように見えるかもしれません

MainView
   ImageView (myView)
   UIButton (ok button)
   UIButton (cancel button)

ここで、画像のスーパービューをレンダリングすると、ボタンを含むMainViewがレンダリングされます。

次のように、階層に別のビューを追加する必要があります。

MainView
  UIView (enpty uiview)
    ImageView (myView)
  UIButton (ok button)
  UIButton (cancel button)

これで、画像のスーパービューをレンダリングすると、その中に画像が含まれるだけになります。ボタンはレンダリングされません:)

于 2011-10-21T13:46:46.347 に答える