3

プロジェクトのファイルの 1 つで定数を定義しようとしています。

私は知っています、私はそれを以下のように定義できます

const CGSize kSize = { 46.f, 44.f };

しかし、私がこのように達成しようとしていること:

if device type iPad

const CGSize kSize = { 146.f, 144.f };

else

const CGSize kSize = { 46.f, 44.f };

上記の点を達成することは可能ですか?

どうすればこれを達成できますか。どんな助けやガイダンスも役に立ちます。

4

5 に答える 5

8

アプリがユニバーサル アプリの場合、コンパイル時にアプリが実行されるデバイスがわかりません (もちろん、iPhone アプリを iPad で実行できますが、iPhone のサイズは保持されます)。どのサイズが適切かを判断するには、実行時チェックが必要です。

UIUserInterfaceIdiom idiom = UI_USER_INTERFACE_IDIOM();

if (idiom == UIUserInterfaceIdiomPad) {
    // iPad
} else if (idiom == UIUserInterfaceIdiomPhone) {
    // iPhone
}
于 2013-05-27T08:03:25.613 に答える
4

これを次のように使用します。

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

if (IS_IPAD) {
 const CGSize kSize = { 146, 144 };
} else {
  const CGSize kSize = { 46, 44 };
}

お役に立てば幸いです。

于 2013-05-27T08:08:28.063 に答える
2
const CGSize kSize;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  kSize = { 146, 144 };
} else {
  kSize = { 46, 44 };
}

お役に立てれば。

于 2013-05-27T08:06:23.617 に答える
1

次のように達成できます。

#define isIpad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define kSizeIpad CGSizeMake(146.f, 44.f)
#define kSizeIPhone CGSizeMake(46.f, 44.f)

これで、コードが iPhone または iPad で実行されているかどうかを確認できます。

if (isIpad) {
    CGSize sizeIpad = kSizeIpad;
} else {
    CGSize sizeIphone = kSizeIPhone;
}

私の提案は、プロジェクトに 1 つの.hファイル (例: KConstand.h) を配置し、そこにすべての定数変数を定義することです。

例えば:

#ifndef Myproject_kConstant_h
#define Myproject_kConstant_h

#define isiPhone5 (CGRectGetHeight([UIScreen mainScreen].bounds) == 568) ? YES : NO
#define isiPhone (UI_USER_INTERFACE_IDIOM() == 0)

#define kSizeIpad CGSizeMake(146, 44)
#define kSizeIPhone CGSizeMake(46, 44)

#endif
于 2013-05-27T08:17:41.147 に答える
1

グローバルに定義します。

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)    
if(IS_IPAD)
    const CGSize kSize = { 146.f, 144.f };
else
    const CGSize kSize = { 46.f, 44.f };

次のようなすべてのクラスにチェックインします

if(IS_IPAD)
 // kSize........for iPad
else
 //---- else part --------
于 2013-05-27T08:09:28.897 に答える