2011-06-05 56 views
0

你好我无法弄清楚为什么UIImageView不想显示在UIScrollView。 现在这里有一点点抓住,我从图书馆抓取图片并将其添加到UIScrollView - 这似乎并不奏效。UIImageView不显示在UIScrollView

但是如果我正好在“做负载”的方法,然后它工作得很好添加图片: [代码]

UIImageView *tmp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"P3130016.JPG"]]; 

[scrollView setScrollEnabled:YES]; 
[scrollView setContentSize:CGSizeMake(800, 800)]; 
[scrollView addSubview:imageView]; 

我不知道为什么,或者是问题,请指教!

+0

调试,并确保你没有在tmp中得到“nill” – 2011-06-05 18:09:03

+0

图像文件是否存在/添加到项目中? – Luke 2011-06-05 18:11:07

+0

你可以发布你的UIImagePickerControllerDelegate代码,你从你的库中选择一张图片后设置UIImageView图像值? – bdparrish 2011-06-05 18:18:55

回答

1

我对你的实现有些困惑,因为你没有发布你的所有代码,你正在初始化一个'tmp'imageview,但是我看不到它在哪里被使用。

我要persume你需要它已被初始化后,目前UIImageView没有框架,因此不会在视图中绘制定义UIImageView的框架。

可以设置在框架像这样:

UIImageView *tmp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"P3130016.JPG"]]; 

tmp.frame = CGRectMake(x,y,width,height); 

这些值需要是浮点值,其中x和y是从屏幕的左上方锚定。因此CGRectMake(0,0,100,100)会在屏幕的左上方画一个100乘100的正方形。您可以在文档here中找到更多信息。

然后将其添加到滚动型:

[scrollView addSubview:tmp]; 

还值得一提的是,您的* TMP的UIImageView正在泄漏内存,我建议将其添加到在初始化时自动释放池:

UIImageView *tmp = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"P3130016.JPG"]] autorelease]; 
+0

'initWithImage:'方法将帧设置为图像大小。 – Desdenova 2011-06-05 21:57:23

+0

可以在Interface Builder中设置宽度和高度吗? 例如,当你将UIImageView拖放到UIScrollView? – MeIr 2011-06-06 00:29:56

+0

啊,我没有意识到它设置了图像框架本身,很抱歉,但我的答案是空的 – Alex 2011-06-06 10:10:28

0

如果在加载滚动视图后向滚动视图添加图像,则需要明确告诉视图重绘。

[scrollView setNeedsDisplay]; 

一个iOS视图尽可能少地绘制自己,所以无论何时需要显示更改,您都需要明确地通知视图。有关更多信息,请参阅UIView setNeedsDisplay

+0

那么它坠毁,但我很快找到解决方案: [scrollView setNeedsDisplay]; 但是这也不起作用,图像根本没有出现:( – MeIr 2011-06-05 18:58:21