0

I have a fundamental question that I would like to get addressed. I'm almost done with my universal app and I was told that I need to specifically customize the UI controls for iPad screens (e.g) labels, buttons. So, for example, I have the following code in viewDidLoad event in one of my xibs.

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
    [_lblRandomDisplay setFont: [UIFont fontWithName: @"Helvetica Neue" size:100]];
}
else
{
    [_lblRandomDisplay setFont: [UIFont fontWithName: @"Helvetica Neue" size:250]];
}

Here _lblRandomDisplay is UILabel IBOutlet property and I increase the font for iPad and reduce it for iPhone. Is this the way to approach the iPad screens or does iOS automatically scale the screen when viewed on iPad?. As a side note, I have named the xib filenames as filename~iphone.xib and filename~ipad.xib and it loads correctly based on the device selected in the simulator.

In those lines, I have a Settings screen (not using the Settings bundle) using UITableViews that I have designed for iPhone and programmatically load data from NSArray. When loaded on iPad using the settings~ipad.xib (copied the controls from settings~iphone.xib), I haven't adjusted the row height specifically for iPad to make it look bigger. The screen shows OK on the iPad but it looks smaller. Is this the right approach or what is the best way to approach this?

Please advise.

4

1 回答 1

0

给你的建议,为屏幕尺寸定制 UIControls,似乎是错误的。UIControl 大小和一般的文本大小在所有设备上都应保持相同。这些项目的设计尺寸适合可读性和可触摸性,两者都与屏幕尺寸无关。

iOS 在设计时就考虑到了这一点。如果您使用 iPad 和 iPhone xib 或故事板制作通用项目,您会发现无论设备如何,用户界面小部件都是相同的像素/点大小(为了简单起见,我在这里忽略了视网膜/非视网膜的区别)。例如,标准按钮的默认大小为 73 x 43,两种情况下的字体大小均为 15pt。两个设备上的导航栏都是 44 像素/点高。这是应该的。如果我们假设 iPhone、iPad mini 或 iPad 上的阅读距离大致相同,则没有理由调整文本大小。为 iPad 重新设计的想法实际上是您可以在一个屏幕上获得更多信息,而不是相同信息的更大版本。

iOS“缩放屏幕”有两种情况:

  • 如果您创建一个仅限 iPhone 的应用程序并在 iPad 上运行它。然后有一个用户选项可以以双倍大小运行它。在这种情况下,包括字体大小在内的所有内容都按比例放大,但这是通过像素加倍完成的,因此效果非常模糊。看看它——你就会明白这正是你不应该以这种方式设计的原因

  • 如果您为 iPhone 和 iPad 使用单个 xib/storyboard,并依靠自动布局 (ios6+) 或自动调整掩码 (ios5-) 来自动调整不同屏幕尺寸的布局。此方法可以 - 根据您的设置 - 按比例调整视图的图像内容大小,但不会动态调整文本内容的大小,如果您想这样做,您必须在代码中进行调整。无论如何,这不是设计应用程序的好方法,最好像您所做的那样在单独的 xib/storyboards 中为 iPhone 和 iPad 进行专门的设计。

我希望当你说 iPad “看起来更小”时,你的意思是 UI 看起来更小,因为它在更大的屏幕上丢失了......但答案不仅仅是扩大数据的大小,而是重新考虑你的布局在每个屏幕上放置更多数据。这就是为什么苹果在 iPad 上提供了 SplitViewController 并引入了 Container ViewController 的模式。

我想知道您是否还提出了一个相关但单独的问题,即出于图形设计目的的视图比例大小问题(您提到字体大小为 100 和 250pt,而不是 UI 控件标签的常用大小)。您可能希望应用程序的外观随屏幕缩放,有点像所谓的可变窗口大小的流体网页设计方法。因此,例如,您可能有一个基于巨大字母“A”的图形设备,它会填满您的 iphone 屏幕,并希望该字母同样填满您的 ipad 屏幕。在这种情况下,您可能需要在代码示例中设置字体大小。

通过不为不同设备更改表格单元格的行高,您当然是在做正确的事情,但是对于更大的屏幕,您当然可以使表格高度更大,并在视图中容纳更多表格单元格。

所有这些评论都有些笼统,因为您没有发布足够详细的问题。发布一两张图片通常会有所帮助...

于 2013-02-26T04:22:02.597 回答