我遇到了一個問題,即在響應最小縮放比例更改時正確更新UIScrollView。更改子視圖後,UIScrollView不尊重minimumZoomScale
滾動視圖具有一個UIImageView作爲一個子視圖,和的UIImageView的圖像特性是響應於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中以全尺寸顯示,並且不能縮小 - 只能放大。
I'已將scrollView的contentSize
,zoomScale
,minimumZoomScale
和maximumZoomScale
轉儲到日誌中,並且它們每次都是相同的。每次正確計算minimumZoomScale
。
就好像scrollView正在重畫一個minimumZoomScale
爲1.0,而忽略了它被明確設置的事實。有什麼顯而易見的,我在這裏失蹤?
更新:通過的摧毀了滾動,如果圖像拍攝被取消我解決問題的工作 - 從superView中刪除它,然後設置爲零。 didFinishPickingMediaWithInfo方法然後重新創建它。它的工作原理,但它似乎是一個解決問題的笨手笨腳的方式... – TimD