我遇到了一个问题,让 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中以全尺寸显示,并且无法缩小——只能放大。
我已将scrollView 的contentSize
、和转储到日志中zoomScale
,并且它们每次都是相同的。每次都正确计算。minimumZoomScale
maximumZoomScale
minimumZoomScale
就好像 scrollView 正在用minimumZoomScale
1.0 重绘,忽略它已被显式设置的事实。我在这里有什么明显的遗漏吗?