我知道如何创建iOS分享扩展,但我无法确定是否有办法使其全屏,例如Action扩展?
Pinterest似乎可以做到这一点,但我不确定该怎么做。
Action扩展的文档说要使用:
<key>NSExtensionActionWantsFullScreenPresentation</key>
<true/>
在扩展的plist文件中设置似乎对共享扩展没有影响?是否有任何方法可以实现这一点?
我知道如何创建iOS分享扩展,但我无法确定是否有办法使其全屏,例如Action扩展?
Pinterest似乎可以做到这一点,但我不确定该怎么做。
Action扩展的文档说要使用:
<key>NSExtensionActionWantsFullScreenPresentation</key>
<true/>
您可以从这里iOS全屏共享扩展获取想法,并且您可以找到下面的代码片段的更新语法,该语法与Swift 3和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
})
}
}
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)
}
}
我已经解决了全屏共享扩展的问题。
很简单。
您只需在扩展应用程序的info.plist文件中添加NSExtensionActionWantsFullScreenPresentation并将其设置为TRUE即可。