我试过在XIB中更新Y-deltas(它们对视图没有影响),我已经尝试将edgeForExtendedLayout设置为UIRectEdgeNone(什么都不做),还有很多其他的东西。每次,状态栏都会显示出它所在的视图,无论我做什么..这是除非我手动将XIB中的视图移动到允许状态栏的空间(但该解决方案不起作用,因为它在iOS6中看起来不错,当然)
奇怪的是,即使我尝试使用一行代码来进行视图转换,它也不起作用(如下所示):
self.view.frame = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y+20,self.view.frame.size.width,self.view.frame.size.height);
不是我会用这种解决方案,但它只是奇怪的是它没有工作(唯一的时候,我通常看到,如果自动布局是适用的,这不是在这种情况下,不工作)。
状态栏显示的是一种设计要求,而我只是为了无法将视图置于iOS7的状态栏中。我已经阅读了关于该主题的每一个Stack Overflow文章,以及Apple的转换/指南。再次重申,我完全理解它应该如何运作,以及预期的解决办法应该如何,但是对于这个特定的项目来说,似乎没有一个工作。
我是一个经验丰富的iOS开发人员,但这个项目是由另一个团队建立的,所以我不知道XIB文件,plist或者代码中有没有隐藏的东西,可能会胜过上述设置。请让我知道,如果还有其他可以看到的内容,或者我可以提供的更多信息。
提前致谢!
解决方法
但是,如果您根据视图框架以编程方式重新定位或调整视图大小,则三角形将无法帮助您,因为该框架不会考虑到三角形。
而不是使用三角形,我发现最好的解决方案是在主XIB上启用自动布局,然后在顶部/内容视图上设置顶部空间限制,以遵循顶部布局指南。本指南在iOS 7中引入,表示状态栏下方的位置。不幸的是,在不使用故事板的情况下,Interface Builder中不提供该指南,但可以以编程方式添加。
我做的是在SuperView中添加一个顶层空间约束,而不是在Interface Builder中,并在代码中为此创建了一个插件。然后,在viewDidLoad中,如果topLayoutGuide可用(iOS 7),请使用“顶部布局指南”替换此插座中的约束。
if ([self respondsToSelector:@selector(topLayoutGuide)]) { [self.view removeConstraint:self.containerTopSpaceConstraint]; self.containerTopSpaceConstraint = [NSLayoutConstraint constraintWithItem:self.contentView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; [self.view addConstraint:self.containerTopSpaceConstraint]; [self.view setNeedsUpdateConstraints]; [self.view layoutIfNeeded]; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。