如果navigationBar.translucent为NO,则UITableView底部区域不在屏幕外;

时间:2015-01-05 14:21:12

标签: ios uitableview

我使用UITableView实例作为我的ViewController视图的子视图,表的内容高于屏幕,因此它是可滚动的。这是AppDelegate中的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)opts {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UINavigationController *nav = [[UINavigationController alloc] init];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];

    UIViewController *controller = [[ViewController alloc] init];
    [nav pushViewController:controller animated:YES];

    // set to No cause the problem
    nav.navigationBar.translucent = NO;

    return YES;
}

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
    _tableView.delegate = self;
    _tableView.dataSource = self;

    [self.view addSubview:_tableView];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [[UITableViewCell alloc] init];
    cell.textLabel.text = [NSString stringWithFormat:@"test %u", indexPath.row];
    return cell;
}

@end

现在问题是

  • 如果nav.navigationBar.translucent = YES,则内容向右滚动,如果我滚动到底部,则可以看到底线。
  • 如果nav.navigationBar.translucent = NO,内容不向右滚动,如果我结束翻转,则底线会自动移出屏幕。

似乎自动隐藏区域是navigationBar的高度,谁知道如何解决它?无论translucent = YES还是translucent = NO,我希望它的工作方式相同。

2 个答案:

答案 0 :(得分:1)

试试这个&让我知道它是否有效:

self.tableView.contentInset = UIEdgeInsetsMake(44,0,0,0);

答案 1 :(得分:0)

我找出了解决方案,我将tableView设置为控制器的主视图,而不是控制器主视图的子视图

[self setView:_tableView];

而不是

[self.view addSubview:_tableView];