看到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, , , ); }completion:^(BOOL finished) { }];

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

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

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 = ;// 阴影扩散的范围控制
targetView.layer.shadowOffset = CGSizeMake(, );// 阴影的范围
}

Demo地址:点击这里

有什么bug,还请告知。

最新文章

  1. iOS 25个性能优化/内存优化常用方法
  2. C# Mvc中文件下载
  3. 简单Hosts使用说明
  4. Posix消息队列
  5. iOS开发数据库篇—SQL
  6. 墙国内新建Rails应用的要点(windows 7环境, Rails 4.2.0)
  7. Linux基础01 学会使用命令帮助
  8. Java继承_接口练习题
  9. SVN Server配置详解 及备份
  10. 分页控件(PageControl)的相关属性说明
  11. QQ炫舞官网选项卡效果
  12. BZOJ 1037: [ZJOI2008]生日聚会Party [序列DP]
  13. leetcode — sum-root-to-leaf-numbers
  14. 学习DButils笔记
  15. laravel控制器之资源控制器
  16. Bugfree——CentOS6.8搭建测试环境
  17. php分享十六:php读取大文件总结
  18. UIStatusBarStyle PreferredStatusBarStyle does not work on iOS 7
  19. 《java设计模式》之责任链模式
  20. JAVA-JSP之taglib指令

热门文章

  1. 获取用户真实ip
  2. C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
  3. 一、winForm-DataGridView操作——控件绑定事件的两种方法
  4. Asp.Net 学习笔记(IIS不同版本和Asp.Net)
  5. MVC中通过ajax判断输入的内容是否重复(新手笔记,请各位多多指教)
  6. 【转】TOP10美国虚拟主机/网站空间推荐
  7. D3.js的基础部分之选择集的处理 enter和exit的处理方法 (v3版本)
  8. 机器学习与Tensorflow(3)—— 机器学习及MNIST数据集分类优化
  9. 远程连接阿里云服务器出现"远程桌面,身份验证错误:要求的函数不受支持"解决办法
  10. redis入门概述