我要開發的應用程序使用自定義導航欄像下面的圖片:iOS的自定義形狀的導航欄
我認爲我需要繼承UINavigationBar的添加按鈕導航欄的中心,但我真的不知道如何使導航欄看起來像在圖像上。你能否給我建議我該怎麼做,鏈接到任何類型的文檔都會很棒!
關於導航欄類似的問題,這不幫助我:
編輯:
我的想法是下一步:使自定義導航欄的高度稍大於默認大小,並添加帶箭頭的背景圖像以及邊緣的一些透明度。
我要開發的應用程序使用自定義導航欄像下面的圖片:iOS的自定義形狀的導航欄
我認爲我需要繼承UINavigationBar的添加按鈕導航欄的中心,但我真的不知道如何使導航欄看起來像在圖像上。你能否給我建議我該怎麼做,鏈接到任何類型的文檔都會很棒!
關於導航欄類似的問題,這不幫助我:
編輯:
我的想法是下一步:使自定義導航欄的高度稍大於默認大小,並添加帶箭頭的背景圖像以及邊緣的一些透明度。
如果你想要一個按鈕(你可能想要),你可以通過子類化UINavigationBar
完全實現它。你應該記住height
的UINavigationBar
是隻讀屬性。
風格,但沒有可點擊:
因此,讓我們假設我們繼承導航欄,並添加按鈕那裏。你可以做到這一點,它會看起來很棒。例如:
- (void)drawRect:(CGRect)rect
{
self.backgroundColor = [UIColor lightGrayColor];
UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(self.frame.size.width/2-50, 0 , 100, 100)];
[myButton setBackgroundColor:[UIColor lightGrayColor]];
[myButton setTitle:@"Normal" forState:UIControlStateNormal];
[myButton setTitle:@"Highlighted" forState:UIControlStateHighlighted];
[self addSubview:myButton];
[self sendSubviewToBack:myButton];
}
但你會面臨一個問題,你的按鈕低於UINvaigationBar
非tapeable。 (我在答案底部張貼了一張圖片)
所以顯然沒有你想要遵循的路徑。甚至不要嘗試。
風格,但沒有可點擊2:
您可以重寫此方法在您的導航欄子
- (CGSize) sizeThatFits:(CGSize)size {
return CGSizeMake(custom_width, custom_height);
}
然後它使用UIBezierPath
例如掩蓋
權(可點擊)方式:
Yo你必須創建一個視圖棒到你的UINavigationBar
。我將在這裏做的(如果你想讓它到每一個屏幕)是:
UIViewController
一個類別,它可以繪製(例如 - 這是最簡單的方法)UIButton
。[btn addTarget:self action:@selector(menuShow:) forControlEvents:UIControlEventTouchUpInside];
menuShow:
方法應該在你的類別進行申報正如你可以看到有會有的兩個獨立景觀:UINavigationBar
和UIButton
這就是讓你這個小按鈕下設內容並使其具有可測性。
那麼,爲什麼不隱藏導航欄,並使用不同的視圖?因爲iOS7;)當Apple在iOS7中更改它時,例如,您必須重新生成僞導航條,只有其他視圖,您不需要執行任何操作。
您可以在導航欄上將自定義形狀視圖添加爲titleView。 只要確保clipsToBounds設置爲NO,所以它不會被剪裁。
您不需要子類UINavigationBar。創建UIView添加到它的UIImageView作爲背景與圖像在你需要的形狀,添加按鈕。
子類UINavigationController隱藏UINavigationBar,添加自定義導航欄。使用
您不需要繼承UINavigationController。有一個「顯示導航欄」的選項。 – Fogmeister
首先隱藏導航欄 -
self.navigationController.navigationBarHidden = YES;
然後與所需的高度創建的UIView,的導航欄的高度是44px.Then創建背景圖像視圖,所需的UIButton的對象和上創建的UIView添加的所有對象作爲一個子視圖它會像navigationBar.Thank你。
謝謝,這就是我正在尋找的! – ignotusverum
很高興我能幫到;) – Kuba
這對我來說是一個完美的解決方案,但是我能否澄清一下? 「使UIViewController的類別可以繪製(例如 - 這是最簡單的方法)UIButton」。 這是否意味着UIViewController類別重寫-drawRect或類似的東西? 並且是在你的AppDelegate中導入的類別,還是你的子類UINavigationBar並將其導入? 謝謝! – Ryan