3 回答

TA貢獻1725條經驗 獲得超8個贊
對于要顯示的自定義陰影圖像,還必須使用setBackoundImage(_:for:)方法設置自定義背景圖像。如果使用默認背景圖像,則不管此屬性的值如何,都將使用默認陰影圖像。
let navigationBar = navigationController!.navigationBar navigationBar.setBackgroundImage(#imageLiteral(resourceName: "BarBackground"), for: .default)navigationBar.shadowImage = UIImage()
以上是唯一的“官方”方式來隱藏它。不幸的是,它消除了酒吧的半透明。
我不想要背景圖像,只想要顏色
純色,無半透明: navigationBar.barTintColor = UIColor.redColor()navigationBar.isTranslucent = falsenavigationBar.setBackgroundImage(UIImage(), for: .default)navigationBar.shadowImage = UIImage()
創建充滿顏色的小背景圖像并使用它。 使用下面描述的‘hacky’方法。它還將保持酒吧半透明。
如何保持酒吧的半透明?
UIImageView
UINavigationBar
UINavigationController
聲明實例變量: private var shadowImageView: UIImageView?
查找此陰影(發際線)的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}
添加/編輯 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
非常感謝“獅子座娜丹”這個創意!

TA貢獻1877條經驗 獲得超1個贊
AppDelegate
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
- 3 回答
- 0 關注
- 754 瀏覽
添加回答
舉報