UIBarButtonItem не является потомком UIView. Это проблема. Что бы Apple ни делала под прикрытием UINavigationBar, не является общедоступным. Я думаю, что ваша лучшая ставка - это своего рода хак.
Где-то в вашем коде инициализации выполните следующее:
UITableView* temp = [[UITableView alloc] init];
UIEdgeInsets insets = temp.layoutMargins;
NSLog(@"%f", insets.left);
Затем сохраните объект UIEdgeInsets и дайте таблице исчезнуть в эфире. .
NSLog в приведенном выше примере печатает 8.000000. Кажется, что Apple просто использует стандартное значение. Вы также можете использовать это. Но если вы хотите избежать жесткого кодирования стандартного значения, тогда делайте то, что я предлагаю.
Я признаю, что вы полагаетесь на таблицу, а не на левую кнопку бара. Но я предполагаю, что вы хотите сделать то, что делают представления таблицы. Удачи!