ios - 尝试针对游戏的特定部分拆分 iPhone 和 iPad 尺寸

标签 ios objective-c xcode

在我的游戏中我有一个宾果游戏板,使用各种定义,与这个问题相关的是;

#define BTNNUMBER_SX     43// iPad should be 43
#define BTNNUMBER_SY     105 // iPad should be 85
#define BTNNUMBER_DX     47 // iPad should be 27
#define BTNNUMBER_DY     25 // iPad should be 15

目前,它们在 iPhone 上运行良好,但在 iPad 上间距不正确,我找出了差异并将它们写在定义旁边,但是,我正在尝试弄清楚如何拆分它们为 iPhone 显示一组值,为 iPad 显示另一组值?

在这里使用;

    for (int c = 0; c < _cardNumber; c++) {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if ( i == 2 && j == 2 ) {
                    float x = BTNNUMBER_SX + i * (BTNNUMBER_W + BTNNUMBER_DX);
                    float y = BTNNUMBER_SY + j * (BTNNUMBER_H + BTNNUMBER_DY);
                    float w = BTNNUMBER_W;
                    float h = BTNNUMBER_H;
                    x *= padScale;
                    y *= padScale;
                    w *= padScale;
                    h *= padScale;
                    x += _ivBingoPad[c].frame.origin.x;
                    y += _ivBingoPad[c].frame.origin.y;

                    _btnBingo[c] = [[BingoButton alloc] initWithFrame:CGRectMake(x,y,w,h)];
                    [_btnBingo[c] setTitle: @"" forState: UIControlStateNormal];
                    [_btnBingo[c] setImage:[UIImage imageNamed:@"bingo_free_button"] forState: UIControlStateNormal];
                    [_btnBingo[c] addTarget: self action:@selector( success ) forControlEvents: UIControlEventTouchUpInside];
                    [self.view addSubview: _btnBingo[c]];
#ifdef DEVELOPMENT
                    _btnBingo[c].enabled = YES;
#else
                    _btnBingo[c].enabled = NO;
#endif
                }
            }
        }
    }

也在这里使用;

if ([MainViewController isPad] == NO) {
        if (_blUpperScreen) {
            if (_cardNumber > 2)
                _btnBingo[2].hidden = true;
            if (_cardNumber == 4)
                _btnBingo[3].hidden = true;
        }
    }

    for (int c = 0; c < _cardNumber; c++) {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                float x = BTNNUMBER_SX + i * (BTNNUMBER_W + BTNNUMBER_DX);
                float y = BTNNUMBER_SY + j * (BTNNUMBER_H + BTNNUMBER_DY);
                float w = BTNNUMBER_W;
                float h = BTNNUMBER_H;
                x *= padScale;
                y *= padScale;
                w *= padScale;
                h *= padScale;
                x += _ivBingoPad[c].frame.origin.x;
                y += _ivBingoPad[c].frame.origin.y;

                if ( i == 2 && j == 2 ) {
                }
                else {
                    _btnNumberArr[i][j][c] = [[NumberButton alloc] initWithFrame:CGRectMake(x,y,w,h)];
                    _btnNumberArr[i][j][c].statusImage = [UIImage imageNamed:@"bingocard_select"];
                    _btnNumberArr[i][j][c].font = [UIFont boldSystemFontOfSize: 40*padScale];
                    [_btnNumberArr[i][j][c] setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];
                    [self.view addSubview: _btnNumberArr[i][j][c]];
                    [_btnNumberArr[i][j][c] addTarget: _btnNumberArr[i][j][c] action:@selector(onClick) forControlEvents: UIControlEventTouchUpInside];
                    [_btnNumberArr[i][j][c] setParam:_cardRep[c] :_globals :j :i :_bingoChecker :_btnBingo[c]];
                    if ([BingoCheckerPostageStamp hasPatternXY:_cardRep[c]:j:i] && profile.gameRoom.intValue == GAME_ROOM_POSTAGESTAMP) {
                        [_btnNumberArr[i][j][c] setBackgroundImage:[UIImage imageNamed:@"bingocard_pattern_mark"] forState:UIControlStateNormal];
                    }
                }
            }
        }
    }

最佳答案

这是一个想法 :)

#define IPAD  UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad

#define EXAMPLE (IPAD ? 24 : 35) // IPAD 24, Otherwise 35

关于ios - 尝试针对游戏的特定部分拆分 iPhone 和 iPad 尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787147/

相关文章:

ios - 什么是 Xcode "Background Processing"后台模式?

ios - 为什么不能将 UIImagePickerController 插入导航堆栈?

iphone - 无法使标签接收字符串

objective-c - 在 Swift 运行时创建 Objective-C 类对象,符合 Objective-C 协议(protocol)

ios 取消注册观察者

ios - 核心数据 : Expression tree is too large

ios - NSDate 和 AVPlayerItem.currentTime

ios - 如何在 WKWebView 隐藏时将黑屏更改为图像

ios - 将 SensibleTableView (STV) 的静态库与 cocoapods 一起使用

ios - Xcode 游戏崩溃并指向 SpriteNode 说 "EXC_BAD_ACCESS(code=1, address=0xa001800"