1.导航相关
// 设置一个空的背景图片,实现导航栏透明但是 BarButtonItem 正常显示
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
// 设置一个空的 shadowImage 来去掉NavigationBar 最下面的那条线
self.navigationController.navigationBar.shadowImage = [UIImage new];
//随着上拉距离的改变,实现其透明度动态变化
// 实现:监听 scrollView 的 offset值,然后获取到 NavigationBar的子控件,动态改变其透明度
[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;
2.奇葩需求
有个需求是A push 到 B, B push 到 C, C * “pop” 到 D,D 再 “pop”到 A, 傻逼不???*
//实现吧:首先 A push 到 B
[self.navigationController pushViewController:B animated:YES];
//此时 self.navigationController.childViewControllers = [A, B];
//然后 B push 到 C
[self.navigationController pushViewController:C animated:YES];
// 此时 self.navigationController.childViewControllers = [A, B, C];
//现在要实现 C pop 到 D,由于navigationController.childViewControllers
是只读的,因此不能直接对其进行操作。。。
// 这时候可建立可变拷贝对象,然后进行替换操作,是不是很聪明啊 😆
NSMutableArray *navChildMuarr = [self.navigationController.childViewControllers mutableCopy];
[navChildMuarr replaceObjectAtIndex:1 withObject:D];
// 最后再将替换后的数组赋值回去不要忘了
[self.navigationController setViewControllers:navChildMArr animated:YES];