-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は であるため、これは間違っていますCGRect *が、メソッドは を想定してい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 アプリケーションを作成しようとしないでください。

もう1つのエラーは次のとおりです。

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

正確ではないため、このような浮動小数点数を比較しようとしないでください。代わりに次のようなものを使用してください。

if (screenRect.size.height > 500.0f)

または類似。

于 2013-07-05T11:11:54.713 に答える
2

失敗する理由は、ifandステートメントがそれぞれnewelseを宣言しているため、実際に変更したいものが隠されているためです。コードを次のように変更します。 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 に答える