我知道這是不是編碼的一個很好的方式,但是我只是在做游戲,我從作業的行程Obj-C來Swift,但是我試圖讓它在我的設備上正常運行,這樣我可以回去參考一切。
所以,這實際上是一個臨時措施!我定義了幾個宏,
#define BTNNUMBER_W 60
#define BTNNUMBER_H 60
它們在代碼中被參考,在我真的無法拆分 if/else 陳述句的區域,所以想有效地除錯使用;
if(IS_IPHONE_OLD)
{
#define BTNNUMBER_W 60
#define BTNNUMBER_H 60
}
else if (IS_IPHONE_5)
{
#define BTNNUMBER_W 60
#define BTNNUMBER_H 60
}
else if (IS_IPHONE_6_6S_6P_6SP_7_8)
{
#define BTNNUMBER_W 30
#define BTNNUMBER_H 30
NSLog(@"iPhone 6 to 8");
}
else if (IS_IPHONE_7P_8P)
{
#define BTNNUMBER_W 60
#define BTNNUMBER_H 60
NSLog(@"iPhone 7P to 8P");
}
else if (IS_IPHONE_X)
{
#define BTNNUMBER_W 110
#define BTNNUMBER_H 110
}
正如已經說過的,這真的只是為了再次“讓它作業”,而我又重新完成了所有作業,但是非常感謝您的指點!
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IDIOM UI_USER_INTERFACE_IDIOM()
#define IPAD UIUserInterfaceIdiomPad
#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))
#define IS_IPHONE_OLD (IS_IPHONE && SCREEN_MAX_LENGTH == 480.0)
#define IS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)
#define IS_IPHONE_6_6S_6P_6SP_7_8 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)
#define IS_IPHONE_7P_8P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)
#define IS_IPHONE_X (IS_IPHONE && SCREEN_MAX_LENGTH == 812.0)
uj5u.com熱心網友回復:
在 C 和 Objective-C 中,使用前處理器#if而不是編程語言if:
#if IS_IPHONE_OLD || IS_IPHONE_5
#define BTNNUMBER_W 60
#define BTNNUMBER_H 60
#elif IS_IPHONE_6_6S_6P_6SP_7_8
#define BTNNUMBER_W 30
#define BTNNUMBER_H 30
// …
#endif
但是,這將不起作用,因為您的IS_IPHONE_OLDetc. 不是編譯時常量(它們也不是,因為同一個應用程式可以在多部手機上運行)。前處理器做簡單的文本替換,并且所有的它發生之前的任何代碼甚至決議(因此預-processor)。
您無法在運行時影響前處理器宏,但您只能在運行時知道螢屏大小……
相反,將宏切換到同名變數:
CGFloat BTNNUMBER_W;
CGFloat BTNNUMBER_H;
然后在使用它們之前運行的某些函式中,分配它們的值:
if (IS_IPHONE_OLD || IS_IPHONE_5) {
BTNNUMBER_W = 60;
BTNNUMBER_H = 60;
} // …
或者,將變數命名為更好的名稱,然后:
#define BTNNUMBER_W ([[AppDelegate instance] buttonNumberWidth])
在 Swift 中,使用計算屬性:
static var buttonNumberWidth: CGFloat {
let screenWidth = UIScreen.main.bounds.size.width
if screenWidth <= 480 {
return 30
} // …
}
static var buttonNumberHeight: CGFloat { buttonNumberWidth }
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/326243.html
下一篇:如何添加本地視頻?斯威夫特
