iOS 7 の新機能のサンプルコード集『iOS7 Sampler』

先週末に開催された『[もくもく開発会＠鎌倉 #2 by Qiita](http://atnd.org/events/43284)』にて、 **iOS 7 で新たに加えられたAPI** の使い方等を勉強しつつ、簡単なサンプルを集めたアプリをつくってGitHubにアップしました。


[https://github.com/shu223/iOS7-Sampler](https://github.com/shu223/iOS7-Sampler)


![](http://f.cl.ly/items/1t250s1N3z0c1g2H1N0P/iOS7Sampler1_r1_c1.png)


今のところ21個のサンプルが入っています。何か調べた折に随時追加していきます。


以下サンプルのリストです。


##Dynamic Behaviors

iOS7では UIView サブクラスに簡単に物理演算を適用することができるようになりました。

本サンプルでは、UIDynamicAnimator, UIGravityBehavior, UICollisionBehavior, UIDynamicItemBehavior を用いて **重力と衝突をシミュレート** しています。


![](http://f.cl.ly/items/3M2b110A141D1O0C0D0e/dynamics1__.png)


関連：[UIKit で物理演算エンジンを使用する](http://d.hatena.ne.jp/shu223/20130501/1367368335)


##Speech Synthesis

AVSpeechSynthesizer, AVSpeechUtterance を用いた音声合成のサンプル。

 **任意の文字列を iOS が読み上げ** てくれます。Macのsayコマンドのようなもの。

![](http://f.cl.ly/items/3y0i3B0R3O3E1N1s1w20/speech___.png)

関連：[フリーの iOS 向け音声認識／音声合成ライブラリ『OpenEars』の使い方](http://d.hatena.ne.jp/shu223/20130810/1376105883)

##Custom Transition

UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegateを用いた **カスタムトランジション** （画面遷移）のサンプル。

トランジションエフェクトは下記のOSSを入れています。

### [HUAnimator](https://github.com/cinkster/HUAnimator)

細い線に分解されて遷移するエフェクト。

![](http://f.cl.ly/items/2P0a2Z3W0W2P3p1W2L0X/transition_lines.png)

### [ZBCustomTransitions](https://github.com/zonble/ZBCustomTransitions)

ブロックに分解されガラガラと崩れ落ちて遷移するエフェクト。

![](http://f.cl.ly/items/2S0X383R2T1j1X2Y1e3t/transition_gravity.png)


##3D マップ

MKMapView の camera プロパティ （MKMapCamera という新クラス）を用いた **3D 地図表示** のサンプル。

![](http://f.cl.ly/items/0R2T2a2s1A3s1G2n3I25/3DMap_.png)

関連：[Google Maps SDK for iOSの導入手順](http://qiita.com/shu223/items/bfb5ef3e45682c2bb763)


##iBeacon

iBeacon を 2台のiPhone（iPad）同士で試せるようにしたサンプル。


![](http://f.cl.ly/items/220D2F210D1x1D0L1Q20/beacon__.gif)


一方をビーコン（Peripheral）、もう一方を監視側（Central）として使用します。


###関連

[ビーコン的な演出をする](http://qiita.com/shu223/items/5018cf5e452c4fa0d002)


##120fps ビデオ録画（SLO-MO）

AVFoundationでスローモーション動画撮影を行うサンプル。iPhone5sでは120fpsでの撮影が可能です。

![](http://f.cl.ly/items/360a271y1G3Q2C2a3p2d/IMG_8907_r1_c1.jpg)

###作例

![](http://f.cl.ly/items/1b3Q0h0k3k2m261s3R3n/samplemovie__.gif)

<p><a href="http://vimeo.com/82064431">See the 120fps Slo-Mo video in Vimeo 120fps.</a></p>

###関連

[AVFoundationで120fpsスローモーション動画撮影を実装する](http://d.hatena.ne.jp/shu223/20131217/1387257304)


##笑顔検出
CIDetectorに新たに追加された `CIDetectorSmile` と、CIFeature に追加されたプロパティ `bounds`, `hasSmile` を用いた **笑顔検出** のサンプル。

![smile_.png](https://qiita-image-store.s3.amazonaws.com/0/3180/6b5202e3-749d-d5f8-88ba-1877290e33b2.png)


##画像フィルタ

CIFilter に追加されたフィルタのサンプル


![](http://f.cl.ly/items/3K0T3c012o062b0o061c/imagefilters__.png)


下記の画像処理ををピッカーで選択してかけられるようになっています。


- CILinearToSRGBToneCurve
- CIPhotoEffectChrome
- CIPhotoEffectFade
- CIPhotoEffectInstant
- CIPhotoEffectMono
- CIPhotoEffectNoir
- CIPhotoEffectProcess
- CIPhotoEffectTonal
- CIPhotoEffectTransfer
- CISRGBToneCurveToLinear
- CIVignetteEffect


##Sprite Kit

Sprite Kit の SKView, SKScene, SKSpriteNode, SKActionを用いて **キャラのスプライトを生成し、アニメーションさせる** サンプル。

ほぼCocos2Dと同じようなAPIです。

![spritekit__.png](https://qiita-image-store.s3.amazonaws.com/0/3180/98fcfb76-5ac4-6c3b-cfca-a008790c948a.png)


##Map Directions
MKDirections, MKDirectionsResponse, MKPolylineRenderer 等を用いた **経路探索とルートの描画** サンプル。

![mapdirection_.png](https://qiita-image-store.s3.amazonaws.com/0/3180/3fe4c6f3-4d3d-0fd2-92ee-e5ffcac51b8e.png)


##Motion Effects (Parallax)

UIMotionEffect を用いた **パララックスエフェクト（視差効果）** のサンプル。

![](http://f.cl.ly/items/3L2N2m3M1i0G45081o0j/parallax_.png)


##Multipeer Connectivity

**Multipeer Connectivity Framework で Peer-to-Peer 通信を行う** サンプル。P2P通信には Wi-Fi または Bluetooth LE を使用します。

![](http://f.cl.ly/items/3T432y3G1w1S1u2W0X0q/multipeer.png)


##AirDrop / Flickr / Vimeo / ReadingList

**新たに追加された UIActivityType （UIActivityTypeAirDrop, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypeAddToReadingList）のサンプル** 。

AirDropはデバイスが対応している必要があり、Flickr, Vimeo は Settings でアカウントを設定している必要があります。

![](http://f.cl.ly/items/2V2E3P2f1X1z0E0E0E47/AirDrop_.png)


##QR Code Reader

新たに追加された `AVMetadataObjectTypeQRCode` を利用してQRコードを読み取るサンプル。

参考：[iOS 7でバーコード・QRコードを読み取る方法と生成する方法（おまけもあるよ）](http://qiita.com/hkato193/items/c36a940c2929a124e416)

##QR Code Generator

CIFilter の CIQRCodeGenerator を用いた **QRコード生成** のサンプル。

![](http://f.cl.ly/items/3E1q1t1L2n142r2i2I3S/qrcode__.png)


##歩数カウントと移動状態

Core Motion に新たに追加された CMStepCounter と CMMotionActivityManager を用いて、 **歩数のカウント** と **移動状態（歩いている／走っている／車に乗っている）をトラッキング** するサンプルです。

![](http://f.cl.ly/items/391o07450F3U443B3i0v/m7_.png)

本機能を使用するにはM7コプロセッサが必要なので、2013年10月現在出ているiOSデバイスでは **iPhone5sでのみ動作** します。


##Static Map Snapshots

MKMapSnapshotOptions, MKMapSnapshotter を用いた **地図のスナップショットを取得する** サンプル。

![](http://f.cl.ly/items/2Q3d472D37002f063716/map_snapshot.png)


##Safari Reading List

**新たに追加された Safari Services framework** を使用して **Safari の Reading List にWebサイトを追加** するサンプル。

（※スクショは地味なので省略します）


##New Fonts

**iOS 7 で新たに追加された全フォント36種類** をフォント名と共に確認できます。


![](http://f.cl.ly/items/2i1P390S0f3K340i0p1G/font2_.png)


関連：[iOS 7 で使えるフォント名一覧](http://d.hatena.ne.jp/shu223/20131017/1381992664)


##ばね風アニメーション

ばね風のタイミングカーブでアニメーションさせることのできるUIViewのメソッドの挙動を確認できるサンプル。


![](http://f.cl.ly/items/1S1n3w0M132q3m42430B/springanimation_r1_c1.jpg)


関連：[ばねっぽいアニメーションを実現するUIViewの新メソッド](http://qiita.com/shu223/items/bce33f6ab448c90e4d2b]


##UIWebViewのページネーション

UIWebViewの新機能、paginationMode のサンプル。Webページを書籍のように pagination して表示してくれます。

![](http://f.cl.ly/items/2q2F0L2o2G3H2F0k0l1E/IMG_9221_r1_c1.jpg)

関連：[UIWebViewの新機能：UIWebPagination](http://qiita.com/shu223/items/3f2141f8708dacb02d50)