SplitView模式下ScrollView图片显示问题

2012-07-15 23:47:08 +08:00
 Cwind
最近刚开始跟着cs193学iOS开发,今天在做Assignment 4的时候碰到了一个问题。这个作业的目标大致就是从Flickr上获取Top Place信息到TableView上,然后点击cell显示对应的图片。为了防止图片缩小过头弄的很难看,所以我想对minimumZoomScale和图片初始显示状态做下设置,以下是部分相关代码:
- (void)setPhoto:(NSDictionary *)photo
{
_photo = photo;
[self refresh];
}
- (void) refresh
{
dispatch_queue_t downloadQueue = dispatch_queue_create("download",NULL);
dispatch_async(downloadQueue, ^{
NSURL *url = [FlickrFetcher urlForPhoto:self.photo format:FlickrPhotoFormatLarge];
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
dispatch_async(dispatch_get_main_queue(), ^{
self.scrollView.zoomScale = 1;
self.imageView.image = image;
self.scrollView.contentSize = self.imageView.image.size;
self.imageView.frame = CGRectMake(0,0,self.imageView.image.size.width,self.imageView.image.size.height);
[self zoomSet];
});
});
dispatch_release(downloadQueue);
}

-(void) zoomSet
{
CGRect bounds = self.scrollView.bounds;
self.scrollView.minimumZoomScale = MAX(bounds.size.width/self.imageView.image.size.width, bounds.size.height/self.imageView.image.size.height);

self.scrollView.zoomScale = self.scrollView.minimumZoomScale;
}

现在的问题是当minimumZoomScale小于1的时候没有问题,而大于1的时候只有显示第一张图片的时候正常,之后的图片初始位置和缩放状态都不对。
是不是光设置self.scrollView.zoomScale = 1不够?
3386 次点击
所在节点    iDev
5 条回复
ultragtx
2012-07-15 23:59:09 +08:00
maximumzoomscale 是不也要设置一下
Cwind
2012-07-16 00:06:38 +08:00
@ultragtx 这个我在Storyboard里直接设成100了,后面也没改过,应该没没关系吧
Cwind
2012-07-16 20:38:22 +08:00
继续昨天的问题,更改zoomScale会影响imageView.frame对吧,问题是如果图片够大,这里的zoomScale小于1,那么之后执行self.scrollView.zoomScale = 1这句,imageView.frame又会放大回来,而如果zoomScale大于1比如1.5,那么之后再执行self.scrollView.zoomScale = 1对imageView.frame却没有影响,于是imageView.frame.size与imageView.bounds.size之间一直存在1.5的比例关系,导致图片显示缩水,这是为什么呢?
现在我只能用一个很笨的办法,把self.imageView.image = image这句替换成
[self.imageView removeFromSuperview];
UIImageView *view = [[UIImageView alloc] initWithImage:image];
self.imageView = view;
[self.scrollView addSubview:self.imageView];
这样虽然把问题解决了,但是很蛋疼啊
zhigang1992
2012-07-16 21:07:46 +08:00
记得OffSet, 则个的确特别蛋疼。我也搞了好久,可以看看10年WWDC里面的例子,那个Photo的。。。
Cwind
2012-07-16 21:33:46 +08:00
@zhigang1992 好的,我去看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/42457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX