20150930 3d touchを試す

14
3D Touchを試す 2015.9.30 関西モバイルアプリ研究会 #6 @itok_twit

Upload: kei-ito

Post on 17-Jan-2017

1.912 views

Category:

Software


2 download

TRANSCRIPT

3D Touchを試す2015.9.30 関西モバイルアプリ研究会 #6

@itok_twit

@itok_twit• いとうけい(itok)

• 公私共にプログラマ iOS / Mac(たまに Android や Windows)

• http://itok.jp/

3D Touch

3D Touch

• UITouch

• UIApplicationShortcutItem

• UIViewControllerPreviewing

はじめに

• 3D Touchが使えるか?

• UITraitCollection.forceTouchCapability で確認

• シミュレータでは使えません

UITouch

• force touch具合を直接取得できる

public var force: CGFloat { get } public var maximumPossibleForce: CGFloat { get }

• touchesMovedが大量に呼ばれるので注意

UIApplicationShortcutItem

UIApplicationShortcutItem

• Info.plistに静的に宣言→UIApplicationShortcutItems

• UIApplication.shortcutItemsで動的に変更 public class UIApplicationShortcutItem : NSObject { public init(type: String, localizedTitle: String, localizedSubtitle: String?, icon: UIApplicationShortcutIcon?, userInfo: [NSObject : AnyObject]?) }

UIApplicationShortcutItem

• UIApplicationDelegateで受け取る func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void)

UIViewControllerPreviewing

UIViewControllerPreviewing

• Previewingに対応するViewを指定する extension UIViewController { public func registerForPreviewingWithDelegate( delegate: UIViewControllerPreviewingDelegate, sourceView: UIView) -> UIViewControllerPreviewing }

UIViewControllerPreviewing

• UIViewControllerPreviewingDelegateを実装 protocol UIViewControllerPreviewingDelegate { public func previewingContext( previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? public func previewingContext( previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) }

UIViewControllerPreviewing• メニューはUIViewController.previewActionItems()で宣言 class UIPreviewAction : NSObject, UIPreviewActionItem { public convenience init(      title: String,      style: UIPreviewActionStyle,      handler: (UIPreviewAction, UIViewController) -> Void) }

class UIPreviewActionGroup : NSObject, UIPreviewActionItem { public convenience init(      title: String,      style: UIPreviewActionStyle,      actions: [UIPreviewAction]) }

• UIPreviewActionGroupでサブメニューも作れる

3D Touch

• UITouchを使っているコード(UIViewのサブクラスなど)は要注意

• UIApplicationShortcutItemは結構使えそう

• UIViewControllerPreviewingもmaster-detail的ナビゲーションでは使えそう