Contoh Proyek UIActivityViewController
Siapkan papan cerita Anda dengan dua tombol dan kaitkan ke pengontrol tampilan Anda (lihat kode di bawah).
Tambahkan gambar ke Assets.xcassets Anda. Saya menyebut milik saya "singa".
Kode
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)
}
}
Hasil
Mengklik "Bagikan beberapa teks" memberikan hasil di sebelah kiri dan mengklik "Bagikan gambar" memberikan hasilnya di sebelah kanan.
Catatan
- Saya menguji ulang ini dengan iOS 11 dan Swift 4. Saya harus menjalankannya beberapa kali di simulator sebelum berhasil karena waktunya habis. Ini mungkin karena komputer saya lambat.
- Jika Anda ingin menyembunyikan beberapa pilihan ini, Anda dapat melakukannya dengan
excludedActivityTypes
seperti yang ditunjukkan pada kode di atas.
- Tidak termasuk
popoverPresentationController?.sourceView
garis akan menyebabkan aplikasi Anda mogok saat dijalankan di iPad.
- Ini tidak memungkinkan Anda untuk berbagi teks atau gambar ke aplikasi lain. Anda mungkin menginginkannya
UIDocumentInteractionController
.
Lihat juga
Bagikan: Teks
Bagikan: Gambar
Bagikan: Teks - Gambar - URL
sumber
Saya menemukan ini berfungsi dengan sempurna jika Anda ingin berbagi seluruh layar.
sumber
Sama seperti catatan, Anda juga dapat menggunakan ini untuk iPad:
Jadi popover muncul dari pengirim (tombol dalam kasus itu).
sumber
Anda dapat menggunakan fungsi berikut yang saya tulis di salah satu kelas pembantu saya dalam sebuah proyek.
panggil saja
dan itu akan bekerja untuk iPhone dan iPad. Jika Anda melewatkan nilai CGRect tampilan apa pun oleh sourceRect, itu juga akan menampilkan panah kecil di iPad.
sumber
if
pernyataan, Anda dapat menulis[url, image, msg].compactMap({ $0 })
.Saya telah menggunakan implementasi di atas dan baru saja saya mengetahui bahwa itu tidak berfungsi di iPad yang menjalankan iOS 13. Saya harus menambahkan baris-baris ini sebelum panggilan present () untuk membuatnya berfungsi
Begitulah cara kerjanya bagi saya
sumber