0

我正在爲NavigationBar添加漸變。我將UINavigationController分類爲這樣。漸變應該填充狀態欄和UINavigationBar。問題是我只能得到它來填充UINavigationBar(通過self.toolBar.bounds)。 我嘗試添加了狀態欄的高度,但它並沒有允許+用於UINavigationController +狀態欄框架的CGRect

@IBOutlet weak var toolBar: UINavigationBar! 

let gradient:CAGradientLayer = CAGradientLayer() 
gradient.frame = self.toolBar.bounds 
gradient.colors = [UIColor.greenColor().CGColor, UIColor.blueColor().CGColor] 
self.toolBar.layer.insertSublayer(gradient, atIndex: 1) 
toolBar.barTintColor = UIColor.grayColor() 

以下是對上面的代碼生成一個屏幕截圖: Gradient is filling the wrong frame.

漸變應該延伸到狀態欄,所以不會有灰色。

+0

你可以嘗試設置UIStatusBarStyleLightContent屬性刪除灰色 –

+0

@JP_Mob - 它已經被設置爲。灰色顯式設置在我的代碼中。 – Joe

回答

2

如果狀態欄會出現你設置梯度 20`。所以如果你設置漸變導航欄,那麼絕對它只設置它。它絕對不會影響狀態欄,因爲它是不同的東西。

在你的情況下,你應該使自定義導航欄我認爲通過使用UIView

只需隱藏特定此視圖控制器的默認導航欄並拖動尺寸爲64的uiview,並將其放在(0,0),因此它涵蓋了狀態欄和導航欄空間。

並設置漸變到該視圖,你會達到你想要的效果。

希望這將有助於:)

+0

這是有道理的。我沒有想到這樣做。是否在Xcode/swift中創建自己的導航欄? – Joe

+0

是的,這很常見。大多數人使用這樣的自定義導航欄 – Lion

+0

我目前將我的UITableViewController嵌入到導航控制器中。如果我將自己的視角作爲導航欄,我是否不需要再嵌入導航控制器?我可以刪除嵌入式導航控制器,然後手動設置約束,正確? – Joe

-1

可以爲漸變提供形象也:

[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"gradiant_bg"]]]; 
相關問題