当前位置: 首页 > 编程笔记 >

iOS UITableView展开缩放动画实例代码

端木兴国
2023-03-14
本文向大家介绍iOS UITableView展开缩放动画实例代码,包括了iOS UITableView展开缩放动画实例代码的使用技巧和注意事项,需要的朋友参考一下

Swift - UITableView展开缩放动画 

效果

源码:https://github.com/YouXianMing/Swift-Animations 

//
// HeaderViewTapAnimationController.swift
// Swift-Animations
//
// Created by YouXianMing on 16/8/9.
// Copyright © 2016年 YouXianMing. All rights reserved.
//

import UIKit

class HeaderViewTapAnimationController: NormalTitleViewController, UITableViewDelegate, UITableViewDataSource {
 
 private var classes   : [ClassModel]!
 private var tableView   : UITableView!
 private var sectionFirstLoad : Bool!
 private weak var tmpHeadView : ClassHeaderView!
 
 override func setup() {
  
  super.setup()
  
  sectionFirstLoad = false
  
  // TableView.
  tableView      = UITableView(frame: (contentView?.bounds)!)
  tableView.dataSource   = self
  tableView.delegate   = self
  tableView.rowHeight   = 60
  tableView.sectionHeaderHeight = 30
  tableView.separatorStyle  = .None
  contentView?.addSubview(tableView!)
  
  // Register.
  ClassHeaderView.registerToTableView(tableView)
  StudentInfoCell.registerToTableView(tableView)
  
  // Data source.
  let Aitna = ClassModel(className: "Aitna")
  Aitna.expend = false
  Aitna.students?.append(StudentModel(name: "Y.X.M.", age: 27))
  Aitna.students?.append(StudentModel(name: "Leif", age: 12))
  Aitna.students?.append(StudentModel(name: "Lennon", age: 23))
  Aitna.students?.append(StudentModel(name: "Jerome", age: 19))
  Aitna.students?.append(StudentModel(name: "Isidore", age: 15))
  
  let Melete = ClassModel(className: "Melete")
  Melete.expend = false
  Melete.students?.append(StudentModel(name: "Merle", age: 17))
  Melete.students?.append(StudentModel(name: "Paddy", age: 31))
  Melete.students?.append(StudentModel(name: "Perry", age: 59))
  Melete.students?.append(StudentModel(name: "Philip", age: 23))
  
  let Aoede = ClassModel(className: "Aoede")
  Aoede.expend = false
  Aoede.students?.append(StudentModel(name: "Verne", age: 12))
  Aoede.students?.append(StudentModel(name: "Vincent", age: 89))
  Aoede.students?.append(StudentModel(name: "Walter", age: 43))
  Aoede.students?.append(StudentModel(name: "Zachary", age: 21))

  let Dione = ClassModel(className: "Dione")
  Dione.expend = false
  Dione.students?.append(StudentModel(name: "Timothy", age: 72))
  Dione.students?.append(StudentModel(name: "Roderick", age: 34))
  Dione.students?.append(StudentModel(name: "Quentin", age: 12))
  Dione.students?.append(StudentModel(name: "Paddy", age: 75))
  
  let Adanos = ClassModel(className: "Adanos")
  Adanos.expend = false
  Adanos.students?.append(StudentModel(name: "Mortimer", age: 43))
  Adanos.students?.append(StudentModel(name: "Michael", age: 64))
  Adanos.students?.append(StudentModel(name: "Kevin", age: 23))
  Adanos.students?.append(StudentModel(name: "Jeremy", age: 21))
  
  classes = [ClassModel]()
  classes.append(Aitna)
  classes.append(Melete)
  classes.append(Aoede)
  classes.append(Dione)
  classes.append(Adanos)
  
  // Expend animations.
  GCDQueue.executeInMainQueue({ 
   
   self.sectionFirstLoad = true
   self.tableView.insertSections(NSIndexSet(indexesInRange: NSMakeRange(0, self.classes.count)), withRowAnimation: .Fade)
   
   GCDQueue.executeInMainQueue({
    
    self.tmpHeadView.buttonEvent()
    
    }, afterDelaySeconds: 0.4)
   }, afterDelaySeconds: 0.3)
 }
 
