tableView去掉顶部上部空表区域

经常遇到tableView上面会有空白的问题:

见下图:

可以看到上图的tableView顶部有一个空白的区域:

为什么?(如果直接用的是tableView不会出现此问题!)

这可能是由你 在 ViewController添加 tableView和Navigation的顺序的  有问题:

正常的顺序应该是 添加好view  添加 tableView之后  ,添加约束,然后再添加Navigation

但是万一你的tableView出现了  上图那样的空白如何解决呢?

方法1.让tableVIew上移64,为什么是 64呢?因为  那个宽度就是一个 Navagation的高度 64(竖屏时)

加上如下代码:

self.tableView.contentInset=UIEdgeInsetsMake(-64, 0, 0, 0);
让你的tableView按照 上 ,左  ,下  ,右的方向 偏移
实际上这个  方法  在collectionView中也经常使用!

完整代码:

//添加悬浮按钮的代码,外加调整tableView的 偏移量

//
//  ViewController.m
//  StoneButton
//
//  Created by http://blog.csdn.net/yangbingbinga on 14/12/26.
//  Copyright (c) 2014年 http://blog.csdn.net/yangbingbinga. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (strong, nonatomic) IBOutlet UITableView *tableView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    <strong><span style="font-size:24px;">self.tableView.contentInset=UIEdgeInsetsMake(-64, 0, 0, 0);//上移64</span></strong>
    UIScreen *s=[UIScreen mainScreen];
    CGFloat width=s.bounds.size.width;
    CGFloat height=s.bounds.size.height;
    CGRect frame=CGRectMake(15, height-62, width-30, 50);
    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:@"悬浮按钮" forState:UIControlStateNormal];
    [button setBackgroundColor:[UIColor redColor]];
    [button setFrame:frame];
    button.layer.cornerRadius=5;
    button.clipsToBounds=YES;
    [self.view addSubview:button];
    [self.view bringSubviewToFront:button];
    CGRect frame2=CGRectMake(15, 400, 50, 150);
    UIButton *button2=[UIButton buttonWithType:UIButtonTypeCustom];
    [button2 setTitle:@"悬浮按钮2" forState:UIControlStateNormal];
    [button2 setBackgroundColor:[UIColor grayColor]];
    [button2 setFrame:frame2];
    button2.layer.cornerRadius=5;
    button2.clipsToBounds=YES;
    [self.view addSubview:button2];
    [self.view bringSubviewToFront:button2];

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 20;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    long  row=indexPath.row%3;
    UITableViewCell *cell;
    NSString *idf;
    if (row==0) {
        [email protected]"a";
    }
    else if(row==1)
    {
        [email protected]"b";
    }
    else
    {
        [email protected]"c";
    }
    cell = [tableView dequeueReusableCellWithIdentifier:idf forIndexPath:indexPath];
    return cell;
}

@end

效果如下:

可以看到刚才的空白 顺利解决!Ok,需要注意的是:

<strong><span style="font-size:24px;">UIEdgeInsetsMake(-64, 0, 0, 0);</span></strong>

根据实际需求调整这4个值!

2.修改约束值:

将tableView的  top  边界约束上移64:

self.tableViewTopCons.constant-=64;

效果和上图相同,

完整代码:

