最小ズームスケールの変更に応じてUIScrollViewを正しく更新する際に問題が発生します。
scrollviewにはサブビューとしてUIImageViewがあり、UIImageViewのimageプロパティは、UIPickerViewのdidFinishPickingMediaWithInfoメソッドに応答して設定されます。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *takenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
[self.imageView setImage:takenImage];
[self.imageView setFrame:CGRectMake(self.imageView.frame.origin.x, self.imageView.frame.origin.y, takenImage.size.width, takenImage.size.height)];
[self.scrollView setContentSize:CGSizeMake(takenImage.size.width, takenImage.size.height)];
[self.scrollView setMinimumZoomScale:[self.scrollView frame].size.width / takenImage.size.width];
[self.scrollView setMaximumZoomScale:2.0];
[self.scrollView setZoomScale:[self.scrollView minimumZoomScale] animated:YES];
[self dismissModalViewControllerAnimated:YES];
}
これは、この方法を使用して画像を初めて追加するときに正しく機能します。ただし、このメソッドが再度トリガーされると(最初と同じ画像を追加する場合でも)、後続の画像はscrollViewにフルサイズで表示され、ズームアウトすることはできません。ズームインするだけです。
contentSize
scrollViewの、、、およびをログzoomScale
にダンプしましたが、それらは毎回同じです。は毎回正しく計算されています。minimumZoomScale
maximumZoomScale
minimumZoomScale
minimumZoomScale
明示的に設定されているという事実を無視して、scrollViewが1.0で再描画されているかのようです。私がここで見逃している明らかな何かがありますか?