2011-06-05 61 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