我目前正在使用共享扩展功能。
在这里,当我搜索很多时,似乎总是使用 SLComposeServiceViewController 将带有一些文本内容的图像共享给特定的应用程序。
但我希望自定义 UIViewController 类加载了从照片应用程序中选择的图像,它在打开时与邮件编辑器一样mail extension on share sheet
所以我得到了这个样本,并按照下面的 git hub 链接(第二个)中的说明进行了操作:
- https://martinnormark.com/present-ios-8-share-extension-as-modal-view/
- https://github.com/martinnormark/ShareByMail
是的,它似乎4 years ago
如此迁移并转换为Swift 4.1
版本。在我修改了这些更改并调试它之后。它不像在 GitHub gif 上那样工作。是的,最初时,当我在共享表上触摸扩展应用程序时,我可以呈现和关闭控制器。但是在我解散并再次尝试呈现它之后,这一次它没有在 GitHub gif 上做出反应。
Martin 只显示和隐藏self.view of UINavigationController Y position value
. 一旦我按下了Cancel or save
栏按钮,然后我尝试在共享表上通过扩展触摸打开它,它不起作用,也没有反应。
这里是来源NSExtensionPrincipalClass - EntryViewController
import UIKit
@objc(EntryViewController)
class EntryViewController : UINavigationController {
init() {
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.25, animations: { () -> Void in
self.view.transform = CGAffineTransform.identity
}, completion: nil)
}
}
import UIKit
import Social
class ShareViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
self.navigationItem.title = "Share this"
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(self.cancelButtonTapped(_:)))
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(self.saveButtonTapped(_:)))
}
@objc func saveButtonTapped(_ sender: UIBarButtonItem) {
self.hideExtensionWithCompletionHandler(completion: { (Bool) -> Void in
self.extensionContext!.completeRequest(returningItems: nil, completionHandler: nil)
})
}
@objc func cancelButtonTapped(_ sender: UIBarButtonItem) {
self.hideExtensionWithCompletionHandler(completion: { (Bool) -> Void in
self.extensionContext!.cancelRequest(withError: NSError())
})
}
func hideExtensionWithCompletionHandler(completion:(Bool) -> Void) {
UIView.animate(withDuration: 0.20, animations: { () -> Void in
self.navigationController!.view.transform = CGAffineTransform(translationX: 0, y: self.navigationController!.view.frame.size.height)
}, completion: nil)
}
}
如何在上述尝试中查找和修复问题,或者如何进行自定义 UIViewController 布局而不是使用SLComposeServiceViewController
?