사용자 정의 전환 애니메이션

전제 조건


환경
- Xcode 7.2.1 (7C1002)
언어
- Swift2.1

Table View 셀에서 애니메이션 설정하기


일단 영상 샘플.

Gif라면 약간 못생겼을 수도 있으니 영상의 왼쪽 아래 구석을 주의하세요(왼쪽에서 미끄러져 들어가기)

호출 방법

tableView 방법의 willDisplayCell 을 호출하여 셀에 애니메이션을 설정합니다.
swift
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        //ここにアニメーションを実装
    }

예제 코드


앞으로 샘플을 늘리는 방침

페이드 인


swift
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

        cell.alpha = 0.2

        UIView.animateWithDuration(1.0) { () -> Void in

            cell.alpha = 1.0

        }        

    }

측면에서 들어가다


swift
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

        let slideInTransform = CATransform3DTranslate(CATransform3DIdentity, -510, 15, 0)

        cell.layer.transform = slideInTransform

        UIView.animateWithDuration(0.7) { () -> Void in

            cell.layer.transform = CATransform3DIdentity

        }

    }

전체적으로 보면 코드.


먼저 다음 절차에 따라 Xcode Project를 만듭니다.
1. "cmd+shift+1"(Welcome to Xcode)에서 Single ViewApplication 프로젝트 만들기
2. Main.스토리보드에 Table View 객체 배치
3.@IBOutlet weak var animationTableView: UITableView!tableview와tableview를 연결
4. viewDidLoad()에서 Table View의 Delegate 및 dataSource를 self로 설정
5. 다음 코드의 필수 필드를 참조하십시오.
viewController.Swift
import UIKit

class ViewController: UIViewController, UITableViewDataSource,  UITableViewDelegate {

    @IBOutlet weak var animationTableView: UITableView!

    var dataArray = [String]()

    override func viewWillAppear(animated: Bool) {
        for i in 1...100 {
            dataArray.append("cell \(i)")
        }

        print(dataArray)
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        animationTableView.delegate = self
        animationTableView.dataSource = self

    }


    // 必須
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    // 必須
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArray.count
    }
    // 必須
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")

        cell.textLabel?.text = dataArray[indexPath.row]

        return cell
    }

    // セルのアニメーション
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

        let slideInTransform = CATransform3DTranslate(CATransform3DIdentity, -500, 15, 0)

        cell.layer.transform = slideInTransform

        UIView.animateWithDuration(0.3) { () -> Void in

            cell.layer.transform = CATransform3DIdentity

        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}    

보충하여 기록하다


애니메이션에서 사용자의 입력 이벤트 등을 진행할 때 animateWithDuration 에서 옵션을 AllowUserInteraction 로 지정합니다.
swift
UIView.animateWithDuration(0.7, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: { () -> Void in

   // アニメーションを実装         
   // cell.layer.transform = CATransform3DIdentity

   }, completion: nil)

noppefoxwolf 시정해 주셔서 감사합니다.

GitHub

  • cellAnimation
  • 좋은 웹페이지 즐겨찾기