2013-07-05 82 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) 

或类似。