【问题标题】:Configure device specific global instance variables配置设备特定的全局实例变量
【发布时间】:2014-10-19 18:18:23
【问题描述】:

我目前正在编写一个通用应用程序,并希望根据设备全局设置某些参数,例如标准按钮大小。目前我正在使用:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    iVar = 88;
}
else {
    iVar = 44;
}

在不同的地方。但是,我只想运行一次,并将 ivar 设置在全局某个地方。我知道我可以在应用程序委托中执行此操作,一旦应用程序初始化,并在标头中声明变量,但我想知道是否有更优雅的解决方案是标准做法。

(我知道我可以使用 xcassets 使用本机图像大小,但我想要比这更多的控制)。

【问题讨论】:

    标签: ios objective-c xcode idioms ios-universal-app


    【解决方案1】:

    创建一个类Global.h 并在其中声明所有全局变量。只保留头文件,在YourProject-Prefix.pch中导入Global.h文件,如下:

    #ifdef __OBJC__
        #import <UIKit/UIKit.h>
        #import <Foundation/Foundation.h>
        #import "Global.h"
    #endif
    

    为了定义你的全局变量,只需打开全局文件并输入以下代码行,即:

    #define __metricsTableRowHeight 45
    #define __metricsTableSectionHeight 45
    #define __metricsTableSectionButtonHeight 57
    

    【讨论】:

    • 这些设备具体如何(即在运行时评估)?
    • 正如 Matthias 所说,有问题的 iVar 需要初始化为 2 个不同值中的 1 个,具体取决于设备......所以我需要在某个地方执行我的问题中的代码。
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多