如何为 iPhone 5 屏幕分辨率开发或迁移应用程序?

How to develop or migrate apps for iPhone 5 screen resolution?

提问人:Lukasz 提问时间:9/13/2012 最后编辑:Midhun MPLukasz 更新时间:1/30/2019 访问量:149979

问:

新的 iPhone 5 显示屏具有新的纵横比和新的分辨率(640 x 1136 像素)。

开发新的应用程序或将现有应用程序过渡到新的屏幕尺寸需要什么?

为了使应用程序在旧显示器和新的宽屏纵横比中都具有“通用性”,我们应该记住什么?

iOS 屏幕 iPhone-5

评论


答:

485赞 Filip Radelic 9/13/2012 #1
  1. 下载并安装最新版本的 Xcode
  2. 为您的应用设置启动屏幕文件(在目标设置的常规选项卡中)。这就是您使用任何屏幕的完整尺寸的方式,包括 iOS 9 中的 iPad 拆分视图大小。
  3. 测试您的应用程序,希望不要做任何其他事情,因为如果您正确设置了自动调整蒙版大小或使用自动布局,一切都应该神奇地工作。
  4. 如果没有,请调整视图布局,最好使用“自动布局”。
  5. 如果您必须专门为较大的屏幕做些什么,那么看起来您必须检查高度,因为似乎没有特定的 API。从 iOS 8 开始,还有一些尺寸类可以将屏幕尺寸抽象为垂直和水平方向的常规或紧凑尺寸,并且是调整 UI 的推荐方式。[[UIScreen mainScreen] bounds]

评论

1赞 Gordon Childs 9/13/2012
也许这是一个射杀信使的事情。新的分辨率和纵横比?新的自动旋转?不!实际上,更多的自动旋转控制可能会很好。
90赞 tvon 9/14/2012
值得注意的是,[UIImage imageNamed:@“background.png”]仍然只会加载“background.png”或“[email protected]”,如果存在“[email protected]”,则不会加载。
1赞 Lukasz 9/14/2012
添加“[email protected]”是否足够,或者我们可以/应该调整构建设置中是否有任何额外的选项?
3赞 Filip Radelic 9/14/2012
@Lukasz,支持 1136 像素的高度就足够了(也是唯一的方法)。你的应用是否能正确拉伸取决于你如何设置视图,但即使你对所有内容进行了硬编码,设置自动调整大小蒙版或自动布局也应该不会有很多工作。
1赞 NiKKi 9/20/2012
@FilipRadelic - 您指定的分辨率,即 1136*960,即 1136 * 640..??..
30赞 onegray 9/16/2012 #2

唯一真正需要做的是将名为“[email protected]”的启动图像添加到应用程序资源中,在一般情况下(如果您足够幸运),该应用程序将正常工作。

如果应用程序不处理触摸事件,请确保按键窗口具有适当的大小。解决方法是设置正确的框架:

[window setFrame:[[UIScreen mainScreen] bounds]]

迁移到 iOS 6 时,还有其他与屏幕尺寸无关的问题。有关详细信息,请阅读 iOS 6.0 发行说明

20赞 Manni 9/17/2012 #3

在这里你可以找到一个不错的教程(针对 MonoTouch,但你也可以将这些信息用于非 MonoTouch 项目):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5-ios-6-today/

  1. 为初始/默认屏幕(640 x 1136 像素)创建一个名称为“[email protected]"

  2. iOS 模拟器中,转到“硬件 -> 设备”菜单,然后选择“iPhone(视网膜 4 英寸)"

  3. 创建其他图像,例如背景图像

  4. 检测 iPhone 5 以加载您的新图像:

public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}
117赞 Sanjay Chaudhry 9/20/2012 #4

如果您有专为 iPhone 4S 或更早机型构建的 App,它将在 iPhone 5 上以黑边方式运行。

要使您的应用程序适应新的更高屏幕,您要做的第一件事是将启动图像更改为:[email protected]。其大小应为 1136x640(高x宽)。是的,在新的屏幕尺寸中拥有默认图像是让您的应用程序占据整个新 iPhone 5 屏幕的关键

