删除Xcode 5中的Images.xcassets后的布局位置错误

时间:2013-10-31 06:30:29

标签: objective-c ios7 autolayout

生成问题的步骤

1)在 Xcode 5,OS X Mavericks 中,创建iOS “空应用程序”,将产品名称设置为“empty_project”,将组织名称设置为“org_name”,将公司标识符设置为“com.org_name”,将“类别前缀”保留为空,将“设备”设置为“通用” ,取消选中“使用核心数据”。点击“下一步”,然后点击“创建”

2)为Objective-C Automatic Reference Counting项目和“Build”中的`empty_project目标设置 NO empty_project 设置“页面。

3)转到AppDelegate.m,将- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法更改为:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    self.window.rootViewController = [[UIViewController new] autorelease];

    UIView* v1 = [[[UIView alloc] initWithFrame:CGRectMake(0, 20, 320, 568 - 20)] autorelease];
    v1.backgroundColor = [UIColor colorWithRed:1 green:.4 blue:1 alpha:1]; // pink color
    [self.window.rootViewController.view addSubview: v1];

    UIWebView* v2 = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 45, 320, 568 - 20 - 45 - 49)] autorelease];
    v2.backgroundColor = [UIColor colorWithRed:.5 green:1 blue:0 alpha:1]; // light green color
    NSURL *urlToLoad = nil;
    urlToLoad = [NSURL URLWithString:[NSString stringWithFormat:@"http://stackoverflow.com/"]];
    NSURLRequest *requestOBj = [NSURLRequest requestWithURL:urlToLoad];
    [v2 loadRequest:requestOBj];
    [v1 addSubview:v2];

    return YES;
}

4)运行模拟器以查看结果。从上到下,有一个20点高状态栏,白色背景,45点高粉红色边缘(使用导航栏高度),454点高UIWebView视图(因为568 - 20 - 45 - 49 = 454 ),底部有一个49磅高的粉红色边缘(使用标签栏高度):

enter image description here

向下滚动到网页末尾以查看底部边界是否按预期设置:

enter image description here

5)退出模拟器,使用“删除参考”删除 Images.xcassets 文件夹。

6)再次运行模拟器以查看结果。布局如下所示进行了更改:

屏幕顶部和底部有两个黑色边距,甚至状态栏也向下移动。

enter image description here

并滚动到网页的末尾,我们有一些隐藏在底部边缘的尾随部分:

enter image description here

7)退出模拟器并添加 Images.xcassets 文件夹,然后再次运行模拟器我们可以拥有原始正确的布局。

讨论

我想我已经触及了iOS 7中与自动布局相关的内容。我有另一个项目是在Xcode 4.6中创建的,现在以某种方式在Xcode 5中使用,没有 Images.xcassets 文件夹,该项目也有一些布局问题。

我该如何解决这个问题?我是否必须关闭自动布局?

参考

Apple's Auto Layout Guide

1 个答案:

答案 0 :(得分:1)

您已删除了一张4英寸的启动图片(它保存在Images.xcassets中)。这是Xcode为仅3.5英寸显示器构建应用程序的暗示。