一天一工程总结

一天一工程总结
2015
7.1

一天一工程总结系列
对各类优秀工程的剖析和拙见。有些胡言乱语还请作者谅解。

结构较乱,焦点跳跃性较高。目前仅供个人总结用,不适者可选择不观看^^

TStyleMenuView
cocoachina上推荐的仿美团向下展开列表。
横向的itembar 由LSSelectMenuView实现,该类继承自UIView,同时实现了两个代理LSSelectMenuViewDataSource<NSObject>和LSSelectMenuViewDelegate<NSObject>.
通过
[UIView animateWithDuration:DurationTime animations:^{
        sender.markImgView.transform = CGAffineTransformRotate(sender.markImgView.transform, -M_PI);
    } completion:^(BOOL ok){
        if (ok) {

self.userInteractionEnabled = YES;
        }
    }];
来实现按钮和下拉列表的伸缩动画
工程用一个showview做下拉窗口的背景view,在showview上面做addsubview和removeFromSuperview的操作。且在showview上加一个手势,实现点起收起的操作。
responsechain,收到tap事件的时候,首先在最上层检查是否响应该事件,否则,则向下传递。所以,即使在showview上addsubview,在subview上的点击也能够传递到showview。

showview的大小是满屏,始终覆盖的。只是背景由动画完成,是一种由浅变深的动画。没有上下伸缩的那么突兀。

在items之间不停切换的时候,showview并不改变状态,仍然是半透明颜色,占满屏。
点击某一个item打开和收缩的时候,会有颜色渐变的动画。所以,跟showview配对的还有一个accessibilityIdentifier标示showview的颜色状态。代码中showview有一个高度的变化。对,如果不做高度的变化,关闭之后,点击不了背后的view。

下拉视图的关闭
[UIView animateWithDuration:DurationTime animations:^{
        //
        vv.frame = CGRectMake(0, 0, vv.frame.size.width, 0);
    }completion:^(BOOL finished) {
        //
        [vv removeFromSuperview];
    }];
关闭背景
        [UIView animateWithDuration:DurationTime animations:^{
            //
            _showView.backgroundColor = [UIColor colorWithRed:0.145 green:0.145 blue:0.145 alpha:0];
            
        }completion:^(BOOL finished) {
            //
            _showView.frame = minShowRect;
            _showView.accessibilityIdentifier = @"NO";
        }];

accessibilityIdentifier
UIAccessibilityIdentification
The UIAccessibilityIdentification protocol is used to associate a unique identifier with elements in your user interface.
UIAccessbilityElement *elelment = [[UIApplication sharedApplication] accessbilityElementWithLabel:label];
UIView *view = (UIView*)[UIAccessibilityElement viewContainingAccessbilityElement:element];
类似tag的作用。快速寻找一个view。

该类的缺点是
1.下拉页面不独立,合并在LSSelectMenuView中
2.按钮的点击在处理点击事件的一开始就禁掉了,到动画完成才打开。可能是为了规避动画冲突,但是作为主要的action焦点,点击无效果对用户体验的影响很大。

时间: 2024-10-10 08:20:52

一天一工程总结的相关文章

一天一工程总结系列-7.2

20157.2一天一工程总结系列对各类优秀工程的剖析和拙见.有些胡言乱语还请作者谅解. VBFPopFlatButton1.执行多次的单例#define AGEColorImplement(COLOR_NAME,RED,GREEN,BLUE)    \+ (UIColor *)COLOR_NAME{    \    static UIColor* COLOR_NAME##_color;    \    static dispatch_once_t COLOR_NAME##_onceToken; 

订单同步工程标准化改造事记

说起来,也是一段比较有挑战有压力的经历.做完之后,有一种云淡风轻的感觉,故记之. 缘起 周二下午,忽报:QA 环境下单之后,订单搜索不出来了. 略排查,发现订单记录并未同步到 ES 索引里.进一步发现,订单同步工程 S 虽然进程还在,但已经不再处理消息了.昨天因为一个项目的需求才测试过 QA 环境订单同步无问题,上午也没动静,怎么下午就突然报问题了呢? 很快联想到,前两日,框架层发了通告:不再为使用了 3.2.x 以下 dubbo 版本的应用提供自动注册 dubbo 服务的能力.很可能是 S d

C++工程编译之“error LNK2001: 无法解析的外部符号”

今天一整天都在折腾“error LNK2001: 无法解析的外部符号”,就在头疼不已的时候,总算是找到问题原因了:各个动态链接库的编译方式必须统一才行,要不然很容易对库函数的引用产生冲突.简单来说就是,如果使用的第三方函数库编译方式采用/MD,那么主工程也应该使用/MD.我使用了libevent,而主工程默认采用/MT,所以需要忽略一大堆的函数库,我还纳闷呢,怎么会这么奇怪!!今天总算是解决了长久以来的困惑了. 下面引用一篇文章的描述:[Z]VC运行库版本不同导致链接.LIB静态库时发生重复定义

.net 工程中引用出现感叹号

在工程中引用出现感叹号,有两个原因 原因1:  这是由于之前引用的Dll文件不见了. 右键有感叹号的项,然后选择 "属性" 里边有一个路径属性 这个路径就是之前这个Dll文件的路径,现在这个文件不在了,你需要找到现在这个文件的路径 右键有感叹号的项,然后选择"移除" 右键"引用",选择添加引用,然后选择那个不在的dll的真实路径 其他的项用相同的方式处理 原因2:可能是引用的.Net版本高于了当前工程的.Net版本 更改所引用的工程文件的.Net

maven(二) maven项目构建ssh工程(父工程与子模块的拆分与聚合)

前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ssh项目分割为不同的几个部分独立开发,很重要,加油 --WH 一.maven父工程与子模块的拆分与聚合原理 问题描述:将ssh工程拆分为多个模块开发 1.1.拆分原理 创建一个maven project(pom),然后在创建三个子模块(maven moudule),其中三个子模块,分别为 dao.service.web,也就是将三层的内容分别独立为一个项目,进一步将耦合性降低,其中如何将他们

HDU - 1232 畅通工程

畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可).问最少还需要建设多少条道路? Input测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M:随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号.为简单起见,城镇从1到N编号. 注意

HDU1863 畅通工程---(最小生成树)

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 27972    Accepted Submission(s): 12279 Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出

ADF Faces导出Excel文件【附样例工程】

本文提供一个基于ADF Face组件开发样例工程,工程的实现过程分为3个部分以应对Excel导出开发中常见的处理. 1.空模版文件下载:将Excel文件视为普通文件提供下载操作. 2.数据文件输出,将数据内容输出为Excel文件,目标文件尽在服务端内存中存在,这种方式需要对Excel文件的内容处理,需要引入响应的类库. 3.模版文件填充数据后下载,基于服务端的物理文件为模板,将业务数据填入约定位置后提供下载,在实现方面需要为工作簿对象指定源文件输入流,并完成后续内容处理. 实现的基本思路,由AD

eclipse 创建maven 项目 动态web工程(出现问题)

Eclipse 创建maven 项目 动态web工程 注:Eclipse版本为(Version: Mars.1 Release (4.5.1))maven版本为(apache-maven-3.3.9) 1. 此处是在你安装好了maven插件的前提下进行的并且配置好了你的maven环境指定好了你的maven的本地仓库.下面就开始maven web项目的搭建 首先:点击新建一个项目maven 2.点击next 3.选择web选项 4.创建你的项目的坐标点击finish完成 5.项目创建完成但是有错误