我使用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
,我希望它的工作方式相同。
答案 0 :(得分:1)
试试这个&让我知道它是否有效:
self.tableView.contentInset = UIEdgeInsetsMake(44,0,0,0);
答案 1 :(得分:0)
我找出了解决方案,我将tableView设置为控制器的主视图,而不是控制器主视图的子视图
[self setView:_tableView];
而不是
[self.view addSubview:_tableView];