繁体   English   中英

iOS界面生成器布局奇怪

[英]ios interface builder layout oddity

我正在使用XCode + IB来布局一个非常简单的视图。 顶部有一个标准NavigationController导航栏。 在主视图内部是另一个视图,其中包含一个标签,然后是一个下面的表格,该表格占据了屏幕的其余部分。 我将标签放在此容器视图中,因为我希望导航栏下方的区域具有背景色(灰色)。

问题是,即使主视图仅在NavigationBar下方开始,标签的容器视图仍位于导航栏下方。 有点。 您会看到,标签显示在导航栏下方,但灰色背景某种程度上位于导航栏下方。 如果我将标签视图的高度设置为75px,它将开始出现在导航栏下方。 (状态栏和导航栏为22 + 44)

自动版式已禁用。

那么,为什么视图容器从背景导航栏下方开始? (但不是内部标签?)

从IOS7开始,我在ViewController中使用它,以便内容从导航栏下方而不是其下方开始。

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

我意识到,我可以设置主视图的背景,或者使标签特别大并为其提供背景,但是我想知道为什么它不能首先起作用。

编辑:我向此视图添加了一个功能,当为某些UITextFields打开键盘时,主视图将向上移动125px。 有趣的是,除了Label的View容器之外,整个视图都发生了变化。 当父视图前后移动时,该视图保持不变。 标签本身会上下移动。 因此,再次,中间视图似乎链接到窗口,而不是实际的主视图。

IB

在此处输入图片说明

检查您是否已打开“调整滚动”视图插图!

转到视图控制器,它在“属性”检查器下

如果您只想在导航栏下方发布消息或说明,则可能需要考虑标题单元格。 然后,您可以避免多余的UIView。 如果您担心的话,标题单元格将不会与表格视图一起滚动,并且将位于导航栏的正下方和其余表格单元格的上方。 这是一个使用自定义标题单元格设置背景颜色的简化示例。 如果选择,还可以通过IB将UILabel等放入单元格中。

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{  
    MyCustomHeaderCell *headerCell = [tableView dequeueReusableCellWithIdentifier:@"MyCustomHeaderCell"];
    headerCell.backgroundColor = [UIColor grayColor];
    return headerCell;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM