加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 更改子视图后UIScrollView不遵守minimumZoomScal

发布时间:2020-12-16 10:31:31 所属栏目:百科 来源:网络整理
导读:我正在遇到一个问题,让UIScrollView正确更新,以响应最小缩放比例的变化. scrollview有一个UIImageView作为子视图,UIImageView的image属性是为响应UIPickerView的didFinishPickingMediaWithInfo方法而设置的: - (void)imagePickerController:(UIImagePickerC
我正在遇到一个问题,让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.

就像使用minimumZoomScale 1.0重新绘制scrollView一样,忽略了它已被显式设置的事实.我有什么明显的遗漏吗?

解决方法

问题似乎是 – 不确定这种行为是否记录在某处 – 重置内容大小而当前缩放比例设置为1.0以外的其他值.

修复很简单:在设置新内容大小之前将zoomScale属性重置为1.0:

// See https://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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读