Projeto de exemplo UIActivityViewController
Configure seu storyboard com dois botões e conecte-os ao seu controlador de exibição (veja o código abaixo).
Adicione uma imagem aos seus Assets.xcassets. Eu chamei o meu "leão".
Código
import UIKit
class ViewController: UIViewController {
// share text
@IBAction func shareTextButton(_ sender: UIButton) {
// text to share
let text = "This is some text that I want to share."
// set up activity view controller
let textToShare = [ text ]
let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
// exclude some activity types from the list (optional)
activityViewController.excludedActivityTypes = [ UIActivityType.airDrop, UIActivityType.postToFacebook ]
// present the view controller
self.present(activityViewController, animated: true, completion: nil)
}
// share image
@IBAction func shareImageButton(_ sender: UIButton) {
// image to share
let image = UIImage(named: "Image")
// set up activity view controller
let imageToShare = [ image! ]
let activityViewController = UIActivityViewController(activityItems: imageToShare, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
// exclude some activity types from the list (optional)
activityViewController.excludedActivityTypes = [ UIActivityType.airDrop, UIActivityType.postToFacebook ]
// present the view controller
self.present(activityViewController, animated: true, completion: nil)
}
}
Resultado
Clicar em "Compartilhar texto" fornece o resultado à esquerda e clicar em "Compartilhar uma imagem" mostra o resultado à direita.
Notas
- Testei isso novamente com o iOS 11 e o Swift 4. Tive que executá-lo algumas vezes no simulador antes de funcionar porque estava chegando ao tempo limite. Isso pode ocorrer porque meu computador está lento.
- Se você deseja ocultar algumas dessas opções, faça isso
excludedActivityTypes
conforme mostrado no código acima.
- Não incluir a
popoverPresentationController?.sourceView
linha fará com que seu aplicativo falhe quando executado em um iPad.
- Isso não permite que você compartilhe texto ou imagens com outros aplicativos. Você provavelmente quer
UIDocumentInteractionController
isso.
Veja também
Compartilhar: Texto
Compartilhar: Image
Compartilhar: Texto - Imagem - URL
fonte
Achei que isso funcionaria perfeitamente se você quiser compartilhar a tela inteira.
fonte
Apenas como nota, você também pode usar isso para iPads:
Portanto, a popover aparece no remetente (o botão nesse caso).
fonte
Você pode usar as seguintes funções que escrevi em uma das minhas aulas auxiliares em um projeto.
apenas ligue
e funcionará para iPhone e iPad. Se você passar o valor CGRect de qualquer modo de exibição por sourceRect, ele também mostrará uma pequena seta no iPad.
fonte
Eu usei a implementação acima e agora soube que ela não funciona no iPad com iOS 13. Eu tinha que adicionar essas linhas antes da chamada present () para fazê-la funcionar
É assim que funciona para mim
fonte