2016-07-21 9 views
0

ナビゲーションバーのグラデーション画像の背景を設定しようとしています。コードはそうのようなものです:勾配画像をUINavigationBarの背景として設定する場合

extension CAGradientLayer { 

    class func gradientLayerForBounds(bounds: CGRect, startColor: UIColor, endColor: UIColor) -> CAGradientLayer { 
     let layer = CAGradientLayer() 
     layer.frame = bounds 
     layer.colors = [startColor.CGColor, endColor.CGColor] 
     return layer 
    } 
} 

はその後、私のビューコントローラで:

func imageLayerForGradientBackground() -> UIImage{ 

     var updatedFrame = self.navigationController!.navigationBar.bounds 
     updatedFrame.size.height += 20 //Status bar 
     let layer = CAGradientLayer.gradientLayerForBounds(updatedFrame, startColor: UIColor(hexString: "5FD238")!, endColor: UIColor(hexString: "A5E589")!) 
     UIGraphicsBeginImageContext(layer.bounds.size) 
     layer.renderInContext(UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return image 

    } 

のviewDidLoad:

navigationController!.navigationBar.translucent = false 
    navigationController!.navigationBar.tintColor = UIColor.whiteColor() 
    navigationController!.navigationBar.setBackgroundImage(imageLayerForGradientBackground(), forBarMetrics: UIBarMetrics.Default) 

問題は、ナビゲーションバーの下にすべての私の見解は、今では押し下げられていることです

012:(以下の図にひどく描かれた)ナビゲーションバーの高さのようなものを見て

なぜこの出来事はありますか?これについてのあらゆる指針は非常に高く評価されるでしょう!ありがとう!

EDIT:

func setupDrawerView() { 

     answerDrawerView = AnswerDrawerView(frame: CGRect(x: 0, y: UIScreen.mainScreen().bounds.size.height - AnswerDrawerView.submitTabHeight, width: UIScreen.mainScreen().bounds.size.width, height: UIScreen.mainScreen().bounds.height*0.75)) 
     answerDrawerView.delegate = self 
     view.addSubview(answerDrawerView) 
    } 
+0

ストーリーボードに行くと、それはそのマットのため – Tj3n

答えて

2

これは勾配で行うには何でも何もしています。

メインビューは、ナビゲーションバーの下に表示されなくなるとすぐに表示されます。さて、あなたは代わりに、自動レイアウトを使用するのでは絶対にあなたの意見を配置しましたので、生物学のボタンが35ポイント減のメインビューの上部から、のは言わせ、だったので、それはまだ 35ポイント減のメインの最上部からです表示されますが、メインビューの上部がナビゲーションバーの下部に表示されます。したがってギャップ。

モラル:使用自動レイアウト!このような状況はまさにそれが目的です。メインビューの一番上ではなく、一番上のレイアウトガイドとの関連でビューを配置すると、すべてがうまくなります。

+0

感謝を助けるかどうかを確認bar'トップの下で '調整スクロールビューのinset'または'をオフにしてください。トップのレイアウトガイドに変更されましたが、上部のスペースに問題はありません。しかし私は何か気づいたことがある(私はEDIT ^の質問にそれを加えた)。私はコントローラの一番下にあるスライドアウトビューを持っています。それは、それをアニメートするためのボタンでトップを表示するようにセットアップされています。しかし何らかの理由でボタンが表示されていない。グラデーションを追加しようとすると表示されません。私はここで注意すべきことは何でも? – Kex

関連する問題