在 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 后布局位置错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 IOS 5 xcode 4 应用程序删除 AppStore 图标上的光泽效果?