(请注意,命名约定仅适用于默认映像。将另一个图像命名为“[email protected]”不会导致它被加载以代替“[email protected]”。如果需要为不同的屏幕尺寸加载不同的图像,则必须以编程方式执行此操作。

如果你非常非常幸运,那可能就是这样......但很有可能,您将不得不采取更多步骤。

  • 确保您的 Xib/视图使用自动布局来调整自身大小。
  • 使用弹簧和支柱调整视图大小。
  • 如果这对你的应用来说还不够好,请设计你的 xib/storyboard 对于一个特定的屏幕尺寸,并以编程方式重新定位 其他。

在极端情况下(当上述方法都不够时),设计两个 Xib,并在视图控制器中加载适当的 Xib。

要检测屏幕尺寸:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}

评论

0赞 Raheel Sadiq 9/24/2012
嗨,Sanjay,由于我们必须找到它的iPhone 5或更早版本,因此必须相应地调整所有内容的大小,就像我说我有一个高度为367的TableView,带有导航栏和标签栏,我将不得不为iPhone 5调整大小
2赞 valexa 10/19/2012
iPod touch呢?下一代iPhone呢?应该指的是屏幕尺寸,3.5英寸/4英寸,而不是iPhone / iPhone5
2赞 Kendall Helmstetter Gelner 4/1/2013
另一个需要注意的问题是,viewDidLoad 是在调整 xib 大小时调用的,因此,如果您根据 nib 中的内容进行任何计算,请注意位置可能会如何移动(或在 viewWillAppear 中进行上述计算)。
3赞 dbramhall 9/23/2012 #5

您可以添加以下代码:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }

评论

2赞 Filip Radelic 10/4/2012
这其实有点不对劲。任何运行 iOS 4.0 或更高版本的 iPhone 都会响应选择器,并且您的“标准分辨率”代码不会执行。scaleUIScreen
4赞 metaprogrammer 9/25/2012 #6

彼得,你真的应该看看Canappi,它为你做了这一切,你所要做的就是指定布局如下:

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

从那里,Canappi将生成正确的objective-c代码,该代码将检测运行应用程序的设备,并将使用:

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

Canappi 的工作方式类似于 Interface Builder 和 Story Board 的组合,只是它是文本形式。如果您已经有 XIB 文件,则可以转换它们,这样您就不必从头开始重新创建整个 UI。

评论

0赞 PeterK 9/26/2012
非常感谢元,我会看看这个,但我是一个非常新的程序员,真的很想学习如何在干净的 Objective-C 中处理这个问题。
22赞 SomaMan 10/11/2012 #7

有时(对于故事板前应用程序),如果布局要足够不同,则值得在 viewController init 中根据设备指定不同的 xib(请参阅此问题 - 您需要修改代码以处理 iPhone 5),因为如果您需要不同的图形,那么使用自动调整大小蒙版进行再多的摆弄也不起作用。

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {


...

这对于面向较旧 iOS 版本的应用程序很有用。

评论

0赞 Stunner 12/25/2012
+1 然而,需要厌倦的是未来的兼容性。目前,这段代码并不安全,因为它只考虑了iPhone 5设备,检查屏幕尺寸将是一个更安全的选择。
0赞 SomaMan 1/4/2013
没错 - 这可能是返回设备类型的实用程序的一部分 - 这只是一个示例,展示了如何使用不同的笔尖,而不是真正获取设备。
10赞 SkeletonJelly 10/27/2012 #8

我添加了新的默认启动图像,并且(在查看其他几个 SE 答案时...)确保我的故事板都自动调整了自身和子视图的大小,但 4 英寸的视网膜仍然是黑边的。

然后我注意到我的信息列表有一个“启动图像”的行项目设置为“默认 .png”,因此我将其删除,并且神奇地不再出现信箱。希望这能使其他人免于我所忍受的同样疯狂。

9赞 Mike 10/29/2012 #9

要确定您的应用是否可以支持 iPhone 5 Retina,请使用以下命令: (这可能更可靠地返回显示器类型、4S Retina 等,但正如下面所写,如果 iPhone 支持 iOS5 Retina 作为 YES 或 NO,它只会返回)

在通用的“.h”文件中添加:

BOOL IS_IPHONE5_RETINA(void);

在通用的“.m”文件中添加:

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}
12赞 Shimanski Artem 11/27/2012 #10

