上次我帮朋友写了个通讯录的Demo,他参考我的Demo放入工程,运行后效果一直不对。这里有两个问题,第二个问题我是昨晚拉取他工程代码Check才发现,现在贴出问题所在,有类似问题的可以参考。
translucent 属性的坑
1. 点击 searchBar
后searchBar
移到屏幕顶部外面
navigationBar
的translucent
设置为NO
时会造成点击searchBar
后searchBar
移到屏幕顶部外面。 这里我认为是因为translucent
使原点坐标改变造成的,暂时没有找到很好的解决办法,所以如果想要这种动态效果只能设为YES
。
`translucent`设置为`NO`时
2. navigationBar
完全透明
navigationBar
完全透明,这个我开始只看他通讯录模块,并从他通讯录模块的NavigationController
开始检查,没发现问题所在。然后我对比了他其他模块的navigationBar
,其他模块完全没问题。重新想了下问题,感觉也许是他其他地方调用修改了所有navigationBar
的方法,例如appearance
。然后全局搜索,果然是他在登录模块中调用了appearance
方法,是为了去掉navigationBar
下面的线条。修改为只修改当前navigationBar
后问题解决了。例如
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
self.navigationBar.translucent = NO;
修改为
[self.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
[self.navigationBar setShadowImage:[[UIImage alloc]init]];
self.navigationBar.translucent = NO;
`navigationBar`完全透明
translucent 属性使用技巧
- 去掉
navigationBar
下面的线条navigationBar
不透明。
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
self.navigationBar.translucent = NO;
- 去掉
navigationBar
下面的线条navigationBar
透明
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
self.navigationBar.translucent = YES;
- 修改
navigationBar
下面的线条颜色