亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何隱藏UINavigationBar 1 px底線

如何隱藏UINavigationBar 1 px底線

HUWWW 2019-07-05 16:46:41
如何隱藏UINavigationBar 1 px底線我有一個應用程序,有時需要它的導航欄,以融入內容。有人知道如何擺脫或改變這個討厭的小酒吧的顏色嗎?在下面的圖片中,我說的是“根視圖控制器”下面的1 px高度線。
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

要做到這一點,您應該設置一個自定義陰影圖像。但是要顯示陰影圖像,還需要設置一個自定義背景圖像,引用Apple的文檔:

對于要顯示的自定義陰影圖像,還必須使用setBackoundImage(_:for:)方法設置自定義背景圖像。如果使用默認背景圖像,則不管此屬性的值如何,都將使用默認陰影圖像。

因此:

let navigationBar = navigationController!.navigationBar
navigationBar.setBackgroundImage(#imageLiteral(resourceName: "BarBackground"),
                                                        
         for: .default)navigationBar.shadowImage = UIImage()

以上是唯一的“官方”方式來隱藏它。不幸的是,它消除了酒吧的半透明。

我不想要背景圖像,只想要顏色

你有這樣的選擇:

  1. 純色,無半透明:

    navigationBar.barTintColor = UIColor.redColor()navigationBar.isTranslucent = falsenavigationBar.setBackgroundImage(UIImage(), 
    for: .default)navigationBar.shadowImage = UIImage()
  2. 創建充滿顏色的小背景圖像并使用它。

  3. 使用下面描述的‘hacky’方法。它還將保持酒吧半透明。

如何保持酒吧的半透明?

為了保持半透明,你需要另一種方法,它看起來像一個黑客,但工作良好。我們要去除的陰影是一條發際線UIImageView在下面的某個地方UINavigationBar..我們可以找到它,并在需要時隱藏/展示它。

下面的說明假設您需要只隱藏在您的一個控制器中的發際線。UINavigationController等級制度。

  1. 聲明實例變量:

    private var shadowImageView: UIImageView?
  2. 查找此陰影(發際線)的Add方法UIImageView:

    private func findShadowImage(under view: UIView) -> UIImageView? {
        if view is UIImageView && view.bounds.size.height <= 1 {
            return (view as! UIImageView)
        }
    
        for subview in view.subviews {
            if let imageView = findShadowImage(under: subview) {
                return imageView        }
        }
        return nil}
  3. 添加/編輯viewWillAppear/viewWillDisappear方法:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    
        if shadowImageView == nil {
            shadowImageView = findShadowImage(under: navigationController!.navigationBar)
        }
        shadowImageView?.isHidden = true}override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    
        shadowImageView?.isHidden = false}

同樣的方法也適用于UISearchBar發際線,(幾乎)任何你需要隱藏的東西:)

非常感謝“獅子座娜丹”這個創意!


查看完整回答
反對 回復 2019-07-05
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

如果您只想使用堅實的導航欄顏色,并在您的故事板中設置了此顏色,請在您的AppDelegate類以通過外觀代理刪除1像素邊框:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init]
                                  forBarPosition:UIBarPositionAny
  barMetrics:UIBarMetricsDefault];[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];


查看完整回答
反對 回復 2019-07-05
  • 3 回答
  • 0 關注
  • 754 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號