zoukankan      html  css  js  c++  java
  • 一天一工程总结

    一天一工程总结
    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焦点,点击无效果对用户体验的影响很大。

  • 相关阅读:
    FPGA 设计怎样进行面积优化(逻辑资源占用量优化)
    实现文件下载的java代码
    java推断字符串是否为乱码
    cocos2dx 制作单机麻将(二)
    CPU 风扇清理灰尘加油全过程图解
    初识 Cloudera Impala
    怎样设计接口?
    Android ViewPager使用具体解释
    php反射类 ReflectionClass
    memwatch的使用
  • 原文地址:https://www.cnblogs.com/so-magic/p/4616472.html
Copyright © 2011-2022 走看看