iOS 3D Touch教程

作者: CaryZheng | 来源:发表于2016-08-10 14:41 被阅读149次

    Home Screen Quick Actions


    • 静态 Quick Actions
    • 动态 Quick Actions

    静态 Quick Actions

    编辑 Info.plist 文件,如下图:

    Info.plist

    源码如下:

    <key>UIApplicationShortcutItems</key>
        <array>
            <dict>
                <key>UIApplicationShortcutItemIconType</key>
                <string>UIApplicationShortcutIconTypeCompose</string>
                <key>UIApplicationShortcutItemTitle</key>
                <string>标签1</string>
                <key>UIApplicationShortcutItemType</key>
                <string>com.mycompany.myapp.item1</string>
                <key>UIApplicationShortcutItemUserInfo</key>
                <dict>
                    <key>key1</key>
                    <string>value1</string>
                </dict>
            </dict>
            <dict>
                <key>UIApplicationShortcutItemSubtitle</key>
                <string>副标题</string>
                <key>UIApplicationShortcutItemIconType</key>
                <string>UIApplicationShortcutIconTypeCloud</string>
                <key>UIApplicationShortcutItemTitle</key>
                <string>标签2</string>
                <key>UIApplicationShortcutItemType</key>
                <string>com.mycompany.myapp.item2</string>
                <key>UIApplicationShortcutItemUserInfo</key>
                <dict>
                    <key>key2</key>
                    <string>value2</string>
                </dict>
            </dict>
        </array>
    

    动态 Quick Actions

    AppDelegate 文件中添加如下代码:

    private func handleDynamicQuickActions() {
            if 0 == UIApplication.sharedApplication().shortcutItems?.count {
                let newItem = UIApplicationShortcutItem(type: "com.mycompany.myapp.item3", localizedTitle: "dynamic标签3")
                UIApplication.sharedApplication().shortcutItems?.append(newItem)
            }
        }
    
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            handleDynamicQuickActions()
            return true
        }
    
    func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
            
            let type = shortcutItem.type
            if "com.mycompany.myapp.item1" ==  type {
                print("item1 selected")
            } else if "com.mycompany.myapp.item2" == type {
                print("item2 selected")
            } else if "com.mycompany.myapp.item3" == type {
                print("item3 selected")
            }
        }
    

    运行效果:

    效果图

    Peek and Pop


    当前 ViewController

    class ViewController: UIViewController, UIViewControllerPreviewingDelegate {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            
            // Add test button
            let btn = UIButton(type: .System)
            btn.setTitle("Peek & Pop Test: click me", forState: .Normal)
            btn.sizeToFit()
            btn.backgroundColor = UIColor.yellowColor()
            btn.center = self.view.center
    
            self.view.addSubview(btn)
            
            // register preview
            if .Available == traitCollection.forceTouchCapability {
                registerForPreviewingWithDelegate(self, sourceView: btn)
            }
        }
    
        func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
            return DetailViewController()
        }
        
        func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
            showViewController(viewControllerToCommit, sender: self)
        }
        
    }
    

    DetailViewController

    class DetailViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            self.view.backgroundColor = UIColor.redColor()
        }
        
        override func previewActionItems() -> [UIPreviewActionItem] {
            let action1 = UIPreviewAction(title: "Action 1", style: .Default) { (action, viewController) -> Void in
                print("Action 1 selected")
            }
            
            let action2 = UIPreviewAction(title: "Action 2", style: .Destructive) { (action, viewController) -> Void in
                print("Action 2 selected")
            }
            
            return [action1, action2]
        }
        
    }
    

    运行效果图:

    效果图1 效果图2 效果图3

    完整代码示例: iOSDemoCollection -> My3DTouchDemo

    相关文章

      网友评论

        本文标题:iOS 3D Touch教程

        本文链接:https://www.haomeiwen.com/subject/rzrdsttx.html