这是一个创建于 4342 天前的主题,其中的信息可能已经有所发展或是发生改变。
最近刚开始跟着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不够?
5 条回复 • 1970-01-01 08:00:00 +08:00
|
|
1
ultragtx 2012-07-15 23:59:09 +08:00
maximumzoomscale 是不也要设置一下
|
|
|
2
Cwind 2012-07-16 00:06:38 +08:00
@ ultragtx 这个我在Storyboard里直接设成100了,后面也没改过,应该没没关系吧
|
|
|
3
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]; 这样虽然把问题解决了,但是很蛋疼啊
|
|
|
4
zhigang1992 2012-07-16 21:07:46 +08:00 1
记得OffSet, 则个的确特别蛋疼。我也搞了好久,可以看看10年WWDC里面的例子,那个Photo的。。。
|
|
|
5
Cwind 2012-07-16 21:33:46 +08:00
|