2013-08-05 68 views
1

我會用addSubview爲圖像添加一個標籤,但這不起作用。addSubview不起作用

這裏的代碼:

.h 
    UIImageView *bgimage; 
    IBOutet UILabel *loadingLabel; 


.m 
    loadingLabel.text [email protected]"......"; 
    bgimage = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 
    bgimage.image = [UIImage imageNamed:@"Wait.png"]; 
    [self.view addSubview:bgimage]; 
    [bgimage addSubview:loadingLabel]; 

截圖:

​​

「蒂什wird reserviert ......」 是loadinglabel是標籤768,16是在UIImage的

Screenshot 2

Th是從第二個答案的代碼「佈局」

回答

3

更改代碼...

.H

IBOutet UIImageView *bgimage; 
UILabel *loadingLabel; 

.M

bgimage.image = [UIImage imageNamed:@"Wait.png"]; 
loadingLabel = [[UILabel alloc] init]; 
loadingLabel.frame = CGRectMake(0, 0, 100, 50); 
loadingLabel.text = @"testing"; 
[bgimage addSubview:loadingLabel]; 

它將工作。

+0

好的,謝謝我會測試這段代碼evenig – Nils

+0

這意味着我需要在我的xib文件上使用UIImageView嗎?目前我沒有Uiimageview在我的xib文件上,只有標籤 – Nils

+0

你的UILabel被添加到xib文件中,而是在xib上添加UIImageView並在其上添加UILabel – shuvo

2

你不能添加子視圖到uiimageview,因爲drawRect:永遠不會被調用。 來源: 「」UIImageView類經過優化,可以將其圖像繪製到顯示屏上。 UIImageView不會調用子類的drawRect:方法。如果你的子類需要自定義繪製代碼,建議您使用的UIView作爲基類「從蘋果文檔:https://www.google.de/#bav=on.2,or.r_qf.&fp=90e2434f04e1ee9b&q=uiimageview+class+reference&safe=off

解決方案: 作爲建議,使用一個UIView同時包含標籤和ImageView的,然後使用UIView的-bringSubviewtoFront:標籤,你也可以使用一個UIViews backgroundimage來顯示你的圖像,然後在該視圖中有一個標籤作爲子類,這取決於你所處的情況,我猜想。

編輯:你應該讀這個: 我誤解了這個問題,看起來你可以添加子視圖到UIImageView,就像Zev在他的評論中指出的一樣,現在我猜測-bringSubviewToFront爲你做了訣竅,我的答案的其餘部分,雖然沒有真正有害,但是沒有必要。對不起。

+0

感謝您的解決方案:) – Nils

+0

@Nils - 實際上我的來源是離開,我錯過了我們的觀點一點點。但我很高興這個解決方案也適用於你的情況。當我找到它們時,我會仔細研究它並糾正我的答案和正確的來源。 – katzenhut

+0

是的,我認爲聽起來不對。我已經多次向UIImageView添加子視圖。 '-drawRect:'與'-layoutSubviews'不同。 –