前言:在这篇文章你可以学到,一些基本的Swift语法, 基本UI控件闭包等.

实际的效果,比gif图的效果好很多.

卡片切换.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的更多相关文章

  1. Swift 版本号非常好的卡片切换效果基于ZLSwipeableView(相似于[陌陌点点][探探])

    这是我在简书的文章. http://www.jianshu.com/p/734962c9bbed

  2. jQuery手机端触摸卡片切换效果

    效果:http://hovertree.com/code/run/jquery/a1gr3gm9.html 可以用手机查看效果. 代码如下: <!doctype html> <htm ...

  3. tab切换的效果——仿照今日头条APP的切换效果

    说点废话;不知道是哪一版本起头条的tab切换效果就变了,一直琢磨着这个事,去度娘那里也没有什么结果:正好这两天有空就尝试做了一下:用前端的技术来实现: 先看效果吧:上面的tab随着slide滑动,上面 ...

  4. Swift - UITableView状态切换效果

    Swift - UITableView状态切换效果 效果 源码 https://github.com/YouXianMing/Swift-Animations // // TableViewTapAn ...

  5. 很实用的HTML5+CSS3注册登录窗体切换效果

    1. [代码]3个很实用的HTML5+CSS3注册登录窗体切换效果 <!DOCTYPE html><!--[if lt IE 7 ]> <html lang=" ...

  6. [Swift通天遁地]九、拔剑吧-(7)创建旋转和弹性的页面切换效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. [Swift通天遁地]九、拔剑吧-(8)创建气泡式页面切换效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. [Swift通天遁地]九、拔剑吧-(15)搭建具有滑出、视差、3D变形等切换效果的引导页

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

随机推荐

  1. 高德amap 根据坐标获取的地址信息

    高德地理逆地理编码接口List<List<Address>> lists = coder.getFromLocation(33.00, 116.500, 3, 3, 3, 50 ...

  2. Use a layout_width of 0dip instead of wrap_content for better performance.......【Written By KillerLegend】

    当你在一个Linearlayout布局中只为一个组件设置android:layout_weight属性时,那么这个组件将默认填充Linearlayout的剩余空间(宽度与高度方向),而不用事先进行测量 ...

  3. C# 获得手机归属地功能

    今天通过查资料了解到web的页面抓取功能,应用HttpWebRequest和HttpWebResponse功能,从http://www.showji.com网站中抓取归属地信息 应该说这个方法是从别的 ...

  4. 微软职位内部推荐-Senior Speech TTS

    微软近期Open的职位: Job Description: Responsibilities Do you want to change the way the world interacts wit ...

  5. ASP.NET Web - 开篇

    ASP.NET运行库 服务器系统上需要ASP.NET运行库.如果系统上有IIS,就会在安装.NET Framework时为服务器配置ASP.NET运行库.开发过程中,不需要IIS,因为VS发布了自己的 ...

  6. JPA学习---第八节:使用JPQL语句进行查询

    1.JPQL 语句查询,代码如下: @Test public void query(){ EntityManagerFactory factory = Persistence.createEntity ...

  7. android studio 中设置apk的版本号

    今天在mainfest.xml中设置版本号为2,(代码获取到的版本号无效) android:versionCode="2" android:versionName="2. ...

  8. Jquery 固定悬浮层以及固定表头

    /* =========================================================== * jquery.autofix_anything.js v1 * === ...

  9. python 基于小顶堆实现随机抽样

    起因:之前用蓄水池抽样,算法精简,但直观性很差. 所以这次采用了简单的,为没一个行,赋值一个随机值,然后取 最大的K个作为,随机样本. 基本思路:为每一个行(record,记录,实体) 赋一个rand ...

  10. nodeJS实战

    github代码托管地址: https://github.com/Iwillknow/microblog.git 根据<NodeJS开发指南>实例进行实战{{%并且希望一步步自己能够逐步将 ...