【问题标题】:UIScrollView not respecting minimumZoomScale after changing the subview更改子视图后 UIScrollView 不尊重 minimumZoomScale
【发布时间】:2012-05-22 03:05:51
【问题描述】:

我在让 UIScrollView 正确更新以响应最小缩放比例的变化时遇到问题。

scrollview有一个UIImageView作为子view,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 中以全尺寸显示,并且无法缩小 - 只能放大。

我已经将滚动视图的contentSizezoomScaleminimumZoomScalemaximumZoomScale 转储到日志中,并且它们每次都相同。 minimumZoomScale 每次都被正确计算。

就好像使用 1.0 的 minimumZoomScale 重绘滚动视图,忽略它已被显式设置的事实。我在这里遗漏了什么明显的东西吗?

【问题讨论】:

  • 更新:如果图像拾取被取消,我已经通过对滚动视图进行核对来解决这个问题 - 从超级视图中删除它,然后设置为零。 didFinishPickingMediaWithInfo 方法然后重新创建它。它有效,但它似乎是一种解决问题的强硬方式......

标签: objective-c ios uiscrollview uiscrollviewdelegate


【解决方案1】:

问题似乎是 - 不确定此行为是否记录在某处 - 在当前缩放比例设置为 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

【讨论】:

  • 谢谢你救了我所有我的头发:) 非常感谢和尊重!
猜你喜欢
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
相关资源
最近更新 更多