我正在为iPhone制作iOS应用程序,而我正在使用导航控制器.在导航过程中的某个时刻,我正在向UISegmentedControl
导航控制器的导航栏下添加一个视图控制器.我在导航栏中插入新的背景和阴影图像,使其UISegmentedControl
显示为导航栏的一部分.我是这样做的:
// nav bar color image let rect = CGRectMake(0, 0, view.frame.width, 0.5) // Used in navBar, size dosn't matter UIGraphicsBeginImageContextWithOptions(rect.size, true, 0) barBackgroundColor.setFill() UIRectFill(rect) let navBarBackground = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() // setup navbar navigationController!.navigationBar.setBackgroundImage(navBarBackground, forBarMetrics: .Default) navigationController!.navigationBar.shadowImage = UIImage() navigationController!.navigationBar.tintColor = UIColor.blackColor() navigationController!.navigationBar.translucent = false
当我离开给定的视图控制器时,导航栏背景仍然会改变.
如何恢复导航栏的外观?
要么...
是否有另一种方法嵌入UISegmentedControl
扩展的导航栏?
带有自定义背景和分段控制的导航栏图片如下:
导航栏时,导航栏可以自定义:
编辑:
在更改背景图像之前的视图控制器中,我尝试保护标准图像:
override func viewDidAppear(animated: Bool) { if sharedVariables.standartNavBarBackgroundImage == nil { let herp = navigationController!.navigationBar.backgroundImageForBarMetrics(.Default) sharedVariables.standartNavBarBackgroundImage = herp let derp = navigationController!.navigationBar.shadowImage sharedVariables.standartNavBarShadowImage = derp } }
双方herp
并derp
都nil
被设置后,dispite的导航栏在这momont可见.怎么会?
只需将背景图像和阴影图像设置为,就可以恢复默认外观nil
.