• 自定义一个可以动态折叠的UITAbleViewCell


     看到code 4APP上有一个折叠的UITAbleViewCell,不过是swift的,所以自己尝试做一个简单的可折叠的UITAbleViewCell

    主要实现一个可以折叠的UITAbleViewCell

    效果图如下:

    用到下面这些知识点:

    1.单边圆角:

    我们经常会遇到一些情况需要进行单边圆角或者边界线的设置,我简单封装了一个类别,github网址

    2.锚点的更改

    项目中主要围绕view上边界进行3d旋转,所以在动画之前需要进行锚点的设置。

    关于锚点的详细概念,可以参考我的另一篇博客:点击这里

    因为锚点改变时,frame也会变动,所以在改变锚点时需要重新设置frame。

    我这里主要用下面的代码进行锚点的更改:

    - (void)setAnchorPointTo:(CGPoint)point view:(UIView*)view{
        
    /*    
     
        CGRect frame = view.frame;
        frame.origin.x+=(point.x - view.layer.anchorPoint.x) * view.frame.size.width;
        frame.origin.y+=(point.y - view.layer.anchorPoint.y) * view.frame.size.height;
        view.frame = frame;
        view.layer.anchorPoint = point;
     
    */
        //和上面注销掉的代码一个意思
        view.frame = CGRectOffset(view.frame, (point.x - view.layer.anchorPoint.x) * view.frame.size.width, (point.y - view.layer.anchorPoint.y) * view.frame.size.height);
        view.layer.anchorPoint = point;
    }

    3.旋转动画;

    关于旋转动画,我用的是下面的方法:

    [UIView animateWithDuration:0.3 animations:^{
            self.ThirdView.layer.transform=CATransform3DMakeRotation(M_PI_2, 1, 0, 0);
            
        }completion:^(BOOL finished) {
    
    
    }];

    当然你也可以用这个方法:

        CABasicAnimation* rotationAnimation;
        rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
        [self setAnchorPointTo:CGPointMake(0.5, 0) view:self.secondView];
        rotationAnimation.fromValue = [NSNumber numberWithFloat: M_PI ];
        rotationAnimation.toValue = [NSNumber numberWithFloat: 0 ];
        rotationAnimation.duration = 3;
        rotationAnimation.cumulative = YES;
        rotationAnimation.repeatCount = 1;

    4.md34

    利用md34属性进行类似于翻页效果的设置,关于md34属性网上有很多文章说明,这里不做详细解释。

    具体代码为:

    //给containView添加偏移
        CATransform3D transfrom3d = CATransform3DIdentity;
        transfrom3d.m34 = -0.002;
        self.InnerView.layer.sublayerTransform = transfrom3d;

    5.阴影:

    -(void)setShadow:(UIView*)targetView{
        //阴影
        targetView.layer.shadowOpacity = 1.0;// 阴影透明度
        targetView.layer.shadowColor = [UIColor grayColor].CGColor;// 阴影的颜色
        targetView.layer.shadowRadius = 3;// 阴影扩散的范围控制
        targetView.layer.shadowOffset  = CGSizeMake(3, 3);// 阴影的范围
    }

     Demo地址:点击这里

    有什么bug,还请告知。

  • 相关阅读:
    插头DP专题
    HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)
    HDU 4865 Peter's Hobby(概率、dp、log)
    HDU 4870 Rating(概率、期望、推公式) && ZOJ 3415 Zhou Yu
    HDU 4862 Jump(最小K路径覆盖)
    codeforces 449B Jzzhu and Cities (Dij+堆优化)
    2014 12th GDCPC 总结
    HDU 1693 Eat the Trees(插头DP、棋盘哈密顿回路数)+ URAL 1519 Formula 1(插头DP、棋盘哈密顿单回路数)
    UVALive 4949 Risk(二分网络流、SAP)
    Codeforces 1105D(双层广搜)
  • 原文地址:https://www.cnblogs.com/sunjianfei/p/7095796.html
Copyright © 2020-2023  润新知