//
//  ViewController.m
//  StoneButton
//
//  Created by http://blog.csdn.net/yangbingbinga on 14/12/26.
//  Copyright (c) 2014年 http://blog.csdn.net/yangbingbinga. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (strong, nonatomic) IBOutlet UITableView *tableView;

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *tableViewTopCons;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

   <span style="font-size:24px;"> self.tableViewTopCons.constant-=64;//修改 tableView的top约束,上移64!</span>
    UIScreen *s=[UIScreen mainScreen];
    CGFloat width=s.bounds.size.width;
    CGFloat height=s.bounds.size.height;
    CGRect frame=CGRectMake(15, height-62, width-30, 50);
    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:@"悬浮按钮" forState:UIControlStateNormal];
    [button setBackgroundColor:[UIColor redColor]];
    [button setFrame:frame];
    button.layer.cornerRadius=5;
    button.clipsToBounds=YES;
    [self.view addSubview:button];
    [self.view bringSubviewToFront:button];
    CGRect frame2=CGRectMake(15, 400, 50, 150);
    UIButton *button2=[UIButton buttonWithType:UIButtonTypeCustom];
    [button2 setTitle:@"悬浮按钮2" forState:UIControlStateNormal];
    [button2 setBackgroundColor:[UIColor grayColor]];
    [button2 setFrame:frame2];
    button2.layer.cornerRadius=5;
    button2.clipsToBounds=YES;
    [self.view addSubview:button2];
    [self.view bringSubviewToFront:button2];

}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 20;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    long  row=indexPath.row%3;
    UITableViewCell *cell;
    NSString *idf;
    if (row==0) {
        [email protected]"a";
    }
    else if(row==1)
    {
        [email protected]"b";
    }
    else
    {
        [email protected]"c";
    }
    cell = [tableView dequeueReusableCellWithIdentifier:idf forIndexPath:indexPath];
    return cell;
}

@end

更多原文参见:http://blog.csdn.net/yangbingbinga/article/details/43075095

时间: 2024-11-02 23:45:38

tableView去掉顶部上部空表区域的相关文章

iOS开发tableView去掉顶部上部空表区域

tableview中的第一个cell 里上部 有空白区域,大概64像素 在viewDidLoad中加入如下代码 self.automaticallyAdjustsScrollViewInsets = NO; 原文地址:iOS开发tableView去掉顶部上部空表区域

Oracle 11G 笔记:无法导出空表的解决办法

最近在用ORACLE 11G .对数据导出导入的时候发现一个问题:oracle 不会对无数据的空表进行导出.查资料发现,原来这种情况只出现在Oracle 11g 中,处理办法如下: sqlcommand:  alter system set deferred_segment_creation=false; 意思是禁止推迟创建表的段,也就是表创建后不管有没有数据都要分配空间.该参数修改后对该时间点以前创建的表无用.所以还是要对以前的表分配空间. sql:  Select 'alter table

解决 Oracle 11g 不能导出空表的问题

--解决 Oracle 11g 不能导出空表的问题 --执行下面语句,查询数据库中的空表,同时产生分配空间.把生成的结果复制出来并执行. select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 --如果以上方法不行,可改用下面方法 select 'alter table '||table_name||' allocate extent(size 64k);' from tab

解决oracle 11g 导出空表的方法

ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间. 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2)设置deferred_segment_creation参数 SQL> show parameter deferred_segment_creation NAME TYPE VALUE ------------------------------------

Oracle11g在使用exp导出时不导出空表问题的解决办法

11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME                                 TYPE        VALUE --------

Oracle 11g 导库导不出空表问题

Oracle11g 会遇到这样的问题,用exp整库导出的时候,会遇到这样的问题,库里的空表没办法导出 select * from all_all_tables aa where aa.owner='User名大写' ---查看用户下所有表 select * from all_tables t where t.owner = 'User名大写' and t.num_rows = 0;--查看用户下所有空表 好了,下面是处理方法脚本: 在命令窗口运行: set heading off; set ec

Struts2实现空表单信息的提示

需要的jar包文件: index.jsp源码: <%@ page language="java" contentType="text/html; charset=GBK"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>请输入您的注册信息</title> </head&

【原创】关于oracle11G空表无法导出问题的解决方法

在网上搜索了相关资料后,结合自己的实际情况,总结了一下解决方法,具体如下: 1.先批量分析统计各表总记录数: --批量分析统计表记录总数 begin for obj in (select 'analyze table '||table_name|| ' compute statistics ' sqlstr from user_tables) loop --in里面的select无分号 execute immediate obj.sqlstr; end loop; end; 2.再批量分配ext

Oracle 11G在用EXP 导出时,空表不能导出解决[转]

转自:http://wanwentao.blog.51cto.com/2406488/545154 11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME