【问题标题】:iPad Font Size Increase for iPhone AppiPhone应用程序的iPad字体大小增加
【发布时间】:2012-10-31 09:59:24
【问题描述】:

我的 iPhone 应用在 iPad 上的 2x 模式下看起来很棒。唯一没有的是文字。这是我用来为某些变量定义字体大小的代码:

[letter setFont: [UIFont fontWithName:@"Helvetica" size:30]];

由于我在整个应用程序中使用了几种不同的字体大小,是否有一个简单的声明可以说明,如果在 iPad 上,大小:50?谢谢!

【问题讨论】:

  • 更好的解决方案是为 iPhone 和 iPad 构建具有两种不同用户界面的通用应用程序。在此应用程序中,您可以使用UI_USER_INTERFACE_IDIOM() 宏或[UIDevice userInterfaceIdiom] 方法检测它是 iPad 还是 iPhone。
  • 我赞同上述观点。除了游戏之外,纯粹按比例放大的 iPhone 应用几乎是不合适的。

标签: objective-c ipad uifont


【解决方案1】:

就像其他人提到的那样,拥有两个独立的界面通常会更好 - 但如果您的特定应用在扩展后仍然可以正常运行,那么这应该可以解决您的问题:

用途:

#define IS_PAD  (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)

确定应用程序是否在 iPad 上运行。然后,您可以使用三元运算符来选择合适的字体大小:

[letter setFont: [UIFont fontWithName:@"Helvetica" size:IS_PAD?50:30]];

这将使您在 iPad 上的字体大小为 50,在其他所有内容上为 30。

【讨论】:

  • 谢谢,很好的回答!我应该把这个初始行放在哪里,一个特定的文件或只是与字母字符串一起:#define IS_PAD UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone
  • 靠近源文件的顶部(例如,就在“@implementation”行下方)应该做得很好:)
  • 我在仅适用于 iPhone 的应用程序上进行了尝试,并在 iPad 上运行它,它总是会像 iPhone 一样返回,因为它在构建时是为 iPhone 构建的,因此 iPad 运行容器,它只是一个 iPhone 窗口。因此,iPad 上的 iPhone 窗口大小与普通 iPhone 相同。所以不能用这个宏来判断是 iPhone 还是 iPad。所以我相信这是不正确的。
  • @Popeye,这是一个非常不同的场景——这个解决方案旨在找到正在使用的界面,而不是设备,因为这正是 O.P. 所寻找的。由于您正在测试的应用程序仅针对 iPhone 设计,因此它将始终使用 iPhone 界面。如果您需要找到正在使用的实际设备,UIDevice 类(尤其是 [[UIDevice currentDevice] model])可能是您正在寻找的 - 但同样,这是一个非常不同的场景!
  • 尽管== 运算符的优先级很高,但我认为宏仍应括在括号中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 1970-01-01
  • 2012-05-08
  • 2021-03-25
  • 2011-12-23
  • 2011-09-16
  • 1970-01-01
相关资源
最近更新 更多