私はのカスタムを作成するプロジェクトにいます。UIImagePickerController
(コントローラーがimagePickerController.allowsEditing=YES
の場合に表示されます)scrollViewDidZoomでcontentInsetを動的に調整するにはどうすればよいですか?私はUIScrollviewのUIImageViewのcontentInsetを最初に設定しました
crop an UIImage
下の図のような切り口の中に入れたいと思います。
そして私はcontentInset
を設定するためのいくつかのコードを作りました。
self.selectedImageView.backgroundColor = [UIColor redColor];
CGRect cropRect = [SKPhotoCropFrameView getCropRectFromOrientation:self.photoCropOrientation];
CGRect aspectFitRect = AVMakeRectWithAspectRatioInsideRect(self.selectedImageView.image.size, self.selectedImageView.frame);
CGFloat difference = fabsf(cropRect.size.height - aspectFitRect.size.height);
self.contentInset = UIEdgeInsetsMake(difference/2, 0, difference/2 + 20, 0); // 20 is status bar height
となります。
黒い領域がcontentInsetエリアです。
しかし、このscrollViewをつまんでズームインすると、何かが起こります。
私は動的にcontentInsetを調整する
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
に何かをしなければならないと思います。これどうやってするの?私に助けてください:)
そうでもないあなたの質問への答えが、あなたのアプローチは、Appleのとは異なり、それが問題です。画像が完全にズームアウトされたときにスクロールすることを許可していない場合、ピンチジェスチャーを使用しているときに画像の上部をズームインするだけではなりません。アップルが使用するアプローチを変更し、ズームの領域を制限するか、プログラムでズームを実行するためにいくつかのUI要素を使用する必要があります。ズームする領域を完全に制御できます。 – Eugene
@Eugeneご意見ありがとうございます。私のアプローチはAppleと全く同じだと思う。私は、デフォルトのUIImagePickerControllerを模倣します。私は、デフォルトのUIImagePickerController 'Move and Scale' Controllerを実装したいだけです。なぜこれがAppleのより洗練されたものと異なるのか説明してください。 –