我正在尝试在我的项目中的一个文件中定义常量。
我知道,我可以像下面那样定义它
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 };
是否有可能达到上述目的?
任何人都可以帮助我如何实现这一目标。任何帮助或任何指导都会有所帮助。
答案 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