iPhoneは - どのようにイメージを切り出すためのサイズ変更可能な四角形を作るのですか?
-
21-09-2019 - |
質問
私は自分のイメージを切り出すための再かなりの長方形を作る問題を抱えています。私はこの絵のような何かを達成しようとしています:
http://img192.imageshack.us/img192/8930/customcropbox.jpg
さて、唯一の問題は、私が実際に開始するか見当もつかないです。私はトリミングのこの効果を達成することができますどのようにいくつかのアドバイスを必要としています。私は、どのようなドキュメントをよく読んでする必要がありますか?コアグラフィックスや石英は、2D?両方?私はそれのリリース日以来、iPhoneをコードしてきたが、私は実際にはコアグラフィックスを使ったことがないし、など任意のヘルプやアドバイスをいただければ幸いです。私はそれを達成する際にどのように行うのを示すために進むように私はここに私のコードを投げるでしょう。 :-)また、この長方形のボックスはちょうどそれをより面白くするUIImageViewで画面上を移動可能です。助けてくれてありがとう、私はこの目標を達成することを楽しみにしてます。
解決
ブックマーク私の質問するます。
私は限り私のトリミングビューの周りに移動すると、それは正確に画像の一部を示したようだが、scrollviewズームを扱うことは進行中の作業です。現在、私はImageViewのとプレーンUIViewのは、外のscrollviewの、UIScrollViewのに積層し、より高いレベルでのUIViewをトリミング私の習慣ですしています。私はそれを周りにドラッグに対処するためのタッチメソッドを実装し、またのdrawRectます:
- (void)drawRect:(CGRect)rect {
// Drawing code
if( self.image == nil )
return;
CGPoint offset = scrollView.contentOffset;
clipRect = CGRectOffset(self.frame, offset.x, offset.y);
UIImage *croppedImage = [image croppedImage:clipRect];
CGContextRef ctx = UIGraphicsGetCurrentContext();
[croppedImage drawAtPoint:CGPointMake(0, 0)];
}
注:私のトリミングビューはUIImageViewの子孫ではありません、それは他のビューから下にある画像を参照してばかりのUIViewの
"croppedImage" はUIImageと非常に簡単にカテゴリがあります:
@implementation UIImage (Resize)
- (UIImage *)croppedImage:(CGRect)bounds {
CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return croppedImage;
}
...
@end
私はUIScrollViewDelegate方法のいくつかを実装し、私は同期の私のトリミングビューを保つことができるので、スクロール活動を通過しました。ズームがあまりにも渡さが、前述したように、まだ希望として機能していません。
別のノート:私はそれがトリミングされた面積と同じに
で可能であるべきとするたびに新しいUIImageを生成する時間を無駄にする必要はないと思いますCGImageRef imageRef = CGImageCreateWithImageInRect([yourImage CGImage], bounds);
and
CGContextDrawImage(ctx, clipRect, imageRef);
他のヒント
クォーツはコアグラフィックスのためのマーケティング用語「で、あなたが開始する必要がどこのこと。あなたは、トラップ:) -drawRectに描画するUIView(フルカスタムを使用し、そのタッチを追跡し、その結果を描画することをお勧めします。あなたはUIGraphicsGetCurrentContext()を使用して、現在のグラフィックスコンテキストを取得することができます。それはあなたが始めるために十分なはずです!