Ios UITableView标题和第一行之间出现奇怪的空格

Ios UITableView标题和第一行之间出现奇怪的空格,ios,objective-c,uitableview,margin,Ios,Objective C,Uitableview,Margin,编辑: 现在,在删除autolayout后,它只能在较小的设备上工作,如iPhone4,4s,但在iPhone6iOS9.1.2上不起作用。如果我添加一个高度为80的空白节标题,它在iPhone6中工作。还在想可能是什么问题吗 原始问题: 我已经创建了一个UIView子类,并为它创建了一个nib。 我已经将其分配给了tableHeaderView,但问题在于nib中我的视图的高度是200像素,在代码中我需要手动将高度设置为300像素。这是密码 //Create and add header se

编辑:

现在,在删除autolayout后,它只能在较小的设备上工作,如iPhone4,4s,但在iPhone6iOS9.1.2上不起作用。如果我添加一个高度为80的空白节标题,它在iPhone6中工作。还在想可能是什么问题吗

原始问题: 我已经创建了一个UIView子类,并为它创建了一个nib。 我已经将其分配给了tableHeaderView,但问题在于nib中我的视图的高度是200像素,在代码中我需要手动将高度设置为300像素。这是密码

//Create and add header
self.header = [[[NSBundle mainBundle] loadNibNamed:@"LeftMenuHeaderViewViewController" owner:nil options:nil] lastObject];


self.header.frame = CGRectMake(0, 0, 260, 300);
self.header.target = (id)self;
// self.header.backgroundColor = [UIColor blueColor];
self.tblvLeftPanel.tableHeaderView = self.header;
以下是截图

它实际上看起来怎么样

甚至尝试过这些方法

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

UILabel *sectionHeader = [[UILabel alloc] initWithFrame:CGRectNull];
sectionHeader.hidden = YES;
return sectionHeader;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 0.01f;
}
自动布局图像 表视图

标题视图(无约束)

还有2张截图 高度200像素

高度300像素

问题似乎在于自动布局

我已经尝试过这个代码,它的工作

 self.header = [[[NSBundle mainBundle] loadNibNamed:@"LeftMenuHeaderViewViewController" owner:nil options:nil] lastObject];

 self.tblvLeftPanel.translatesAutoresizingMaskIntoConstraints = YES;
 self.header.frame = CGRectMake(0, 0, 260, 200);
 self.header.target = (id)self;
 self.header.backgroundColor = [UIColor clearColor];
 self.tblvLeftPanel.tableHeaderView = self.header;
但在控制台中获取警告如何修复

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
 Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
    (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that  you don't understand, refer to the documentation for the UIView  property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x7fca1ca3f9b0 UITableView:0x7fca1b8fa000.height == 580>",
    "<NSLayoutConstraint:0x7fca1c9aa8d0 UIView:0x7fca1c9aa290.bottom == UITableView:0x7fca1b8fa000.bottom>",
    "<NSLayoutConstraint:0x7fca1c9aa920 UITableView:0x7fca1b8fa000.top == UIView:0x7fca1c9aa290.top + 20>",
    "<NSLayoutConstraint:0x7fca1ca409e0 UIView:0x7fca1c9aa290.height == 568>"
)

Will attempt to recover by breaking constraint 
在UIViewAlertForUnsatifiableConstraints处创建一个符号断点,以便在调试器中捕获该断点。
中列出的UIView上UIConstraintBasedLayoutDebugging类别中的方法也可能会有所帮助。
无法同时满足约束。
可能下面列表中至少有一个约束是您不想要的。
试试这个:
(1) 看看每一个约束,试着找出你不期望的;
(2) 找到添加了不需要的约束的代码,然后修复它。
(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性TranslatesAutoResizingMaskToConstraints的文档)
(
"",
"",
"",
""
)
将尝试通过打破约束进行恢复

是的,UiTableView有标题空间,您可以通过拉伸或隐藏在导航栏下来隐藏此视图。它的大小通常为64,所以您需要将它拉到顶部,使其成为您想要的样子。

是的,UiTableView有页眉空间,您可以通过拉伸或隐藏在导航栏下来隐藏此视图。它的大小通常为64,因此您需要将其拉到顶部,以使其符合您的要求。

上述约束不一致: 1-表格底部==视图底部 2-工作台高度==568 3-视图高度==580 4-视图高度==桌子高度+20 这是永远无法实现的。
IMO的最佳解决方案是消除其中一个约束。哪一个取决于你认为最不重要的。

< P>以上约束是不一致的: 1-表格底部==视图底部 2-工作台高度==568 3-视图高度==580 4-视图高度==桌子高度+20 这是永远无法实现的。

IMO的最佳解决方案是消除其中一个约束。哪一个取决于你认为最不重要的。

你有没有机会自动打开?是的,我在使用大小类。我在viewdiload self.automaticallyAdjustsScrollViewInsets=NO中也写过这个;那么这很可能是一个自动布局工件。您能提供您所做的所有AL设置吗?在viewForHeaderInSection方法中返回nil返回nil不起作用。您是否打开了自动布局?是的,我正在使用大小类。我在viewdiload self.automaticallyAdjustsScrollViewInsets=NO中也写过这个;那么这很可能是一个自动布局工件。您能提供您所做的所有AL设置吗?在viewForHeaderInSection方法中返回nil返回nil无效我删除了所有约束并以编程方式设置框架。它现在正在工作。我仍然想使用自动布局,那么我应该应用什么约束?请发布一张示例图片。请使用模拟器在多个屏幕大小上进行测试。这将帮助您确定您希望视图如何适应屏幕空间。对注释的限制迫使我添加第二个注释。您希望上面的UIView适应屏幕大小吗?如果是,则相对于其superview约束其顶部/底部,但不约束其高度。您需要固定高度,然后约束其高度和顶部或底部,但不能同时约束两者。将相同的逻辑应用于与UIView相关的tableview。您的意思是从顶部到顶部的垂直间距以及从左、下、右到0I的引脚删除了所有约束并以编程方式设置框架。它现在正在工作。我仍然想使用自动布局,那么我应该应用什么约束?请发布一张示例图片。请使用模拟器在多个屏幕大小上进行测试。这将帮助您确定您希望视图如何适应屏幕空间。对注释的限制迫使我添加第二个注释。您希望上面的UIView适应屏幕大小吗?如果是,则相对于其superview约束其顶部/底部,但不约束其高度。您需要固定高度,然后约束其高度和顶部或底部,但不能同时约束两者。将与UIView相同的逻辑应用于tableview。您指的是从顶部开始的垂直间距,以及从左、下、右到0的引脚间距