Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 分组的UITableView在底部有20像素的额外填充_Objective C_Ios_Uitableview - Fatal编程技术网

Objective c 分组的UITableView在底部有20像素的额外填充

Objective c 分组的UITableView在底部有20像素的额外填充,objective-c,ios,uitableview,Objective C,Ios,Uitableview,在iOS 6中,分组表视图的底部似乎有额外的填充(iOS 5没有),但我找不到任何文档表明这是正确的/预期的行为 这也会影响示例项目,例如TableViewSuite示例中的SimpleTableView项目。我想我必须将AppDelegate中的样式更改为“分组”,并将SDK更新为iOS 6,但没有对项目进行其他更改 调查显示,有10px保留用于页眉和页脚视图,还有一些20px无法解释。 没有实际的页眉或页脚视图(tableHeaderView和tableFooterView是nil,实现并返

在iOS 6中,分组表视图的底部似乎有额外的填充(iOS 5没有),但我找不到任何文档表明这是正确的/预期的行为

这也会影响示例项目,例如
TableViewSuite
示例中的
SimpleTableView
项目。我想我必须将
AppDelegate
中的样式更改为“分组”,并将SDK更新为iOS 6,但没有对项目进行其他更改

调查显示,有
10px
保留用于页眉和页脚视图,还有一些
20px
无法解释。 没有实际的页眉或页脚视图(
tableHeaderView
tableFooterView
nil
,实现并返回
nil
,例如
viewforfooterInstitution
不执行任何操作)。 我在tableView本身上找不到任何“20”值,尽管我可能错过了一些东西

为页脚添加一个零大小的视图没有任何作用,但是添加一个
1px
square视图会导致额外的填充消失。e、 g:

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0,0,1,1)];
它仍然占据高度的1px,因此底部填充物现在是11px,但这远不如20明显。现在将
sectionFooterHeight
设置为0只会导致底部空间
1px

我的问题是:什么?我如何才能完全移除它?这不是什么关键任务,但它是非常奇怪的,不受欢迎的,据我所知,它是未记录的


请注意-这是苹果开发者论坛上的问题副本。但是我有完全相同的问题,我也不知道如何解决它。

以下代码适合我

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 0;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0;
}

使用
UIScrollView
反弹属性:

[yourTableView setBounces:NO];
这将删除
UITableView
顶部和底部的额外填充。
实际上,它只会禁用tableview的scrollview以滚动内容的边缘。

您可以使用
contentInset
来补偿20px的额外底部边距:

tableView.contentInset = UIEdgeInsetsMake(0, 0, -20, 0);

这对我来说很有用。

@frankWhite'解决方案效果很好,但这里有一个更好的解决方案,可以避免键入0.1、0.001或其他内容,从而减少歧义

// Swift version
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {

    // remove bottom extra 20px space.
    return CGFloat.min
}

我想这是唯一可行的解决方案。我尝试将
tableFooterView
tableHeaderView
设置为
nil
。 但是什么也没发生。然后下面的解决方案起作用了。返回0“返回0;”没有效果。我们应该返回可能的最低高度

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
        return CGFLOAT_MIN;
    }

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return CGFLOAT_MIN;
    }
注意: 这是我打印值时得到的

CGFLOAT_MAX=3402823463852885981170418348484516925440.000000

CGFLOAT_最小值=0.000000

斯威夫特3

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

Swift 3代码

class PaddingLessTableView : UITableView
{
    override func layoutSubviews() {
        self.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        super.layoutSubviews()
    }
}
这就解决了问题:

Obj-c

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return 0.1;
    }
Swift:

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 0.1
}

在Swift 4.2中,您可以尝试将表格标题设置为最小正常震级高度-

var frame = CGRect.zero
frame.size.height = .leastNormalMagnitude
tableView.tableHeaderView = UIView(frame: frame)

最近,我发现了这个问题,并遵循上面发布的解决方案,但它们都不起作用。在我的例子中,我有一个具有动态高度的节标题。受上述解决方案的启发,我编写了以下代码,并解决了问题。我希望这能有所帮助

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    return UIView()
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 0.1
}
并按如下方式配置tableView的页眉和页脚:

tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 0.1))
tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 0.1))

Swift 5

 tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: .leastNormalMagnitude))


在此处发现相同的问题:(如果您仍在使用,您应该将答案授予Frank White,因为他的解决方案在iOS8.3中非常有效。将页脚值设置为零没有任何效果。感谢您的回答。但它对我不起作用。我需要替换的不是节页脚,而是表页脚。唯一有帮助的是tableView.tableFooterView=[[UIView alloc]initWithFrame:CGRectMake(0,0,1,1)];但它将填充减少到1px,而不是完全删除它。我在登录和密码的分组tableview中遇到了类似的问题。但使用此方法解决了。您是否尝试过
tableview.tableFooterView=nil;
是的,我尝试将tableFooterView设置为nil,但它对我不起作用。看起来编译器忽略了它。我有许多节,因此无法使用y我们的代码。但如果我只是创建一个只有一个分组的tableview的清晰项目,它的工作方式与在底部添加额外填充广告的方式相同。甚至设置应用程序也有相同的填充。将tableFooterView设置为零对我有效!谢谢!在你的答案中加入这个选项,我会给它加1对我有效。但这听起来很武断。我为什么要获得空间n从ios5.0开始,我的分组表排名第一?@Gmu我不知道。苹果总是随意调整UIKit以适应自己的需要,这常常让我们第三方开发者摸不着头脑:(iOS 7在这方面更糟糕。太棒了!将其设置为0没有任何效果。我甚至使用了0.0001。我正在为iOS 8.3使用Xcode 6.3,所以这是最新版本的Xcode。我建议使用@BensonTommy的答案,因为它不那么模棱两可。非常感谢你!可怜、悲伤的UITableView有多么糟糕的API。是时候从头重写了。但希望没有UICollectionViewController过于冗长!在@frankWhite的答案上做得很好,使其不那么模棱两可。为了使其正常工作,请使用以下func原型:
func tableView(tableView:UITableView,HeightForFooterInstruction部分:Int)->CGFloat
祝福你的灵魂
返回CGFloat。在swift 3.0和更高版本中,至少正常的大小
,我还必须实现
viewForFooterInstitution
返回
nil
以使其在iOS 11中工作,这是设置tableFooterView的一个很好的调用,很奇怪,但它可以工作。我已经有了tableView(\u:viewForHeaderInSection:)实现了,所以我尝试添加heightForFooter和viewForFooter部分,如这里所述,就像其他答案一样,这些都没有为我解决问题,但是创建一个虚拟的TableFooter视图起到了作用。
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 0.1))
tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 0.1))
 tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: .leastNormalMagnitude))