2017-04-02 1 views
2

Ich weiß, wie ich eine iOS-Freigabeerweiterung erstellen kann, aber was ich nicht herausfinden kann, ist, ob es eine Möglichkeit gibt, es Vollbild zu machen, wie eine Aktionserweiterung?Vollbild iOS-Freigabe Erweiterung

Pinterest scheinen dies zu tun, aber ich bin mir nicht sicher, wie.

Die docs für eine Aktion Erweiterung verwenden sagen:

  <key>NSExtensionActionWantsFullScreenPresentation</key> 
    <true/> 

In der plist-Datei für die Erweiterung, aber dies scheint nicht einen Effekt in Aktie Erweiterung zu haben?

Gibt es trotzdem, dies zu erreichen?

Antwort

4

Sie können Ideen kommen von dort iOS Full Screen Share Extension und Sie können die aktualisierte Syntax für den Code-Schnipsel, unterhalb dessen ist kompatibel mit Swift 3 und Swift 4

EntryViewController

import UIKit 

@objc(EntryViewController) 

class EntryViewController : UINavigationController { 

    override init(rootViewController: UIViewController) { 
     super.init(rootViewController: ShareViewController()) 
    } 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 
    } 

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 
     super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     self.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.size.height) 
     UIView.animate(withDuration: 0.3, animations: {() -> Void in 
      self.view.transform = .identity 
     }) 
    } 

} 

finden ShareViewController

import UIKit 
import Social 

class ShareViewController: SLComposeServiceViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.view.backgroundColor = UIColor.white 
     self.navigationItem.title = "Share" 

     self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: Selector(("cancelButtonTapped:"))) 
     self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: Selector(("saveButtonTapped:"))) 
    } 

    func saveButtonTapped(sender: UIBarButtonItem) { 
     self.hideExtensionWithCompletionHandler(completion: { (Bool) -> Void in 
     self.extensionContext!.completeRequest(returningItems: nil, completionHandler: nil) 
     }) 
    } 

    func cancelButtonTapped(sender: UIBarButtonItem) { 
     self.hideExtensionWithCompletionHandler(completion: { (Bool) -> Void in 
     self.extensionContext!.cancelRequest(withError: NSError()) 
     }) 
    } 

    func hideExtensionWithCompletionHandler(completion: @escaping (Bool) -> Void) { 
     UIView.animate(withDuration: 0.3, animations: { 
     self.navigationController!.view.transform = CGAffineTransform(translationX: 0, y: self.navigationController!.view.frame.size.height) 
     }, completion: completion) 
    } 

} 
+0

Es funktioniert nicht für mich. Ich lade den UINavigationController, aber der Root wird nicht angezeigt. –