作为iOS编程的新手,我在UIPopoverController中工作时对UIImageView和UIScrollView有点困惑。他们在这里......
一个UIViewController,其视图指向UIScrollView,其子视图是UIImageView。在UIViewController初始化期间,UIImageView的image属性由另一个类设置。
-(void)loadView{
self.scrollView=[[UIScrollView alloc]init];
self.imageView=[[UIImageView alloc]init];
self.imageView.contentMode=UIViewContentModeScaleAspectFit;
[self.scrollView addSubview:self.imageView];
self.view=self.scrollView;
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.imageView.image=self.image;
self.scrollView.contentSize=self.imageView.image.size;
}
然后我把UIViewController作为UIPopoverController的contentViewController,然后在响应块中弹出。
cell.actionBlock=^{
NSLog(@"Going to show image for %@", item);
BNRItemCell* strongCell=weakCell;
if([UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPad){
NSString* itemKey=item.itemKey;
UIImage* img=[[BNRImageStore sharedStore]imageForKey:itemKey];
if(!img){
return;
}
CGRect rect=[self.view convertRect:strongCell.thumbnailView.bounds fromView:strongCell.thumbnailView];
BNRImageViewController* ivc=[[BNRImageViewController alloc]init];
ivc.image=img;
self.imagePopover=[[UIPopoverController alloc]initWithContentViewController:ivc];
self.imagePopover.delegate=self;
self.imagePopover.popoverContentSize=CGSizeMake(600,600);
[self.imagePopover presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
};
当块运行时,弹出窗口显示但没有显示图像,我确信图像已正确设置,UIScrollView的contentSize也设置为图像大小。
当我将UIViewController的视图直接更改为UIImageView时,图像显示。我不确定会发生什么以及为什么滚动视图中的图像不可见。
答案 0 :(得分:0)
可能不同之处在于控制器调整其view
的大小以适应其容器边界,而您从未在此处设置图像视图的框架。 Here's an example显示了如何做到这一点。改为
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.imageView.image = self.image;
self.imageView.frame.size = self.image.size;
self.scrollView.contentSize = self.imageView.frame.size;
}
应该正确设置。
答案 1 :(得分:0)
虽然我仍然有些困惑但我已经修好了。
图片没有显示,因为我没有将框架设置为UIImageView驻留在UIScrollView中。当我通过提供CGRect数据使用initWithFrame时,图像以指定维度显示。
问题是,如果我将UIImageView作为子视图添加到UIScrollView,然后将UIScrollView作为UIWindow的根视图,在另一个试验项目中,使用&#init;只有没有指定的框架集,才能看到图像......
我应该何时为UIView设置框架以及何时不需要......