Почему UIViewController расширяется под UINavigationBar, а UITableViewController - нет?

у меня естьUITabbarController с участиемUINavigationController в этом. У меня есть подклассUIView что я назначаю в качествеview изUIViewController вnavController, Это довольно стандартные вещи, верно? Вот как я это делаю

_productCategoryView = [[ProductCategoryView alloc] initWithFrame:self.view.frame];
self.view = _productCategoryView;

Этотview имеетUITableView какsubView

_productCategoryTableView = [[UITableView alloc] initWithFrame:self.frame style:UITableViewStylePlain];
_productCategoryTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_productCategoryTableView.backgroundColor = [UIColor clearColor];
[self addSubview:_productCategoryTableView];

Ради отладки я устанавливаюself.backgroundColor = [UIColor blueColor] на вид.

Из приведенной выше инициализацииtableView можно подумать, что вид и таблицаframe такой же. Однако, когда я бегу вiOS 7происхождение представления устанавливается заUINavigationBar, Это понятно, потому что я устанавливаюself.navigationBar.translucent = YES; в моем подклассеUINavigationController, Но что я не понимаю, так это то, почему стол сидит чуть нижеnavBar? Разве это не должно начинаться с(0, 0) который находится заnavBar? Посмотреть скриншотScenario 1 ниже. Обратите внимание на синий оттенок позадиnavBar

Сейчас яpush еще одинviewController в стеке навигации, просто используя[self.navigationController pushViewController.....], Опять у меня есть обычайUIView сtableView в этом. Однако у меня также естьUILabel выше этой таблицы, и снова для отладки, я дал емуredColor, На этот раз я устанавливаю ярлыкorigin быть почти таким же, как вид

CGRect boundsInset = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(10, 10, 10, 10));

CGSize textSize = [_titleLabel.text sizeWithFont:_titleLabel.font
                               constrainedToSize:CGSizeMake(boundsInset.size.width, MAXFLOAT)
                                   lineBreakMode:NSLineBreakByWordWrapping];
printSize(textSize);
_titleLabel.frame = CGRectMake(boundsInset.origin.x,
                               boundsInset.origin.y,
                               boundsInset.size.width,
                               textSize.height);

Итак, следуя логике выше, метка должна быть видимой, верно? Но на этот раз это не так. На этот раз лейбл находится заnavBar.

Обратите внимание, красный оттенок позади navBar.

Я действительно хотел бы выровнять subView ниже navBar последовательно. Мои вопросы

1. How is the tableView offset by 64pixels (height of nav + status bar in iOS 7) automatically, even though it's frame is same as the view's?

2. Why does that not happen in the second view?