anim

Swift animation library for iOS, tvOS and macOS.

Github星跟蹤圖


CocoaPods
Carthage compatible
Build Status
codecov.io
codebeat badge

anim is an animation library written in Swift with a simple, declarative API in mind.

// moves box to 100,100 with default settings
anim {
    self.box.frame.origin = CGPoint(x:100, y:100)
}
// after that, waits 100 ms
.wait(0.1)
// moves box to 0,0 after waiting
.then {
    self.box.frame.origin = CGPoint(x:0, y:0)
}
// displays message after all animations are done
.callback {
    print("Just finished moving ? around.")
}

It supports a bunch of easing functions and chaining multiple animations. It's a wrapper on Apple's UIViewPropertyAnimator on its core, and falls back to UIView.animate on versions before iOS and tvOS 10.
It uses NSAnimationContext on macOS.

Examples

Example projects are available at examples/ folder and as targets on XCode project.


Cocoapods

pod 'anim'

Carthage

github "onurersel/anim"

Manually

Or simply drag the swift files inside src/ folder into your project.


For complete documentation, visit http://onurersel.github.io/anim/.

Initialize animations with anim constructor.

// Initialize with default settings
anim {
    // animation block
}
// or initialize with it's own settings
anim { (settings) -> (animClosure) in
    settings.delay = 1
    settings.duration = 0.7
    settings.ease = .easeInOutBack

    return {
        // animation block
    }
}
// or initialize layout constraint animations just by passing the parent view
anim(constraintParent: self.view) {
    // animation block
}

anim(constraintParent: self.view) { (settings) -> (animClosure) in
    // settings...
    return {
        // animation block
    }
}

// you don't need to call layoutIfNeeded() before or inside the
// animation blocks, it's handled by anim
//
// for example to update constant value of a constraint,
// you can just change it inside the animation block
let width: NSLayoutConstraint //...
anim(constraintParent: self.view) {
    width.constant = 100 // new value
}
// that's it!

Chain animations with then function.

anim {}
.then{
    // next animation block
}
anim {}
.then { (settings) -> animClosure in
    settings.duration = 1
    return {
        // next animation block
    }
}
anim {}
.then(constraintParent: self.view) {
    // chaining constraint animations
}
.then(constraintParent: self.view) { (settings) -> animClosure in
    settings.duration = 1
    return {
        // next animation block for constraints
    }
}

Wait between animation steps with wait function.

anim{}.wait(0.25).then{} //...

Insert callbacks between animation steps with .callback function.

anim{}
.callback {
    // custom block
}
.then{} //...

Stop animations with stop function.

let animation = anim{}.then{} // ...
animation.stop()

Default settings

You can change default animation settings through anim.defaultSettings property.

anim.defaultSettings.ease = .easeInOutCubic

Easing

anim.Ease exposes a bunch of easing options.


anim is released under the MIT license. See LICENSE for details.

主要指標

概覽
名稱與所有者onurersel/anim
主編程語言Swift
編程語言Swift (語言數: 4)
平台
許可證MIT License
所有者活动
創建於2016-01-15 12:26:07
推送於2021-03-09 04:35:34
最后一次提交2019-10-30 11:41:40
發布數27
最新版本名稱1.2.10 (發布於 )
第一版名稱0.0.7 (發布於 )
用户参与
星數576
關注者數12
派生數46
提交數129
已啟用問題?
問題數0
打開的問題數0
拉請求數4
打開的拉請求數1
關閉的拉請求數1
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?