簡體   English   中英

獲取UINavigationBar的默認titleTextAttributes

[英]Getting the default titleTextAttributes for UINavigationBar

我想在我的應用程序中使用自定義titleView作為導航欄,以便用戶可以編輯它。 我正在嘗試獲取默認字體/對齊/等,以便我可以將其應用於我的新視圖,因此它看起來與普通的導航欄標題相同。

我正在使用

NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithDictionary:self.navigationController.navigationBar.titleTextAttributes];
NSLog(@"%@", myDict);

但這只是顯示一個空字典。 我已經查看了stackoverflow上的其他答案,建議這應該返回默認字體。

難道我做錯了什么? 或者在iOS7中改變了嗎?

編輯 :感謝下面的caglar,我已經更新了我的代碼:

// Get the default title label
UILabel *navigationTitleLabel;
for (UIView *sv in self.navigationController.navigationBar.subviews)
{
    if (sv.subviews.count > 0 && [sv.subviews[0] isKindOfClass:[UILabel class]])
    {
        navigationTitleLabel = (UILabel *)sv.subviews[0];
        break;
    }
}

// Set the new text field to have the same attributes as the default title label
textField.font = navigationTitleLabel.font;
textField.textColor = navigationTitleLabel.textColor;
textField.textAlignment = NSTextAlignmentCenter;
self.navigationItem.titleView = textField;

您可以訪問導航欄的子視圖,因為UINavigationBarUIView子類。 這適用於iOS 7.在舊版本中,子視圖訂單可能與此不同。 但是,想法是一樣的,瀏覽UINavigationBar子視圖並達到標題。

for (UIView *sv in self.navigationController.navigationBar.subviews)
{
    if (sv.subviews.count > 0 && [sv.subviews[0] isKindOfClass:[UILabel class]])
    {
        self.navigationTitleLabel = (UILabel *)sv.subviews[0];
        break;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM