边拓展资料边分析边
展资料边分析边 第一篇
将注意力放回到viewDidLoad技巧的下列代码中:
的leftMenuViewController等三个控制器都包含一个sideMenuViewController的成员,并让其指向self。那么是不是每一个视图控制器都要添加一个JCSideMenuViewController的属性呢哇靠,太麻烦了吧。没错,如果让我来做的话,我只会这种技巧。
原项目却给出了一个非常好的解决方案:在JCSideMenuViewController头文件中声明一个UIViewController的Category,并在类别中将JCSideMenuViewController和UIViewController动态关联起来。
来说要导入头文件:
K中objc_setAssociatedObject函数的定义如下:
个参数key表示二者关联的方式,在这里我们用@selector(sideMenuViewController)将其关联起来,该key用于获取被关联对象。
个参数表示要关联的对象,也就是sideMenuViewController。
个参数表示关联的策略,这里使用的是OBJC_ASSOCIATION_ASSIGN。
来是获取关联对象的函数,在sdk中定义如下:
展资料边分析边 第二篇
来说来看看JCSideMenuViewController的初始化经过,包括init技巧和viewDidLoad技巧。代码如下:
防止崩溃,在viewDidLoad技巧中开头来说要判断这几许视图控制器是否为空。
iewDidLoad技巧中,我们做的就是将三个视图控制器的视图添加到JCSideMenuViewController的根视图上,而初始的MenuViewControllers的视图均设置为隐藏。
添加的两个轻扫手势swipeGesture的影响是关闭菜单。
展资料边分析边 第三篇
基于JCSideMenuViewController实现传统的侧边菜单形式。
给出我的行为:
来说定义kZoomScale = (如果想使用原来的菜单样式,只需要将下面的if 零修改为if 一)
效果如下:
,在菜单栏后面设置背景图片会占用一定的内存(iPhone真机调试一三M左右),因此最好还是使用一些透明背景比较好,节省内存而又不影响美观。
还是附上源码,交流进修。
SideMenuViewControllerDemo下载地址:点此进入下载页
拓展资料一下我从这个项目的源码分析中进修到的一些聪明:
结构体初始化:
在项目中使用委托技巧:
使用UIViewController Category关联类
是本次源码分析的最大收获,这确实一个非常棒的设计模式,进修了。
仿射变换和animation技巧
StatusBarStyle和屏幕旋转后的视图适配
wipe手势
n和swip手势在入门时用过,当时也是一知半解,并且早就忘得七七八八了,而且当时也没有写博客记录,幸好本次进修好好回顾了一下。
IPanGestureRecognzier类中:
translation记录了pan手势的平移轨迹,velocity记录了pan手势的速度。
translatesAutoresizingMaskIntoConstraints属性的影响是禁止将视图的AutoresizingMask转换成Autolayout。
ENUM
来还会看更多的项目和类库,看了以后会继续更新博客。
