当前位置: 首页 > 面试题库 >

如何在Swift中替换这些屏幕尺寸和设备类型宏?

陈昂熙
2023-03-14
问题内容

回到Objective-C,我在constants.h文件中定义了以下宏:

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)
#define IS_IPAD    (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
#define IS_IOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
#define APP_DEFAULT_FONT_FACE @"HelveticaNeue-Light"
#define APP_DEFAULT_FONT_FACE_THIN @"HelveticaNeue-UltraLight"
#define APP_VERSION @"1.2"

我开始玩Swift,发现这些东西不再起作用了。因此,现在我应该如何定义这些宏,并检测该设备属于哪个家族?

如果Swift没有宏,执行该操作的语法是什么?


问题答案:

在这种情况下,定义这些常量的最简单方法似乎是使用let关键字。宏在Swift中不可用,因此在这种情况下,您必须使用常量(在这种情况下,就性能而言,它可能会更好):

let IS_IPHONE5 = fabs(UIScreen.mainScreen().bounds.size.height-568) < 1;      
let IS_IPAD = (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad);
let IS_IOS8 = (UIDevice.currentDevice().systemVersion.floatValue >= 8)
let APP_DEFAULT_FONT_FACE_NAME = "HelveticaNeue-Light";
let APP_DEFAULT_FONT_FACE_THIN_NAME = "HelveticaNeue-UltraLight";
let APP_VERSION_STRING = "1.2";

对于IS_IPHONE5常量,我曾经fabs避免可能的浮点舍入错误。我不确定它们是否会成为问题,但是最好还是要安全…

IS_IOS7宏在Swift中没有用,因为Swift 仅支持iOS7和更高版本(IS_IOS7始终YES在Swift程序中。)我IS_IOS8改为添加一个常量…



 类似资料:
  • 问题内容: 无论屏幕大小如何,我都想使用Swift代码在我的应用程序中正确定位项目。例如,如果我希望按钮的宽度为屏幕宽度的75%,则可以做为按钮的宽度。我发现可以通过在Objective-C中确定 不幸的是,我不确定如何将其转换为Swift。有人有主意吗? 谢谢! 问题答案: 在Swift 3.0中 快点做:做这样的事情: 那么您可以像这样访问宽度和高度: 如果您想要屏幕宽度的75%,则可以执行以

  • 问题内容: 我想知道是否可以使用tkinter计算屏幕尺寸。 我想要这样做,这样可以使程序在屏幕中央打开。 问题答案:

  • 问题内容: 嗨,我正在编写图形程序,我一直在寻找一种获取所使用屏幕物理尺寸的方法。我可以获得以像素为单位的屏幕大小以及逻辑分辨率。我似乎找不到任何地方可以获取任何显示器规格中始终具有的物理尺寸(例如19“-376 x 301 mm)。问题是,加载此信息时,此信息是否甚至还存储在OS中的任何位置?我正在编写的程序需要在Mac和Windows上运行。 谢谢! nt 问题答案: 我认为Java不可能实现

  • 问题内容: 我已经仔细阅读了http://developer.android.com/guide/practices/screens_support.html和其他相关网站中的文档,但我仍然对此表示怀疑。让我解释: 我已经为值,values-large和values- xlarge实现了dimens.xml,因此,例如,在平板电脑上运行时,我的Android应用程序很好。但是,我指定了填充,边距,

  • 因为有两种方法可以获得尺寸。从13级以上的API来看,这种方法对我很有效 14岁以下,这种方法对我有效 我可以得到所有API级别的屏幕大小吗???请帮帮我。

  • 问题内容: 我目前正在尝试设计一种可以兼容多种屏幕尺寸的布局。我正在设计的屏幕尺寸如下: 屏幕尺寸: 640x480 800x600 1024x768 1280x1024(及更大) 我遇到的麻烦是创建css3媒体查询,以便当窗口的宽度变为这些宽度之一时,布局会发生变化。以下是我当前正在使用的媒体查询的示例,但不适用于我,因此我想知道是否有人可以帮助我修复它。 我尝试使用一组新的媒体查询,但是它们仍