 // MARK: UITableView's delegate & dataSource.
 
 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  
  let classModel = classes[section]
  if classModel.expend == true {
   
   return (classModel.students?.count)!
   
  } else {
  
   return 0
  }
 }
 
 func numberOfSectionsInTableView(tableView: UITableView) -> Int {
  
  if sectionFirstLoad == false {
   
   return 0
   
  } else {
  
   return classes.count
  }
 }
 
 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  
  let classModel  = classes[indexPath.section]
  let customCell  = tableView.dequeueReusableCellWithIdentifier("StudentInfoCell") as! CustomCell
  customCell.data  = classModel.students![indexPath.row]
  customCell.indexPath = indexPath
  customCell.loadContent()
  
  return customCell
 }
 
 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
  
  tableView.selectedEventWithIndexPath(indexPath)
 }
 
 func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
  
  let headerView  = tableView.dequeueReusableHeaderFooterViewWithIdentifier("ClassHeaderView") as! ClassHeaderView
  headerView.section = section
  headerView.data  = classes[section]
  headerView.tableView = tableView
  headerView.loadContent()
  
  if tmpHeadView == nil && section == 0 {
   
   tmpHeadView = headerView
  }
  
  return headerView
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Android动画 实现开关按钮动画(属性动画之平移动画)实例代码,包括了Android动画 实现开关按钮动画(属性动画之平移动画)实例代码的使用技巧和注意事项,需要的朋友参考一下 Android动画 实现开关按钮动画(属性动画之平移动画),最近做项目,根据项目需求,有一个这样的功能,实现类似开关的动画效果,经过自己琢磨及上网查找资料,终于解决了,这里就记录下:   在Android

  • 我正在用Java编写一个数独游戏,我想把新游戏的动作制作成动画,如下所示: 一旦用户点击开始游戏,每个元素就开始从左上角到右下角依次出现。 动画应该以彼此100毫秒的延迟开始,而不是同时进行。比如从60%到100%,然后完成每个元素的动画。 我将谜题模型加载到JPanel中的代码是: puzzle对象的数字从1到300,对应于图像,所以在创建ImageButtonMyImages时使用它。“thi

  • 官方缩放视图教程使用缩放到。它会随着视图的扩展而产生向下移动的错觉。稍后,只需向后重播即可产生缩小的错觉。 以下是我目前为止尝试过的。我的XML布局是 这是执行缩小操作的方法。我基本上试着颠倒了教程中的过程: 我在中调用此方法,如下所示: 好了,就是这样,伙计们。它不起作用。我不知道为什么。演示示例运行完美,那么为什么这个不起作用呢?看看,告诉我我是否疯了。 有人能识别错误吗?或者给我指出正确的方

  • 本文向大家介绍Java实现帧动画的实例代码,包括了Java实现帧动画的实例代码的使用技巧和注意事项,需要的朋友参考一下 本文讲述了Java实现帧动画的实例代码。分享给大家供大家参考,具体如下: 1、效果图 2、帧动画的简要代码 3、扩展: 点击打开素材下载地址 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对呐喊教程的支

  • 问题内容: 我正在尝试模仿动画和以下浮动操作按钮的颜色更改。 浮动操作按钮的工作方式是关闭白色,打开蓝色。 但是,我在动画和更改颜色方面一直不成功。 这些是我尝试执行此操作的尝试,您可以看到我已经注释掉了我尝试执行此操作的所有不同方式。 这是我的代码: Many thanks for any suggestions. 问题答案: 此动画有两个阶段。第一个缩放X和Y轴,第二个缩小它。因此,我们可以将

  • 本文向大家介绍js实现鼠标拖拽缩放div实例代码,包括了js实现鼠标拖拽缩放div实例代码的使用技巧和注意事项,需要的朋友参考一下 封装为了jq插件,如下 drag.js html文件 以上所述是小编给大家介绍的js实现鼠标拖拽缩放div详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!