全屏iOS分享扩展

3

我知道如何创建iOS分享扩展,但我无法确定是否有办法使其全屏,例如Action扩展?

Pinterest似乎可以做到这一点,但我不确定该怎么做。

Action扩展的文档说要使用:

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

在扩展的plist文件中设置似乎对共享扩展没有影响?是否有任何方法可以实现这一点?
2个回答

5

您可以从这里iOS全屏共享扩展获取想法,并且您可以找到下面的代码片段的更新语法,该语法与Swift 3Swift 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
        })
    }

}

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)
    }

}

2
它对我不起作用。我加载了UINavigationController,但根视图并未显示。 - Alex Delgado
对于那些没有起作用的人,您可以查看这个repo - abdullahselek

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接