项目笔记
问题1.2
1.选中图片被渲染,蓝色
如何解决:1.通过操作图片 2.通过代码
2.发布图片显示不出来,并解决
分析:为什么显示不出来 -> 判断下发布图片和其他图片区别(尺寸不一样) -> 发布图片太大,导致显示不出来 -> 1.改图片尺寸不太好使 -> 系统的UITabBarButton不好使 -> 发布按钮不能使用UITabBarButton去实现 -> 1.直接往tabBar中间添加一个发布按钮(1.多了一个控制器 2.不安全,有可能系统UITabBarButton把你的按钮覆盖) -> 布局tabBar上子控件位置,平均分成5等分,中间留一个文字
布局tabBar上子控件位置 -> 1.自定义这个控件 2.重写layoutSubviews
解决1.选中标题颜色 黑色
- 分析:设置选中标题颜色 -> 拿到谁去设置 -> 标题属于按钮的内容 -> 对应子控制器的tabBarItem
标题颜色和大小:改为黑色,默认为蓝色
通过load加载-->全局的tabBarItem调用apperanceWhen-->创建可变字典,在字典中拿到NScolorAN属性设置黑色-->进去查会发现tabItem父类有个setTitle方法:-->同样的方法设置字体大小用字典的NSFont
apperance的使用条件:只要遵守了这个UIAppearance协议,就能调用appearance
哪些属性可以通过UIAppearance设置?只要属性有UI_APPEARANCE_SELECTOR这个宏描述,就可以使用UIAppearance设置appearance:必须要再显示之前设置(self.view removeSupviews)
设置所有的导航标题
分析: 导航条内容 -> 导航条由栈顶控制器的navgationItem -> 导航控制器的view永远显示出来是栈顶控制器的view ->
因为有4个导航控制器,所有抽出一个UIBarButtonItem的分类-->设置接收普通图片与高亮图片以及监听点击addtag的方法
实现该方法,注意点:记得按钮要调用sizeToFit,会发现直接添加到UIBarButtonItem上发现点击范围不对-->所以将创建的button先添加到一个尺寸与button一样的UIView上,在添加到UIBarButtonItem上-->通过该方法设置所有的导航控制器
- 设置导航条共有的内容-->创建导航控制器获取整个应用的Bar用appearence方法-->设置字体颜色大小-->注意点:设置导航条背景图片:一定要是UIBarMetricsDefault,iOS9之前:UIBarMetricsDefault,导航控制器跟控制器的view尺寸会减少64
- 设置每个导航器所含内容,并且监听点击事件,发现一个月亮按钮又选中状态的情况
- 到UIBarButtonItem中设置一个含选中图片的方法,当点击时,让月亮成为选中按钮
问题3.4
3.发现使用系统的返回是蓝色,要设置成黑色
- 重写返回按钮-->创建UITableVc,当点击按钮时push到设置Vc中-->在UIBarButtonItem添加一个设置标题的方法,方便下次其他需要的直接用,添加返回标题为黑色时发现距离左边太远了.
-
在该方法中设置内边距解决这问题,
-
考虑到后面可能需要设置其他的返回按钮,所以在push方法设置返回按钮,注意:如果跳转的控制器不设置颜色会卡顿
-
当添加的按钮覆盖了系统的按钮发现系统的滑动功能没有了,添加滑动功能,滑动返回功能 -> 1.手势被干掉 pass 2.代理 -> 根控制器不需要滑动返回,不然会发现有锁死的可能,
-
研究全屏滑动返回功能:为什么导航控制器只能边缘触发手势 -> 打印了下系统手势 -> 添加Pan手势,发现手势少一个target和一个action-->
-
打印系统的self.interactivePopGestureRecognizer,会发现一些方法
-
可以用系统的-->系统的UIScreenEdgePanGestureRecognizer会调用target的action方法来滑动返回-->所以用系统的target与action(handleNavigationTransition:)方法就行
-
把以前的边缘滑动设置为NO
-
知识补充
- UIScreenEdgePanGestureRecognizer:边缘滑动手势
- UIPanGestureRecognizer:全屏,整个范围