2013-07-05 118 views
-2

這是我當前的代碼,變量不工作,如果後聲明

CGRect screenRect = [[UIScreen mainScreen] bounds];  
CGRect *FullViewRect = NULL; 
if (screenRect.size.height == 568.0f) // iPhone 5 
    {CGRect FullViewRect = CGRectMake(0, 0, 320, 568);} 
else 
    {CGRect FullViewRect = CGRectMake(0, 0, 320, 480);} 

UILabel *Count3 = [[UILabel alloc] initWithFrame: FullViewRect]; 
Count3.backgroundColor = [UIColor blueColor]; 
[self.view addSubview:Count3]; 

但共3個記錄是不可見的? 沒有錯誤,但FullViewRect沒有任何價值。

回答

2

失敗是你的ifelse陳述的理由各申報FullViewRect,隱藏你真的想改變的人。修改你的代碼是這樣的:

CGRect screenRect = [[UIScreen mainScreen] bounds];  
CGRect FullViewRect; 
if (screenRect.size.height == 568.0f) // iPhone 5 
    {FullViewRect = CGRectMake(0, 0, 320, 568);} 
else 
    {FullViewRect = CGRectMake(0, 0, 320, 480);} 

UILabel *Count3 = [[UILabel alloc] initWithFrame: FullViewRect]; 
Count3.backgroundColor = [UIColor blueColor]; 
[self.view addSubview:Count3]; 
+0

還沒用指針好。 – 2013-07-05 11:13:22

+0

謝謝;固定。我理所當然地認爲,OP正在讓代碼構建......我猜,我的結局不好。 – mah

+0

我很害怕有這麼多(很多?哦諷刺)知識的人正在試圖「編程」「應用程序」... – 2013-07-05 11:15:38

5

我想知道如何編譯。它不應該。

UILabel *Count3 = [[UILabel alloc] initWithFrame: FullViewRect]; 

這是不對的,因爲FullViewRectCGRect *,但方法需要一個CGRect。 (爲什麼你會假設而不是閱讀文檔?)

此外,您在if語句的分支內重新聲明該變量。您的代碼需要(固定的變量名以小寫字母開頭):

CGRect fullViewRect; 
if (screenRect.size.height == 568.0f) { 
    fullViewRect = CGRectMake(0, 0, 320, 568); 
} else { 
    fullViewRect = CGRectMake(0, 0, 320, 480); 
} 

但是,這是過於基本的東西。如果你不明白這一點,你應該學習C語言,並且不要嘗試製作iOS應用程序。

一個進一步的錯誤是這樣的:

if (screenRect.size.height == 568.0f) 

決不嘗試浮點數比較喜歡這個,因爲他們並不確切。使用類似這樣的東西代替:

if (screenRect.size.height > 500.0f) 

或類似。