Swiftで作られたイケてるUIライブラリたち


## [Spring ★431](https://github.com/MengTo/Spring)

![MengTo_Spring.jpg](https://qiita-image-store.s3.amazonaws.com/0/4943/03368e52-b059-de77-a0f5-2e7a5e4e5825.jpeg "MengTo_Spring.jpg")


手軽にアニメションが行えるライブラリです。SrotyBoardからアニメションの設定を行えるのがいいですね。

![MengTo_Spring.jpg](https://qiita-image-store.s3.amazonaws.com/0/4943/eab34b87-2303-720b-87b5-f16d219b85f3.jpeg "MengTo_Spring.jpg")

### インストール

Xcodeに手動でドロップします。

### サンプルコード

アニメションのコードはとってもシンプルです。

```Swift
layer.animation = "squeezeDown"
layer.animate()
```

２６種類のアニメションパターンを設定できます。


- shake
- pop
- morph
- squeeze
- wobble
- swing
- flipX
- flipY
- fall
- squeezeLeft
- squeezeRight
- squeezeDown
- squeezeUp
- slideLeft
- slideRight
- slideDown
- slideUp
- fadeIn
- fadeOut
- fadeInLeft
- fadeInRight
- fadeInDown
- fadeInUp
- zoomIn
- zoomOut
- flash


### デモ


デモアプリでアニメションの動きを確認できます。


![MengTo_Spring.jpg](https://qiita-image-store.s3.amazonaws.com/0/4943/75538add-6414-704e-c366-d9f5ab568ebd.jpeg "MengTo_Spring.jpg")


### [design+code](https://designcode.io/)

Springの開発元ではDesignとCodeを連携した開発手法の情報を有料で販売しています。$50です。ほしい。

![Design_Code__Learn_iOS_design_and_Xcode.jpg](https://qiita-image-store.s3.amazonaws.com/0/4943/3b9cb233-f6ff-180a-a42e-c983c2e50f63.jpeg "Design_Code__Learn_iOS_design_and_Xcode.jpg")


## [PageMenu ★425](https://github.com/uacaps/PageMenu)

左右にスワイプすることで画面の表示をアニメションしながら切り替えるライブラリです。

![Move](https://raw.githubusercontent.com/uacaps/ResourceRepo/master/PageMenu/PageMenuDemo.gif)

### インストール


CocoaPodsに対応しています。

### CocoaPods

```
pod 'PageMenu'
```

### サンプルコード

それぞれの画面はUIViewController単位で管理できます。

```swift
// Array to keep track of controllers in page menu
var controllerArray : [UIViewController] = []

// Create variables for all view controllers you want to put in the 
// page menu, initialize them, and add each to the controller array. 
// (Can be any UIViewController subclass)
// Make sure the title property of all view controllers is set
// Example:
var controller : UIViewController = UIViewController(nibName: "controllerNibName", bundle: nil)
controller.title = "SAMPLE TITLE"
controllerArray.append(controller)

// Initialize page menu with the controllers
pageMenu = CAPSPageMenu(viewControllers: controllerArray)

// Set frame for page menu
// Example:
pageMenu!.view.frame = CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height)

// Customize page menu to your liking (optional) or use default settings
// Example:
pageMenu!.scrollMenuBackgroundColor = UIColor(red: 30.0/255.0, green: 30.0/255.0, blue: 30.0/255.0, alpha: 1.0)
pageMenu!.viewBackgroundColor = UIColor(red: 20.0/255.0, green: 20.0/255.0, blue: 20.0/255.0, alpha: 1.0)
pageMenu!.selectionIndicatorColor = UIColor.orangeColor()
pageMenu!.bottomMenuHairlineColor = UIColor(red: 70.0/255.0, green: 70.0/255.0, blue: 80.0/255.0, alpha: 1.0)
pageMenu!.menuItemFont = UIFont(name: "HelveticaNeue", size: 13.0)
pageMenu!.menuHeight = 40.0

// Lastly add page menu as subview of base view controller view
// or use pageMenu controller in you view hierachy as desired
self.view.addSubview(pageMenu!.view)
```

## [BWWalkthrough ★790](https://github.com/ariok/BWWalkthrough)

かっこよくウォークスルーのページ遷移アニメションを行うライブラリです。


![Move](https://camo.githubusercontent.com/da60dc338f1325ad6f317e850d79ec135e64b116/687474703a2f2f7777772e7468696e6b616e646275696c642e69742f676966732f425757616c6b7468726f7567685f6d696e69322e676966)

### インストール

Xcodeに手動でドロップします。

### サンプルコード

```Swift
    // Get view controllers and build the walkthrough
    let stb = UIStoryboard(name: "Walkthrough", bundle: nil)
    let walkthrough = stb.instantiateViewControllerWithIdentifier(“Master”) as BWWalkthroughViewController
    let page_one = stb.instantiateViewControllerWithIdentifier(“page1”) as UIViewController
    let page_two = stb.instantiateViewControllerWithIdentifier(“page2”) as UIViewController
    let page_three = stb.instantiateViewControllerWithIdentifier(“page3”) as UIViewController

    // Attach the pages to the master
    walkthrough.delegate = self
    walkthrough.addViewController(page_one)
    walkthrough.addViewController(page_two)
    walkthrough.addViewController(page_three)
```

## [RAMAnimatedTabBarController ★1922](https://github.com/Ramotion/animated-tab-bar)

タブのボタでにアニメションを行えるライブラリです。

![Move](https://github.com/Ramotion/animated-tab-bar/raw/master/Screenshots/tab-bar-icons-iphone-ramotion-animation-interface-design.gif)

### アニメションパターン

バウンスや回転など９種類のアニメションが利用できます。

- RAMBounceAnimation
- RAMLeftRotationAnimation
- RAMRightRotationAnimation
- RAMFlipLeftTransitionItemAniamtions
- RAMFlipRightTransitionItemAniamtions
- RAMFlipTopTransitionItemAniamtions
- RAMFlipBottomTransitionItemAniamtions
- RAMFrameItemAnimation
- RAMFumeAnimation

### コードサンプル

```Swift
class RAMBounceAnimation : RAMItemAnimation {

    override func playAnimation(icon : UIImageView, textLable : UILabel) {
        playBounceAnimation(icon)
        textLable.textColor = textSelectedColor
    }

    override func deselectAnimation(icon : UIImageView, textLable : UILabel, defaultTextColor : UIColor) {
        textLable.textColor = defaultTextColor
    }

    override func selectedState(icon : UIImageView, textLable : UILabel) {
        textLable.textColor = textSelectedColor
    }

    func playBounceAnimation(icon : UIImageView) {

        let bounceAnimation = CAKeyframeAnimation(keyPath: "transform.scale")
        bounceAnimation.values = [1.0 ,1.4, 0.9, 1.15, 0.95, 1.02, 1.0]
        bounceAnimation.duration = NSTimeInterval(duration)
        bounceAnimation.calculationMode = kCAAnimationCubic

        icon.layer.addAnimation(bounceAnimation, forKey: "bounceAnimation")
    }
}

```

## [LTMorphingLabel ★1912](https://github.com/lexrus/LTMorphingLabel)

モーフィングのアニメションを利用したラベルです。

### インストール

CocoaPodsとCarthageに対応しています。

### CocoaPods

```:Podfile
pod 'LTMorphingLabel'
```

事前にSwift（DynamicFramework）に対応したCocoaPodsをインストールする必要があります。

```:Shell
$ gem install cocoapods --pre
```

### Carthage

```:Cartfile
github "lexrus/LTMorphingLabel"
```


### サンプルコード

```Swift
let label = LTMorphingLabel(frame: CGRectMake(0,0,120,50))
label.text = "Test"
label.morphingEffect = .Evaporate
```
### デモ

#### .Scale - _default_
<img src="https://cloud.githubusercontent.com/assets/219689/3491822/96bf5de6-059d-11e4-9826-a6f82025d1af.gif" width="300" height="70" alt="LTMorphingLabel"/>

#### [.Evaporate](https://github.com/lexrus/LTMorphingLabel/blob/master/LTMorphingLabel/LTMorphingLabel%2BEvaporate.swift)
<img src="https://cloud.githubusercontent.com/assets/219689/3491838/ffc5aff2-059d-11e4-970c-6e2d7664785a.gif" width="300" height="70" alt="LTMorphingLabel-Evaporate"/>

#### [.Fall](https://github.com/lexrus/LTMorphingLabel/blob/master/LTMorphingLabel/LTMorphingLabel%2BFall.swift)
<img src="https://cloud.githubusercontent.com/assets/219689/3491840/173c2238-059e-11e4-9b33-dcd21edae9e2.gif" width="300" height="70" alt="LTMorphingLabel-Fall"/>

#### [.Pixelate](https://github.com/lexrus/LTMorphingLabel/blob/master/LTMorphingLabel/LTMorphingLabel%2BPixelate.swift)
<img src="https://cloud.githubusercontent.com/assets/219689/3491845/29bb0f8c-059e-11e4-9ef8-de56bec1baba.gif" width="300" height="70" alt="LTMorphingLabel-Pixelate"/>

#### [.Sparkle](https://github.com/lexrus/LTMorphingLabel/blob/master/LTMorphingLabel/LTMorphingLabel%2BSparkle.swift)
<img src="https://cloud.githubusercontent.com/assets/219689/3508789/31e9fafe-0690-11e4-9a76-ba3ef45eb53a.gif" width="300" height="70" alt="LTMorphingLabel-Sparkle"/>



## [Side Menu ★](https://github.com/Yalantis/Side-Menu.iOS)

かっこ良くサイドメニューをオーバーレイして表示するライブラリです。

![Move](https://camo.githubusercontent.com/cb6caa7a392d01d46bca9d9485c01fc173f55fac/68747470733a2f2f6431337961637572716a676172612e636c6f756466726f6e742e6e65742f75736572732f3132353035362f73637265656e73686f74732f313638393932322f6576656e74732d6d656e755f312d312d362e676966)

### インストール

CocoaPodsとCarthageに対応しています。

### CocoaPods

```:Podfile
pod 'YALSideMenu'
```


事前にSwift（DynamicFramework）に対応したCocoaPodsをインストールする必要があります。

```:Shell
$ gem install cocoapods --pre
```

### Carthage

```:Cartfile
github "yalantis/Side-Menu.iOS"
```

### サンプルコード

```swift
class MyFancyMenuViewController: UIViewController, Menu  {
    @IBOutlet
    var menuItems = [UIView] ()
```