-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];

但是 Count3 不可见?没有给出错误,但 FullViewRect 没有价值。

4

2 回答 2

5

我想知道这是如何编译的。它不应该。

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

这是错误的,因为FullViewRect是 a CGRect *,但该方法需要 a 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)

或类似的。

于 2013-07-05T11:11:54.713 回答
2

它失败的原因是你的ifandelse语句都声明了一个new 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];
于 2013-07-05T11:12:20.917 回答