Swift 版本很好的卡片切换效果基于ZLSwipeableView
前言:在这篇文章你可以学到,一些基本的Swift语法, 基本UI控件闭包等.
实际的效果,比gif图的效果好很多.
首先需要导入ZLSwipeableView
pod 'ZLSwipeableView', '~> 0.0.8'
下面是代码
// 1. 签协议
class ViewController: UIViewController, ZLSwipeableViewDelegate, ZLSwipeableViewDataSource {
// 2, 随便定义一个标题数组
let titles = [
"Teame",
"Sea",
"Em",
"Nes",
"Pver",
"Beole",
"Amst",
"Wisria",
"Whalt",
"Midue",
"Suwer",
"Orage",
]
var index = 0
var xtSwipeableView: ZLSwipeableView?
在viewDidLoad
xtSwipeableView = ZLSwipeableView.init()
xtSwipeableView!.frame = CGRectMake(55, 110, self.view.frame.size.width - 110, self.view.frame.size.height - 220)
xtSwipeableView!.delegate = self
xtSwipeableView!.dataSource = self
xtSwipeableView!.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(xtSwipeableView!)
self.setButton()
创建 ⬆️,⬇️,⬅️,右btn
func setButton()
{
var items = ["上", "下", "左", "右"]
for i in 0...3{
let btn = UIButton.init(type: UIButtonType.Custom)
self.view.addSubview(btn)
btn.frame = CGRectMake(50 + 60 * (CGFloat)(i), self.view.frame.size.height - 90, 50, 50)
btn.setTitle(items[i], forState: UIControlState.Normal)
btn.addTarget(self, action: "handle:", forControlEvents: UIControlEvents.TouchUpInside)
btn.tag = i
}
}
btn点击方法
func handle(btn: UIButton)
{
let tagType = btn.tag
switch tagType{
case 0:
xtSwipeableView!.swipeTopViewToUp()
case 1:
xtSwipeableView!.swipeTopViewToDown()
case 2:
xtSwipeableView!.swipeTopViewToLeft()
case 3:
xtSwipeableView!.swipeTopViewToRight()
default:
print("....")
}
}
loadViews
override func viewDidLayoutSubviews() {
xtSwipeableView!.loadViewsIfNeeded()
}
ZLSwipeableViewDataSource
func nextViewForSwipeableView(swipeableView: ZLSwipeableView!) -> UIView! {
if self.index >= self.titles.count {
self.index = 0
}
let view = CardView.init(frame: swipeableView.bounds)
view.backgroundColor = UIColor.purpleColor()
view.textLabel?.text = self.titles[index]
// 闭包回调
view .initWithClosure(addressThatTakesAClosure)
self.index++
return view
}
func addressThatTakesAClosure(string:String) ->Void{
// do you something
print("\(string)")
}
CardView类的实现(在这你可以定义你所需要的)
class CardView: UIView {
typealias sendValueClosure = (string:String)->Void
/// 声明一个Closure(闭包)
var myClosure:sendValueClosure?
/// 下面这个方法需要传入上个界面的someFunctionThatTakesAClosure函数指针
func initWithClosure(closure:sendValueClosure?){
myClosure = closure
}
///
var imagesView: UIImageView?
var textLabel : UILabel?
var btn: UIButton?
///
override init(frame: CGRect) {
super.init(frame: frame)
self.setView(frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
/// setView
func setView(frame: CGRect){
// Shadow
self.layer.shadowColor = UIColor.lightGrayColor().CGColor
self.layer.shadowOpacity = 0.33
self.layer.shadowOffset = CGSizeMake(0, 1.5)
self.layer.shadowRadius = 4.0
self.layer.shouldRasterize = true
self.layer.rasterizationScale = UIScreen.mainScreen().scale
// Corner Radius
self.layer.cornerRadius = 10.0
// Custom view
imagesView = UIImageView.init(frame: CGRectMake(5, 5, self.frame.size.width - 10, self.frame.size.height / 2))
imagesView!.backgroundColor = UIColor.whiteColor()
self.addSubview(imagesView!)
textLabel = UILabel.init(frame: CGRectMake(20, imagesView!.frame.size.height + 10, 120, 20))
textLabel!.backgroundColor = UIColor.lightGrayColor()
self.addSubview(textLabel!)
btn = UIButton.init(type: UIButtonType.Custom)
btn?.setTitle("BUTTON", forState: UIControlState.Normal)
btn?.frame = CGRectMake(20, (textLabel?.frame.origin.y)! + 20 + 10, 100, 50)
self.addSubview(btn!)
btn?.addTarget(self, action: "btnClick", forControlEvents: UIControlEvents.TouchUpInside)
}
/// 这里实现了btn点击方法的回调, 回到控制器(VC),可实现跳转
func btnClick()
{
if myClosure != nil{
self.myClosure!(string: "hello World")
}
}
}
总结: 希望看到这篇文章对读者有一定Swift语言的帮助, 且完成卡片切换效果需求. 喜欢请点赞. 稍候会把项目传到github.今天有点晚了.睡了 呼呼. -.-
demo参考(Objective-C & Swift) :
https://github.com/Zhangjingwang1993/XSmomoStyle
觉得还可以请点个赞, 我要申请微博加V. 点个赞吧客官 -.-
个人技术博客站欢迎您
原文链接:http://www.jianshu.com/p/734962c9bbed
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
Swift 版本很好的卡片切换效果基于ZLSwipeableView的更多相关文章
- Swift 版本号非常好的卡片切换效果基于ZLSwipeableView(相似于[陌陌点点][探探])
这是我在简书的文章. http://www.jianshu.com/p/734962c9bbed
- jQuery手机端触摸卡片切换效果
效果:http://hovertree.com/code/run/jquery/a1gr3gm9.html 可以用手机查看效果. 代码如下: <!doctype html> <htm ...
- tab切换的效果——仿照今日头条APP的切换效果
说点废话;不知道是哪一版本起头条的tab切换效果就变了,一直琢磨着这个事,去度娘那里也没有什么结果:正好这两天有空就尝试做了一下:用前端的技术来实现: 先看效果吧:上面的tab随着slide滑动,上面 ...
- Swift - UITableView状态切换效果
Swift - UITableView状态切换效果 效果 源码 https://github.com/YouXianMing/Swift-Animations // // TableViewTapAn ...
- 很实用的HTML5+CSS3注册登录窗体切换效果
1. [代码]3个很实用的HTML5+CSS3注册登录窗体切换效果 <!DOCTYPE html><!--[if lt IE 7 ]> <html lang=" ...
- [Swift通天遁地]九、拔剑吧-(7)创建旋转和弹性的页面切换效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Swift通天遁地]九、拔剑吧-(8)创建气泡式页面切换效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Swift通天遁地]九、拔剑吧-(15)搭建具有滑出、视差、3D变形等切换效果的引导页
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
随机推荐
- 正则PerlRegEx实现的批量替换指定文件中的标签
示例: 一个朋友需要而编写的标签升级更新. 速度超快,1w个文件大概4,5秒,本想加个多线程显示进度,后来想想算了 主要代码: reg.RegEx := '<' + Edit_regular1. ...
- string和stringBuilder的区别
曾经被问到过这个问题,回答得不是很好,在网上找了一下,园子里有大神很详细地讨论了二者的区别. http://www.cnblogs.com/yunfeng8967/articles/1093832.h ...
- Storm集群安装详解
storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器 ...
- MYSQL-给带特殊符号的数据库创建用户名
MYSQL-创建数据库及用户名: mysql> create database yoon;Query OK, 1 row affected (0.00 sec) mysql> grant ...
- C#基础原理拾遗——面试都爱问的委托和事件(纠正)
这篇博客是我昨天写的,文中的观点有些问题,后经过网友留言和个人学习发现错误,原文还是保留,更改补在后面,不怕贻笑大方,唯恐误人子弟.不知道还能不能放在首页,让被误导的同学再被反误导一次. 一.原文 几 ...
- NodeJS下访问SQL Server
1.下载node-sqlserver (1)msnodesql (msnodesql-0.2.1-v0.8-x64.msi)下载地址:下载 自行选择与自己系统相符的版本,点击安装. (2)msnod ...
- VBS基础篇 - 条件语句
经常地,当我们编写代码时,我们需要根据不同的判断执行不同操作,我们可以使用条件语句完成这个工作. If...Then...Else 在下面的情况中,您可以使用 If...Then...Else 语句: ...
- Daily Scrum 11.6
摘要:在本次meeting时,所有代码的修改工作已经接近尾声,接下来是进行的就是单元测试以及进行alpha版本的改进.本次的Task列表如下: Task列表 出席人员 Today's Task Tom ...
- FMS (端口问题)如何穿透防火墙
转自http://www.cnblogs.com/zhchongyao/archive/2010/01/22/1653803.html 先是管理端口,就是fms2_console文件连接到server ...
- kali linux安装vm
https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-10.0.2-1744117.i386.bundle v ...