在这里解决了这个问题。只需在图像中添加 ~568h@2x 后缀,在 xib 中添加 ~568h 后缀即可。无需进行更多的运行时检查或代码更改。

评论

0赞 Shimanski Artem 11/30/2012
只需在项目中添加此类即可。您无需编写其他代码。例如,您有一个 xib 文件,其中包含分辨率为 320x480、640x960、640x1136 的背景图像(iPhone 3、iPhone 4、iPhone 5)。只需设置正确的自动调整大小蒙版并命名图像图像.png, [电子邮件保护], [电子邮件保护].
0赞 Adel 2/14/2013
@ShimanskiArtem但是我注意到有些组件跑到另一个位置!,你知道????
0赞 Shimanski Artem 2/22/2013
检查自动调整大小的掩码。我看不出其他原因。
6赞 infiniteLoop 11/28/2012 #11

我从来没有在任何设备上遇到过这样的问题,因为我有一个代码库,没有任何硬编码值。我所做的是将最大大小的图像作为资源,而不是每个设备一个。例如,我会有一个用于视网膜显示器,并将其显示为纵横比匹配,因此它将是每个设备上的视图。 例如,在运行时决定按钮的帧。为此,我使用专利视图的百分比值,例如,如果我希望宽度是父视图的一半,则取父视图的 50%,这同样适用于高度和中心。

有了这个,我什至不需要 xibs。

13赞 shankar 12/21/2012 #12

通过 XIB 迁移 iPhone5 和 iPhone4 很容易.........

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}
9赞 Bunyod 1/29/2013 #13

在文件中,您可以添加以下定义语句:constants.h

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)
7赞 Christopher 2/4/2013 #14

在横向模式下检查将失败。iPhone 5 仅在纵向模式下启动,但如果您想支持旋转,那么 iPhone 5“检查”也需要处理这种情况。bounds568

下面是一个处理方向状态的宏:

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

“preferredMode”调用的使用来自我几个小时前阅读的另一篇帖子,所以我没有想出这个想法。

7赞 DeveshM 2/16/2013 #15

您可以使用该功能并使用 iPhone 5 屏幕分辨率创建设计,它适用于 4 英寸和 3.5 英寸设备,但在这种情况下,您应该对布局管理器有足够的了解。Auto Layout

评论

0赞 jonypz 7/15/2013
但是,这不适用于不支持iOS 6的设备。
7赞 Mohammed Ebrahim 3/19/2013 #16

在单例类中尝试以下方法:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }
9赞 iutinvg 3/26/2013 #17

我想,它并非在所有情况下都有效,但在我的特定项目中,它避免了我重复 NIB 文件:

在某个地方,您可以根据屏幕高度进行以下定义:common.h

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

在基本控制器中:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}
2赞 Pranav Bhardwaj 4/3/2013 #18

在我看来,处理此类问题并避免检查设备高度所需的几个条件的最佳方法是使用视图的相对框架或您要添加到视图的任何 UI 元素,例如:如果您要添加一些 UI 元素,您希望在视图底部或标签栏上方,那么您应该将 y 原点相对于您的视图的高度或相对于选项卡栏(如果存在)以及我们也有自动调整大小属性。我希望这对你有用

5赞 Mutawe 4/29/2013 #19

您可以使用此定义根据屏幕尺寸计算是否使用 iPhone 5:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

然后使用一个简单的语句:if

    if (IS_IPHONE_5) {

    // What ever changes
    }
4赞 Robot1987 6/4/2013 #20

您可以手动检查屏幕尺寸以确定您使用的是哪台设备:

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}
6赞 Darshan Kunjadiya 6/29/2013 #21

