文章来源:淘论文网   发布者: 毕业设计   浏览量: 37

定做请加QQ:1052602713 或加微信:


还可以点击去查询以下关键词:
[炫酷]    [毕业]    [交互]    [视图]    [iOS实现炫酷悬毕业停交互视图]   

项目介绍:

不知道怎么开场,以一条经典语录开场吧。
We grow neither better nor worse as we grow old but more like ourselves.( M. L. Becker )

随着年龄的增长,我们并没有变得更好也没有变得更坏,而是变得更象我们自己(贝克尔)

下载地址:Github

层级说明:

此控件为UIView,分三个部分,顶部为headerView,setter方法设置,中间的title视图为可以滚动的scrollView,可以设置标题选择和未选择的颜色,底部为collectionView嵌套的tableView,而tableView为会员注册的类名加载而来,需要继承`HHBaseTableView`,重写父类的一些方法,会员只需要管理headerView和tableView即可,详见`Demo`.

该视图包含三个小模块:

BaseConstruct :可选8中waitHud样式,提醒文字,错误页面;

RefreshManager :包含三种刷新样式,KVO监听,使用简单;

LinkageView :指示器联动

传值:

事件传递
传值方式为:KVC字典传值,控制器定义Block,以key值区分事件,保存在HHHoverLinkageView的actionDict中,父视图负责分发到各个子视图,子视图各个以key值获得自己需要调用的Blcok。

@property (nonatomic, strong) NSMutableDictionary *actionDict;//存储block,给子视图传递事件 AddBlockAction(_hoverView.actionDict, HeaderViewButtonClick, ^(NSString *text){ [wSelf showText:text]; });

值传递
主视图中暴露了二个属性,会员根据需要设置数据

@property (nonatomic, copy) NSDictionary *dataDict;//需要传递给子视图tableView的字典 @property (nonatomic, copy) NSArray *dataArray;//需要传递给子视图tableView的数组

会员自定义的tableView只需要重写下面方法即可获得数据

@property (nonatomic, copy) NSDictionary *dataDict;//子类重写 'setter' 获得数据 @property (nonatomic, copy) NSArray *dataArray;//子类重写 'setter' 获得数据 @property (nonatomic, strong) NSIndexPath *indexPath;//子类重写'setter' 获得索引

常用方法:

_hoverView.linkageView.titleArray = self.titleArray;//决定中间title的标题 _hoverView.tableViewClassName = NSStringFromClass([HHHoverTableView class]);//注册类名需要继承'HHBaseTableView',加载会员自定义的tableView

知识点:

1 :tableView的contentOffset实际上就是它的bounds,只需要在scrollViewDidScroll中时时改变为0,即是:scrollView.contentOffset = CGPointZero就可以控制它父视图的坐标,同时加上一系列的边界监测,就可实现上述效果。

2 :关键字copy、assign、weak和strong的灵活运用
对于以下两种是没有太多意义的,每次赋值都会copy一个不可变对象设置属性,开题报告,如果使用插入删除编译时不会报错,但运行时会导致崩溃。

@property (nonatomic, copy) NSMutableDictionary *dictM; @property (nonatomic, copy) NSMutableArray *arrayM;

对于以下类型的属性,非一致类型,都会拷贝copy一个不可变对象设置属性,开题报告,否则直接引用

@property (nonatomic, copy) NSDictionary *dict; @property (nonatomic, copy) NSArray *array;

copy相对于strong它是安全的,strong为引用性,指针可指向任意对象,造成不安全的访问。

weak和assign一个对象销毁时自动赋值nil,一个不会。一般对象解循环引用的时候用weak,而assign常用语基础类型。下面举一个assign不常用到的例子,也是在写此Demo中遇到的。
A对象是一个视图,拥有子视图属性B,子视图B拥有对象属性C,C通过KVO监听B属性的变化。为了保持解耦合,我把B传入C,Cweak引用B设为自己的属性D,在Cdealloc中,让D移除观察者C。


原则上看是没有任何问题的,实际在演示中发现,B视图会先销毁,而后C才会销毁,当B销毁后,C的属性D也会指向nil,在Cdealloc中,无法移除观察者,导致程序崩溃,此时用assign,却能解决这个问题,虽然B销毁了,C依然可以拿到地址,移除观察者,正常销毁。
最后:

由于本人目前知识储备有限,以上说明中,也许会存在一些错误的描述和认识,还希望发现后你能及时指出,以免误导其他读者,在此谢过。


这里还有:


还可以点击去查询:
[炫酷]    [毕业]    [交互]    [视图]    [iOS实现炫酷悬毕业停交互视图]   

请扫码加微信 微信号:sj52abcd


下载地址: http://www.taolw.com/down/7267.docx
  • 上一篇:Swift开发的定制天气APP
  • 下一篇:UITableView毕业设计Header animation