iOS控制iPad特定的屏幕尺寸

时间:2013-02-25 03:09:19

标签: ios6 xcode4.6

我有一个基本问题,我希望得到解决。我几乎完成了我的通用应用程序,我被告知我需要专门为iPad屏幕(例如)标签,按钮定制UI控件。因此,例如,我在其中一个xib中的viewDidLoad事件中有以下代码。

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

这里_lblRandomDisplay是UILabel IBOutlet属性,我增加了iPad的字体并减少了iPhone的字体。这是接近iPad屏幕的方式还是iOS在iPad上查看时会自动缩放屏幕?作为旁注,我将xib文件名命名为filename~iphone.xib和filename~ipad.xib,并根据模拟器中选择的设备正确加载。

在这些行中,我有一个设置屏幕(不使用设置包),使用我为iPhone设计的UITableViews,并以编程方式从NSArray加载数据。当使用~ipad.xib设置在iPad上加载(从设置~iphone.xib复制控件)时,我没有专门为iPad调整行高以使其看起来更大。屏幕在iPad上显示OK,但看起来更小。这是正确的方法还是最好的方法是什么?

请告知。

1 个答案:

答案 0 :(得分:0)

您给出的建议,为屏幕大小自定义UIControl,似乎是错误的。一般而言,UIControl大小和文本大小应在所有设备上保持不变。这些项目的设计尺寸适合于可读性和可触摸性,两者都与屏幕尺寸无关。

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

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

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

  • 如果您为iPhone和iPad使用单个xib /故事板,并依靠自动布局(ios6 +)或自动调整遮罩(ios5-)来自动调整不同屏幕尺寸的布局。此方法可以 - 取决于您的设置 - 按比例调整视图的图像内容,但不会动态调整文本内容的大小,如果您想这样做,则必须在代码中进行调整。这不是一个设计应用程序的好方法,最好像你一样在单独的xib / storyboard中为iPhone和iPad制作专用设计。

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

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

你确实做了正确的事情改变不同设备的表格单元格的行高,但对于更大的屏幕,你当然可以让你的桌子更大,并容纳更多您视图中的表格单元格。

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