Tim*_*imD 4 objective-c uiscrollview uiscrollviewdelegate ios
我正在遇到一个问题,让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];
}
Run Code Online (Sandbox Code Playgroud)
这在第一次使用此方法添加图像时正常工作.但是,如果再次触发此方法 - 即使添加与第一次相同的图像 - 后续图像在scrollView中以完整大小显示,并且无法缩小 - 仅放大.
我甩了contentSize,zoomScale,minimumZoomScale和maximumZoomScale滚动视图中的日志,他们每次都相同.所述minimumZoomScale被正确每次计算.
这就好像滚动视图被重绘minimumZoomScale为1.0,忽略了它已被明确设置的事实.我有什么明显的遗漏吗?
Dan*_*ler 13
问题似乎是 - 不确定这种行为是否记录在某处 - 重置内容大小而当前缩放比例设置为1.0以外的其他值.
修复很简单:在设置新内容大小之前将zoomScale属性重置为1.0 :
// See http://stackoverflow.com/questions/10586577
// first reset before new content size
scroller.zoomScale = 1.0f;
// set new content size
scroller.contentSize = newImage.size;
// ... adjust minimum/maximum zoom scales if needed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |