創建自定義視圖,它分配給navigationItem.titleView屬性後它顯示這樣如何確定自定義UINavigationItem.titleView的大小/框架?
與填充所述兩個按鈕之間的空間中的自定義視圖。因此,自定義視圖不在導航欄上居中。如何確定.titleView屬性中的視圖框架?我想在導航欄中放置一些文本,在時間戳下說。
創建自定義視圖,它分配給navigationItem.titleView屬性後它顯示這樣如何確定自定義UINavigationItem.titleView的大小/框架?
與填充所述兩個按鈕之間的空間中的自定義視圖。因此,自定義視圖不在導航欄上居中。如何確定.titleView屬性中的視圖框架?我想在導航欄中放置一些文本,在時間戳下說。
如果你真的想要得到titleView
的框架(在你的頂層視圖的座標空間),你可以這樣做:
[self.navBar layoutIfNeeded];
CGRect titleViewFrameInTopLevelViewSpace = [self.navigationItem.titleView
convertRect:self.navigationItem.titleView.bounds
toView:self.view];
你需要做layoutIfNeeded
如果剛分配titleView
,因爲默認情況下導航欄不會佈局它的子視圖,直到下一次通過運行循環。
也就是說,titleView
將自動居中,如果它適合。我認爲你正在設置你的自定義視圖的框架(或界限)太大。我測試了這兩種方法:
我直接在XIB中設置titleView
。我只是拖從對象庫中查看到導航欄的中心:
它自動調整大小的視圖128x33。調整大小手柄讓我調整大小。它保持居中,直到與Categorize按鈕重疊。然後它向左移動。
我設置titleView
財產viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 33)];
customView.backgroundColor = [UIColor greenColor];
self.navItem.titleView = customView;
}
結果看起來是這樣的:
設置後,您可以獲得leftBarButtonItem
和rightBarButtonItem
的寬度,然後使用該寬度確定如何在您提供給titleView
的視圖中居中。那可能會做你想要的?
感謝羅布。這是導致觀點不被集中的原因。 – ChrisP