本文转载至http://www.cocoachina.com/ios/20150330/11440.html

今天我通过完成一个长按cell删除的Demo,向你们展示熟练运用storyboard和Autolayout能给你的开发速度和效率带来多大的提升.

删除动画

废话不多说,新建一个Single View Application.

到storyboard选中我们唯一一个的viewcontroller,找到xcode的菜单栏,Edit->Embed In->NavigationController.这时候storyboard会自动为你生成一个navigationController,并且讲viewcontroller当做rootViewcontroller.

点击Viewcontroller里的navigationbar.右边面板找到这些属性

找到title

把title改成City.

navigationbar的title

已经显示为City.

拉一个tableview到viewcontroller上,并且约束改为这样.

tableview的约束

右键单击我们的tableview,把delegate和datasource设置成我们的viewcontroller.

右键单击tableview

设置代理和数据源

现在,既然设置了delegate和datasource,一些必须实现的方法就必须要在viewcontroller里写了.

这时候我们还少一个cell,选中tableview,找到右边面板.

添加一个cell原形

这时候我们的tableview里会出现一个空白cell,我们这时候先用系统自定义的basic款式就行了.改identifier为basicCell

basicCell

然后,我们要实现tableview的代理方法

运行.

运行效果

总耗时不超过2分钟.全部手写代码要花多久?

为了实现第一张图的那种cell,我们需要做这么几件事.

1.在cell里添加一个两个view,最底层的一个view专门用来显示阴影,第二个view在上面,有圆角.(为什么要有一个view专门来显示阴影不懂的自行百度).而且第一个view宽高要比第二个view小一些.

2.第二个view上要有一个imageView和两个label,这个很简单拉线搞约束就行了.

直接上图.

先把我们的cell的类型改为custom.然后把identifier改为"customCell".新建一个类,继承自UITableViewCell,起名叫CustomTableViewCell.和我们的storyboard里的cell关联起来.(这些操作相信大家都会把.)

先添加阴影view(shadowView).直接把一个view拖到我们的cell上.

再添加一个容器view(containerView),用来放我们的imageview和两个label.

通过这个约束你可以看到我们的容器view明显比阴影view大.

然后把我们的图片和两个label按如下位置放置.

这里不用care label的约束,需要注意的只有imageView,先给imageView加如下约束.

意思就是上下与容器viewpadding为0,左边距为0,然后右键选中imageview,拉一根线到我们的容器view.出现这个菜单

选中equal Width,然后去右边找到我们的这个约束,双击,内容改为.

这个约束的意思就是imageView的宽度适中保持为父view宽度的十分之三.

现在我们的cell的.h文件是这样的.

那个block是我用来回调的,你们这里也可以用delegate.

.m文件是这样的.

除了手势的那个方法不太好懂以外,其他的很简单,就是设置阴影的一些属性,加给cell的contentview设置一个长按手势.

长安手势方法里的意思其实就是当用户长按cell之后做一个截图,当用户右移一定程度时,做一个回调.

我们的viewcontroller里的代码是这样的.

ok,到这里,我们的所有代码搞定了。如果这里让你全部使用代码写,你要花多久呢?

demo的地址.

 
 

一个Demo展示Storyboard的强大的更多相关文章

  1. 通过写一个Demo展示C#中多种常用的集合排序方法

    不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧! namespace Demo { /// <summary> /// ...

  2. 白盒测试之gtest第一个demo

    认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示. 一.需要测试的C++代码: #include "myfunction.h" // ...

  3. angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

    曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示r ...

  4. lesson5:Condition的原理分析及demo展示

    Condition 将 Object 监视器方法(wait,notify,和notifyAll)分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,为每个对象提供多个等待 set(wa ...

  5. Android Studio精彩案例(六)《使用一个Demo涵盖补间动画所有知识》

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 元旦假期里,闲的无事,看到美团加载数据的动画,就突想写个Demo把动画知识集成一下.后来想了想,还是直接用一个Demo来把所有动画知识 ...

  6. (1)shiro简介和第一个demo

    之前一直在用shiro开发,不过只是会使用,并没有深入了解,最近有时间学习了一下,把最近学习所得分享一下. shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授 ...

  7. 分享知识-快乐自己:初始 Struts2 (基本概念)及 搭建第一个Demo

    1):struts2 的基本概念: 1-1):Struts2 是什么? 1.Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2 ...

  8. Android中Service的一个Demo例子

    Android中Service的一个Demo例子  Service组件是Android系统重要的一部分,网上看了代码,很简单,但要想熟练使用还是需要Coding.  本文,主要贴代码,不对Servic ...

  9. 初识nginx之第一个demo

    商城项目做了一个多月了,想到必须用到负载均衡,简单了解了一下nginx,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.ba ...

随机推荐

  1. Hacker - 世界上第一个黑客

    http://juliet.iteye.com/blog/176525凯文·米特尼克,1964年生于美国加州的洛杉矶. 13岁时他对电脑着了迷,掌握了丰富的计算机知识和高超的操作技能,但却因为用学校的 ...

  2. Memcached 教程

    http://www.runoob.com/memcached/memcached-tutorial.html

  3. Linux - 进程控制 代码(C)

    进程控制 代码(C) 本文地址:http://blog.csdn.net/caroline_wendy 输出进程ID.getpid(). 代码: /*By C.L.Wang * Eclipse CDT ...

  4. Linux 系统 pptpd+radius+mysql 安装攻略

    分类: 原文地址:Linux 系统 pptpd+radius+mysql 安装攻略 作者:wfeng .你所需要的软件 内核最好能升级到2.6 如果你是centos的用户,可以通过yum update ...

  5. windows server 2008 桌面图标

    1.开始-->"搜索"-->"icon"-->"显示桌面通用图标"

  6. memcache stats命令详解

    参数不算多,我们来启动一个Memcache的服务器端:  /usr/local/bin/memcached -d-m 10 -u root-l 192.168.0.200-p 12000-c 256- ...

  7. JavaScript学习日志(2)

    javascript数据类型: 字符串string.数字number.未定义Undefined.空Null.布尔Boolean.数组Array.对象Object.javascript对象: 对象由花括 ...

  8. poj3253 优先队列

    Farmer John wants to repair a small length of the fence around the pasture. He measures the fence an ...

  9. javaweb项目运行时错误

    1.Debug模式下进入ThreadPoolExecutor.class的解决方式 进入window-->preferences-->java-->debug-->去掉Susp ...

  10. linux命令之高级使用 du

    du命令:disk usage,顾名思义,是关于目录使用情况的,它的作用就是计算目录大小的. 1. 想看当前目录下所有目录以及子目录的大小: # du -h . “.”代表当前目录下.也可以换成一个明 ...