2013-07-17 77 views
1

我需要通過編程方式使用UILabel子視圖創建UIView,因爲它比動畫效果更好。雖然我無法讓UIView識別UILabel。這裏是我的代碼viewDidLoad中:UIView無法識別子視圖

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(764, 94, 200, 100)]; 
[label setText:@"Hello"]; 
[label setTextColor:[UIColor redColor]]; 
[label setBackgroundColor:[UIColor clearColor]]; 

UIView *hintView = [[UIView alloc]initWithFrame:CGRectMake(764, 94, 240, 198)]; 
[hintView setBackgroundColor:[UIColor colorWithRed:(34/255.f) green:(59/255.f) blue:(27/255.f) alpha:(255/255.f)]]; 

[hintView addSubview:label]; 
[self.view addSubview:hintView]; 

NSLog(@"subview %@", hintView.subviews); 

感謝

+0

你是說你的日誌不顯示標籤?我複製並粘貼了你的代碼,它對我有用。 – rdelmar

+0

我在你的問題有一個小的懷疑是標籤沒有出現在視圖 – Romance

+0

「我需要用UILabel子視圖以編程方式創建一個UIView,因爲它對動畫效果比IB好。」要小心這樣的評論,他們非常主觀,可能無關緊要。它甚至讓我懷疑一件事或兩件事:你也有很多絕對的硬編碼點和大小,這往往使工作變得脆弱。任何支持iPhone 5的人都依賴於iPhone 4的屏幕尺寸,或者任何人只能依靠肖像來支持風景,或者任何曾經爲Android開發過的人都可以告訴你他們的痛苦。嘗試做出相關的陳述。 – SK9

回答

3
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(764, 94, 200, 100)]; 

要設置寬邊框試試這個

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 100)]; 
1

變化yourLable.frame.origin.x以上之間(0) to (320 - withOfYourLabel)

代碼是相同的FO [R您的自定義UIView(設置X

如果你希望得到您的自定義視圖的子視圖然後按照

for(UIView *subView in hintViewsubviews) 
{ 
    /// here you got all subview of hintView 

    if([subView isKindOfClass:[UILabel class]]) 
    { 
      // here you can also check that subView is UILabel or not ? 
    } 
} 
0

你正在服用相同的幀大小的兩個的UIView和Label.bcz你沒有得到正確的輸出。參見我對你做的改變代碼並試試這個

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(hintView.frame.origin.x+15, hintView.frame.origin.y+50, hintView.frame.size.width-60, hintView.frame.size.height-100)]; 
[label setText:@"Hello"]; 
[label setTextColor:[UIColor redColor]]; 
[label setBackgroundColor:[UIColor clearColor]]; 

UIView *hintView = [[UIView alloc]initWithFrame:CGRectMake(764, 94, 240, 198)]; 
[hintView setBackgroundColor:[UIColor colorWithRed:(34/255.f) green:(59/255.f) blue:(27/255.f) alpha:(255/255.f)]]; 

[hintView addSubview:label]; 
[self.view addSubview:hintView]; 

NSLog(@"subview %@", hintView.subviews); 
+0

這會給你編譯時錯誤,因爲你在聲明之前使用'hintView'(line1)(line5)。另外,當在超視圖中添加時,子視圖座標系從(0,0)開始。所以你需要說'UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(15,50,hintView.frame.size.width-60,hintView.frame.size.height-100)];'。 – Amar