首先显示此图像。在该图像中,您显示 Retina 4 支持的警告,因此单击此警告并单击添加,以便您的 Retina 4 启动画面自动添加到您的项目中。

Show image here

使用这段代码后:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }
3赞 BlackSheep 6/29/2013 #22

这是一个真正的通用代码,您可以创建 3 个不同的故事板:

设置您的项目通用模式,并使用 iPhone5 故事板设置您的主要故事 iPhone,使用 iPad 目标故事板设置主故事板,现在为 iphone 添加新的故事板目标并修改 iphone 4s 或更低版本的分辨率现在实现您的 AppDelegate.m

iPhone4/4s(与 3/3G 相同)一个用于 iPhone5,并使项目通用,为 iPad 提供新的 Storyboard 目标,现在在 AppDelegate.m 下添加以下代码:didFinishLaunching

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

因此,您已经为iPhone 3 / 3G / 4 / 4s / 5创建了一个通用应用程序,所有iPod和所有类型的iPad

请记住将所有 IMG 与 和 集成myImage.png[email protected]

8赞 mandeep 8/7/2013 #23

首先创建两个 xibs 并将所有委托、主类附加到xibappdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

您可以根据自己的要求在程序中的任何位置使用它,甚至可以在课堂上使用它。最重要的是,您已经创建了两个单独的文件ViewControllerxibiphone 4(320*480) and iphone 5(320*568)

1赞 Juniper Jones 8/30/2013 #24

您可以使用屏幕大小自动调整视图大小,而不是使用一组条件。

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

就我而言,我想要一个视图来填充顶部的一些输入字段和底部的一些按钮之间的空间,因此根据屏幕大小固定左上角和可变右下角。我的应用程序用相机拍摄的照片填充图像视图,所以我想要我能获得的所有空间。

1赞 Prad 1/26/2014 #25

如果需要将已有的应用转换为通用应用,则需要选择相应的 xib file->show Utilities-> Show Size inspector。

在大小检查器中,您可以看到自动调整大小,使用此工具可以转换为现有的 iOS 应用程序。

0赞 Alex Stone 5/8/2014 #26

使用 xCode 5,在 Project>General 上选择“迁移到资产目录”。

然后使用“在查找器中显示”来查找您的启动图像,您可以将其虚拟编辑为 640x1136,然后将其拖动到资产目录中,如下图所示。

确保 iOS7 和 iOS6 R4 部分的图像均为 640x1136。下次启动应用程序时,黑条将消失,您的应用程序将使用 4 英寸屏幕

enter image description here

0赞 Geet 7/8/2014 #27

我建议根据您的 UI 界面在您的应用程序中使用自动调整大小蒙版,它节省了很多麻烦,并且比为 iPhone 4 和 5 屏幕制作不同的 UI 更好。

0赞 Michal Gumny 10/6/2014 #28

值得注意的一点 - 在新的 Xcode 中,您必须将此图像文件 [email protected] 添加到资产中

0赞 vedrano 10/10/2014 #29

在 iOS 设备和 iOS 模拟器上进行测试时存在一个小问题。模拟器 (XCode 6.0.1) 似乎根据设备方向给出了宽度和高度的切换值。[[UIScreen mainScreen] bounds].size

因此,在确定正确的物理屏幕尺寸时,这可能是一个问题。此代码还有助于区分所有 2014 年。iPhone 型号代次:

  • iPhone4s
  • iPhone5(和 iPhone5s)
  • iPhone6(和 iPhone6+)

它也可以很容易地改变,以区分iPhone6和iPhone6+。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}
0赞 Praveen Matanam 1/6/2015 #30

将该功能用于视图。它将自动调整到所有分辨率。Auto Layout

为控制器名称后缀为 ~iphone 或 ~ipad 的控制器创建两个 xib。在编译时,Xcode 将根据设备采用正确的 xib。

如果要为 iPhone 和 iPad 创建单个 xib,并且视图足够简单,可以移植到 iPhone 和 iPad,请使用大小类。