Итак, вот что идет не так:
self.navigationItem.titleView = customTitleView;
Когда вы установите customTitleView
в качестве заголовка для элемента навигации, рамка customTitleView
изменится.customTitleView
больше не будет иметь ширину 320 пикселей, но кадр titleLabel
останется прежним.Таким образом, он больше не будет центрироваться.
Разве вы не можете просто установить titleLabel
как titleView
?Я думаю, что это должно быть центрировано автоматически.Если нет, я знаю более сложный способ ее решения.Оставьте комментарий, и я расскажу вам, как.
РЕДАКТИРОВАТЬ: Итак, вот как вы перестраиваете titleLabel
после изменения кадра customTitleView
.
При изменении кадра вида layoutSubviews
вызывается для этого вида.Поэтому вместо того, чтобы customTitleView
быть обычным UIView
, вам нужно сделать его настраиваемым представлением, наследуемым от UIView
.В этом пользовательском представлении вы переопределяете layoutSubviews
, а в своей реализации layoutSubviews
вы убедитесь, что все выровнено так, как вы хотите, на основе нового фрейма (self.frame
).Я оставлю вам реализацию.