我已经看了很多像这样的问题,并没有找到我的问题的答案。
我现在该怎么做:
APPDELEGATE (didFinishLaunchingWithOptions)
// Text
let barButtonItem = UIBarButtonItem.appearance()
barButtonItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: UIControlState.normal)
barButtonItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: UIControlState.highlighted)
// Image
let backImage = UIImage(named: "arrow_left"
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
这几乎适合我需要的东西,但屏幕标题向右移动,因为有一个不可见的后退按钮文本。它绝对是(根控制器的标题长度为9个字符):
问题是:如何在ios 9.0中为后退按钮的每个外观更改图像,隐藏文本并保持标准后退动作?
答案 0 :(得分:2)
以下是如何为导航栏添加“自定义”按钮
let btnleft : UIButton = UIButton(frame: CGRect(x:0, y:0, width:35, height:35))
btnleft.contentMode = .center
btnleft.setImage(Set_Local_Image("arrow_left"), for: .normal)
btnleft.addTarget(self, action: #selector(YOUR_ACTION), for: .touchDown)
let backBarButon: UIBarButtonItem = UIBarButtonItem(customView: btnleft)
self.navigationItem.setLeftBarButtonItems([menuBarButon], animated:false)
而不是" arrow_left"您可以使用任何想要的图像
对于默认后退操作,您可以创建功能(YOUR_ACTION)并使用后退按钮的选择器
navController.popViewController(animated: true)
答案 1 :(得分:1)
有三种方法可以做你想做的事。
我建议:通过扩展和UINavigationController创建自己的导航类,并覆盖backbuttonItem(UIBarButtonItem)属性,以根据您的要求对其进行自定义。并在项目中使用相同的Navigation Controller类。
通过扩展UIBarButtonItem创建自定义backBarButton,并在所有视图控制器中手动设置为默认Navigation Controller类的后退按钮。
从根控制器隐藏默认导航栏,并在所有视图控制器中使用UIView和UIButton创建自己的导航栏。 (我总是使用这个选项,这使得我很容易定制导航栏。我可以根据我的要求设置我的视图)
答案 2 :(得分:0)
UINavigationBar.appearance().setBackgroundImage(UIImage(), for:
UIBarPosition.any, barMetrics: UIBarMetrics.default)
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor.main
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().clipsToBounds = false
UINavigationBar.appearance().backgroundColor = UIColor.main
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName :
(UIFont(name: "Helvetica", size: 18))!, NSForegroundColorAttributeName:
UIColor.white]
尝试此代码并相应地进行更改以设置图像,颜色和其他属性
答案 3 :(得分:0)
你应该看看Mark Moeykens的youtube系列。他是恕我直言,是Swift中UI设计和实现的最佳YouTube主持人之一。
播放列表为https://www.youtube.com/playlist?list=PLHDMmeIMXj8WyvlX5uFmppVn2Pm0bXVr7
答案 4 :(得分:0)
为UINavigationItem创建扩展
extension UINavigationItem {
func backBarButtonItem() -> UINavigationItem {
return UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
}
}