space between header and table cell

3

我希望增加UITableView的表头和单元格之间的间距。

我已经进行了很多搜索,并找到了以下解决方案:

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

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
   //Adding UIView and it's Background Image...
    UIView *tempView=[[UIView alloc]initWithFrame:CGRectMake(0,0,300,20)];
    UIImageView *BgImg=[[UIImageView alloc]initWithFrame:CGRectMake(0,0,300,20)];
    BgImg.image= [UIImage imageNamed:@"venueTitleBg.png"];
    [tempView addSubview:BgImg];

    //Adding UIImageView...
    UIImageView *flag=[[UIImageView alloc]initWithFrame:CGRectMake(10,3,20,12)];
    flag.image= [UIImage imageNamed:@"flag_small_united-kingdom.png"];
    [tempView addSubview:flag];

    //Adding UILabel...
    UILabel *tempLabel=[[UILabel alloc]initWithFrame:CGRectMake(40,1,300,15)];
    tempLabel.backgroundColor=[UIColor colorWithRed:15.0/255.0 green:15.0/255.0 blue:30.0/255.0 alpha:1.0];
    tempLabel.textColor=[UIColor whiteColor];
    tempLabel.font=[UIFont systemFontOfSize:11];
    tempLabel.text=@"United Kingdom";
    [tempView addSubview: tempLabel];

    return tempView;
}

我尝试了这段代码,模拟器上运行得很好,但是在我的设备上运行时没有显示任何间隔。

以下是模拟器的快照:(我可以看到标题和单元格之间的间隔...) : 提前感谢。


你使用的是哪个设备? - Rushi
2
@krunal 将你的 'heightForHeaderInSection' 高度增加到 60.0。 - Darshan Kunjadiya
你使用的是哪个设备或模拟器?是指4英寸还是3.5英寸? - Rajneesh071
3.5英寸模拟器和设备iPhone 4s - Krunal
4个回答

3

试试这个:

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

0

我认为问题在于您正在使用图像来加载标题视图。由于您正在运行代码的是 iPhone 4s,这是一款具有Retina显示屏的手机。因此,重要的是您添加所有已使用图像的@2x图像,如下所示:

BgImg.image= [UIImage imageNamed:@"venueTitleBg.png"];
flag.image= [UIImage imageNamed:@"flag_small_united-kingdom.png"];

请添加@2x图像并尝试。

0

你可能遇到的问题是,你正在使用 iPhone 5 设备并运行 iPhone 4 模拟器,或者反之亦然。此外,你可能已经启用了自动布局。还要检查增加 heightForHeaderInSection 的高度,例如 50.0 或更高,因为在设备上看起来很小。


0

Swift 4.2

1- 创建一个自定义的头部类,并将其背景设置为透明。

class CustomHeader: UITableViewHeaderFooterView{
    override func awakeFromNib() {
        super.awakeFromNib()
        backgroundView = UIView(frame: self.bounds)
        backgroundView!.backgroundColor = .clear
    }
} 

2- 创建一个.xib文件并分配刚刚创建的类。

3- 在.xib文件中的自定义标题中创建背景视图

4- 为此背景视图提供底部填充,并将其作为标题视图子视图的容器。

5- 不要忘记将自定义标题注册到您的表格视图中。

tableView.register(UINib(nibName: "NibName", bundle: nil), forHeaderFooterViewReuseIdentifier: "Identifier")

6- 你可以随意使用页眉。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderIdentifier") as? CustomHeader
    // Customize your header
    return header
}

7- 如果您不需要自定义标题并且只使用一个自定义标题,则可以使用此快捷方式设置表视图。

yourTableView.tableHeaderView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderIdentifier") as? CustomHeader 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接