0

我正在制作一个 iPhone 应用程序,在这个应用程序中用户可以发送短信。在我的 iPhone 4 上,我的屏幕很完美,但在我的 iPhone 5 上,我得到了一个空白框。

仅限 iPhone。iOS 6x

截图(iphone5):http : //i.stack.imgur.com/ZOqu1.png

在此处输入图像描述

#import "smsview.h"

@interface smsview ()

@end

@implementation smsview

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    [self dismissModalViewControllerAnimated:YES];

    if (result == MessageComposeResultCancelled)
        NSLog(@"Message cancelled");
    else if (result == MessageComposeResultSent)
        NSLog(@"Message sent");
    else
        NSLog(@"Message failed");
}

- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    if([MFMessageComposeViewController canSendText])
    {
        controller.body = bodyOfMessage;
        controller.recipients = recipients;
        controller.messageComposeDelegate = self;
        [self presentModalViewController:controller animated:YES];
    }
}


-(IBAction)Text:(id)sender
{
    {
        [self sendSMS:@"" recipientList:[NSArray arrayWithObjects:@"+1-234-567-8910", nil]];
    }
}


- (void)viewDidLoad
{
    [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end
4

1 回答 1

2

如果您失败,请按照以下步骤操作。

  1. 如果不从这里下载,您使用的是最新版本的 Xcode 。

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

  3. 为您的应用设置 4 英寸的启动图像。这就是您获得 1136 像素屏幕高度的方式(没有它,您将获得 960 像素,顶部和底部有黑色边距),为了使您的应用程序适应新的更高屏幕,您要做的第一件事是将启动图像更改为:默认 568h@2x.png。它的大小应为 1136x640 (HxW)。是的,在新的屏幕尺寸中使用默认图像是让您的应用程序占据整个新 iPhone 5 屏幕的关键。

  4. 如果您正确设置了自动调整大小的蒙版,希望一切正常。

  5. 如果您没有这样做,请使用适当的自动调整大小掩码调整您的视图布局,或者如果您只想支持 iOS 6,请查看 Auto Layout。

  6. 如果您必须专门为更大的屏幕做一些事情,那么看起来您必须检查[[UIScreen mainScreen] bounds](或 applicationFrame,但如果它存在,则需要考虑状态栏高度)的高度,因为似乎没有特定的 API那。

例如:

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    //iPhone 4 specific
} else {
    //iPhone 5 specific
}

希望这能解决您的问题。

于 2013-03-13T09:44:53.273 回答