一、链式语法的实现:
定义在WMZPageConfig
文件中:
#define WMZPagePropStatementAndPropSetFuncStatement(propertyModifier,className, propertyPointerType, propertyName) \
@property(nonatomic,propertyModifier)propertyPointerType propertyName; \
- (className * (^) (propertyPointerType propertyName)) propertyName##Set;
#define WMZPagePropSetFuncImplementation(className, propertyPointerType, propertyName) \
- (className * (^) (propertyPointerType propertyName))propertyName##Set{ \
return ^(propertyPointerType propertyName) { \
self->_##propertyName = propertyName; \
return self; \
}; \
}
使用的地方WMZPageParam
(参数),举例:
WMZPagePropStatementAndPropSetFuncStatement(strong, WMZPageParam,NSArray*, wTitleArr)
将上述宏替换掉的结果为:
@property(nonatomic,strong)NSArray* wTitleArr;//属性定义
- (WMZPageParam * (^) (NSArray* wTitleArr)) wTitleArrSet;//属性Setter方法
- (WMZPageParam * (^) (NSArray* wTitleArr))wTitleArrSet{//属性Setter方法实现
return ^(NSArray* wTitleArr) {
self->_wTitleArr = wTitleArr;
return self;
};
}
二、C语言实现一个类
定义位置:WMZPageParam.h
WMZPageParam * PageParam(void);
实现位置:WMZPageParam.m
WMZPageParam * PageParam(void){
return [WMZPageParam new];
}
使用:
WMZPageParam *param = WMZPageParam()
延伸:这个用实例方法和类方法都可以实现,目的是为了初始化一个实例对象。
三、数组方法
[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
作用:数据里面的所有对象依次执行该方法。
四、详解iOS开发在Category和Protocol中添加属性(Property)
参考博客:blog.csdn.net/u010347934/…
五、WMZPageController
1、导航栏设置
2、横竖屏处理
3、将 WMZPageView 添加到当前控制器的View里面
4、实现WMZPageScrollProcotol
协议里面的属性@synthesize param = _param ;...
(编译器期间,让编译器自动生成getter/setter方法。)
六、WMZPageView
Demo中 App使用->爱奇艺 的视图结构:
//初始化的时候调用showData方法,这里设置默认param ,配置UI
- (void)showData{
[self.param defaultProperties];
[self setUpUI:YES];
}
//upSc和downSc的关系
self.downSc.tableFooterView = self.upSc;
upSc //WMZPageLoopView继承自UIView;头部标题滚动视图,也就是菜单视图底部view
upSc.mainView //WMZPageMenuView继承自UIScrollView,菜单视图
upSc.dataView //WMZPageDataView继承自UIScrollView,底部视图
downSc //WMZPageScroller继承自UITableView;底部全屏滚动视图,也就是sonChildVC底部view
小结
WMZPageController
整体是一个tableview
,菜单和子控制器视图均为UIScrollView
,且两者均为UIView
的子视图,该子视图作为tableview
的tableFooterView
。