В настоящее время я работаю с функцией расширения общего доступа.
здесь, когда я ищу много, кажется, всегда использую 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.
Мартин только показывает и скрывает 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
?
UINavigationController
под этим текстом Подделать модальное представление - person Ram   schedule 18.07.2018storyboard
? невозможно программно создать собственный макет? - person Ram   schedule 18.07.2018