Por que o UIViewController se estende sob o UINavigationBar, enquanto o UITableViewController não?

eu tenhoUITabbarController comUINavigationController nisso. Eu tenho uma subclasse deUIView que eu atribuo como oview doUIViewController nonavController. Isso é bastante normal, certo? É assim que eu faço

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

esteview tem umUITableView ComosubView

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

Por uma questão de depuração eu estou definindoself.backgroundColor = [UIColor blueColor] na vista.

Da inicialização acima detableView pode-se pensar que a visão e a mesaframe é igual. No entanto, quando eu corro emiOS 7, a origem da visão é definida atrás doUINavigationBar. Isso é compreensível porque estou definindoself.navigationBar.translucent = YES; na minha subclasse deUINavigationController. Mas o que eu não entendo é como é que a mesa está sentada logo abaixo donavBar? Não deveria também começar de(0, 0) que está por trás donavBar? Ver captura de telaScenario 1 abaixo. Observe a tonalidade azul por trásnavBar

Agora eupush outroviewController na pilha de navegação, simplesmente usando[self.navigationController pushViewController.....]. Mais uma vez eu tenho um costumeUIView com umtableView nisso. No entanto, eu também tenho umUILabel acima desta tabela, e novamente para depuração, eu dei-lhe umredColor. Desta vez eu estou definindo o rótuloorigin ser quase o mesmo que o da vista

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);

Então, seguindo a lógica acima, o rótulo deve estar visível, certo? Mas desta vez não é. Desta vez, o rótulo está por trás donavBar.

Observe, a tonalidade vermelha por trás do navBar.

Eu realmente gostaria de alinhar o subView abaixo do navBar de forma consistente. Minhas perguntas são

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?