Lottie 애니메이션을 TableViewCell 내에서 움직여 보았습니다.

소개



Swift 애호회 AdventCalendar 2017 의 9일째의 기사입니다.
Airbnb가 개발한 애니메이션 라이브러리의 Lottie 라는 취지입니다.

· 이번에 사용해 본 것은 여기

개발 환경



・Xcode ver9.1
・Swift ver4.0.2
· lottie-ios ver2.1.0

만든 녀석





일과 미터 에 예의 실장중이기 때문에 아직 공개할 수 있는 소스는 없습니다 🙇
이번 달 동안 github에게 줄거야. 🙇 🙇
→ 올렸습니다! htps : // 기주 b. 코 m/와 ny1224/ぉ치에아니 마치 온사 mp

처리 발췌



HogeCell.swift

    var anim = LOTAnimationView!

    // 既存のチェックボックス部品
    @IBOutlet private weak var checkbox: UIImageView!

    override func awakeFromNib() {
        super.awakeFromNib()

        anim = LOTAnimationView(name: check_done)

        /**
         * サイズ設定事情
         * lottieファイルのサイズがでかかったため、既存の部品(checkbox)にねじ込んでます(暫定対応)
         */
        anim.frame = CGRect(x: 0, y: 0, width: 120, height: 120)
        anim.contentMode = .scaleAspectFit
        anim.center = checkbox.center

        checkbox.addSubview(anim)
    }

    // 表示処理(cellForRowで呼ばれる)
    func setData(fuga: Fuga) {
        titleLabel.text = data.title

        if fuga.isDone {
            // チェック済の場合、progress値を最大値にしてアニメーション後を表現
            anim.animationProgress = 1.0
        } else{
            // 未チェックの場合、明示的にアニメーションを停止状態にする
            anim.stop()
            }
        }
    }

    func animateCheckbox() {
        self.anim.play()
    }

    func stopAnimCheckbox() {
        self.anim.stop()
    }

ViewController.swift

    // 各セルに表示したいデータのリスト
    private var todoList = [Todo]()

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let currentTodo = self.todoList[indexPath.row]
        let title = currentTodo.title
        let isDone = !currentTodo.isDone
        let newTodo = Todo(title: title, isDone: isDone, index: indexPath.row)

        // 対象のCellを取得しAnim実行
        let cell: LottieSampleCell = self.tableView.cellForRow(at: indexPath) as! LottieSampleCell
        if isDone {
            cell.animateCheckbox()
        } else {
            cell.stopAnimCheckbox()
        }

        self.todoList.remove(at: indexPath.row)
        self.todoList.insert(newTodo, at: indexPath.row)
    }

마지막으로





・올해는 여름에 주최된 해변에서도 쿠모쿠 in 지가사키 에 방해 받았습니다.
・태풍을 유혹하지 않는 애호회 파워, 모쿠모쿠 모임 사이에 만들어 주신 요리의 맛, 카레로 건배는 가능하다는 것을 알 수 있었습니다.
・또 내년에도 애호회 이벤트에 참가할 수 있도록 PM을 속 정도로 언제나 움직일 준비를 하고 싶습니다.

· 메리 크리스마스 🎄🎅 & 좋은 해를 🌄🎍

좋은 웹페이지 즐겨찾기