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

Posted

技术标签:

【中文标题】在 Xcode 5 中删除 Images.xcassets 后布局位置错误【英文标题】:Layout position error after deleting Images.xcassets in Xcode 5 【发布时间】:2013-10-31 06:30:28 【问题描述】:

产生问题的步骤

1) 在 Xcode 5, OS X Mavericks 中,创建一个 ios "Empty Application",将 Product Name 设置为 "empty_project",将组织名称设置为“org_name”,将公司标识符设置为“com.org_name”,将类前缀留空,将设备设置为“通用” ,取消选中“使用核心数据”。点击“下一步”,然后点击“创建”

2) 在“构建设置”页面中将empty_project项目和`empty_project目标的Objective-C Automatic Reference Counting设置为NO。 p>

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://***.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 点高的粉色边距(使用标签栏高度):

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

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

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

屏幕上下有两个黑边,连状态栏都往下移了。

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

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

讨论

我想我已经触及了与 iOS 7 中的自动布局相关的内容。我有另一个项目是在 Xcode 4.6 中创建的,现在不知何故在 Xcode 5 中使用,没有 Images.xcassets 文件夹,而且那个项目也有一些布局问题。

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

参考

Apple's Auto Layout Guide

【问题讨论】:

【参考方案1】:

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

【讨论】:

嗨@ArkadiuszHolko,但在空项目中似乎有一个空的Images.xcassets 文件夹。 @congliu:嗯,我刚刚创建了一个空项目,它有一个 LaunchImage(请参阅 the screenshot)。 Here's 资产目录的文档。 再次嗨(...因为当我把 at_your_name 放在开头时,点击添加评论后 at 符号将被忽略 >_ @congliu:是的,它是一个空图像,但它存在。此行为在here 进行了解释。现在唯一的区别是图像保存在资产目录中。

以上是关于在 Xcode 5 中删除 Images.xcassets 后布局位置错误的主要内容,如果未能解决你的问题,请参考以下文章

如何完全卸载 Xcode 5.1.1?

使用 IOS 5 xcode 4 应用程序删除 AppStore 图标上的光泽效果?

使用 Xcode 5 禁用英语本地化

Xcode 5.1:移除 x86_64 架构

xCode 5 中需要 iTunesArtwork png 文件吗?

Xcode 5 在启动时崩溃