论UITableViewController被status bar覆盖的问题(IOS SDK 8.3)

通常我们做一个UITableViewController(以下简称tvc)直接打开,在没有NavigationController的时候都会是这样
覆盖了状态栏的tvc

问题是,你要加一个UINavigationController吗?

还是像别人一样不用UITableViewControler而是在main storyboard 里面造一个UIViewController + UITableView 下移20px?

告诉你我最近实现的一个方法:

#define BARITEMHEIGHT 64
- (void)viewDidLoad {
    [super viewDidLoad];
    CGRect frame = self.view.frame;
    frame.size.height = BARITEMHEIGHT;

    UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:frame];

    UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Active group"];
    UIBarButtonItem *leftbutton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(actionDown)];
    UIBarButtonItem *rightbutton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(actionCancel)];
    [navigationBar pushNavigationItem:navigationItem animated:YES];
    [navigationItem setLeftBarButtonItem:leftbutton];
    [navigationItem setRightBarButtonItem:rightbutton];
    self.tableView.tableHeaderView = navigationBar;

}


-(void) actionDown
{
    [self dismissViewControllerAnimated:YES completion:^{
        // balabalabala...
    }];
}

-(void) actionCancel
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

省事罗!
完成加入navigatebar

  1. 由于加入的navigatebar是tableView的一部分,在手指滑动的时候这个navigatebar是会随着移动的,如果希望navigatebar不动,那么,就要把
- (void)viewDidLoad
{
...
}

里面的内容去掉
然后,在

-(void)viewDidAppear:(BOOL)animated
{
}

加上类似的内容,致于为什么加这里,可能是因为viewDidLoad的时候某些内部的控件还没有准备好吧

-(void)viewDidAppear:(BOOL)animated
{
    CGRect frame = self.view.frame;
    frame.origin.y += BARITEMHEIGHT;
    frame.size.height  -= BARITEMHEIGHT;
    self.view.frame = frame;

    frame.origin.y = 0;
    frame.size.height = BARITEMHEIGHT;

    UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:frame];

    UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Active appointment"];
    UIBarButtonItem *leftbutton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(actionDown)];
    UIBarButtonItem *rightbutton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(actionCancel)];
    [navigationBar pushNavigationItem:navigationItem animated:YES];
    [navigationItem setLeftBarButtonItem:leftbutton];
    [navigationItem setRightBarButtonItem:rightbutton];

    [self.view.superview addSubview:navigationBar];
}

感谢一下我吧!
转载不要忘了发我的链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值