如何根据设备类型定义常量(iPad / iphone)

时间:2013-05-27 08:00:48

标签: iphone ios objective-c const

我正在尝试在我的项目中的一个文件中定义常量。

我知道,我可以像下面那样定义它

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

是否有可能达到上述目的?

任何人都可以帮助我如何实现这一目标。任何帮助或任何指导都会有所帮助。

5 个答案:

答案 0 :(得分:8)

如果你的应用程序是一个通用应用程序,那么你在编译时不知道你的应用程序将运行什么设备(当然你可以在iPad上运行iPhone应用程序,但他们保留他们的iPhone尺寸)。您需要运行时检查以确定适当的大小。

UIUserInterfaceIdiom idiom = UI_USER_INTERFACE_IDIOM();

if (idiom == UIUserInterfaceIdiomPad) {
    // iPad
} else if (idiom == UIUserInterfaceIdiomPhone) {
    // iPhone
}

答案 1 :(得分:4)

将此用作:

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

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

希望它对你有所帮助。

答案 2 :(得分:2)

const CGSize kSize;

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

希望这有帮助。

答案 3 :(得分: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 --------

答案 4 :(得分: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;
}

我的建议是在项目中放置一个.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