#62 顯示 iOS SDK 內建的 controller
Published in
11 min readNov 25, 2018
方法一: UIKit
利用 present 顯示。
方法二: SwiftUI
利用 UIViewControllerRepresentable 顯示。
SFSafariViewController
顯示網頁。
import SafariServices
if let url = URL(string: "https://developer.apple.com") {
let controller = SFSafariViewController(url: url)
}
UIActivityViewController
分享圖片和文字。(從實機測試才會有 FB & LINE)
範例:
let controller = UIActivityViewController(activityItems: ["永遠的小王子", UIImage(named: "peter")!, URL(string: "http://apppeterpan.mystrikingly.com")!], applicationActivities: nil)
說明:
參數 activityItems array 裡東西的型別決定分享的內容,比方字串是分享文字,UIImage 是分享圖片,URL 是分享網頁。
ps:
- 將圖片存到手機相簿要在 App 的 Info 頁面設定 Privacy NSPhotoLibraryAddUsageDescription。
2. 在 iPad 顯示 UIActivityViewController 時必須設定彈出框顯示的位置,否則會造成 App 閃退。
UIAlertController
(1) 使用 alert style,利用它在編輯頁面做檢查,比方檢查欄位空白時,顯示錯誤。
(2) 使用 actionSheet style,利用它列出選單,比方十二星座選單。
(3) 使用 alert style,顯示 text field。
AVPlayerViewController
播放影片。
import AVKit
if let url = URL(string: "https://video-ssl.itunes.apple.com/apple-assets-us-std-000001/Video128/v4/ac/7c/62/ac7c6274-60ea-5b7c-4c99-f08d78bfe574/mzvf_484000410198456586.640x352.h264lc.U.p.m4v") {
let player = AVPlayer(url: url)
let controller = AVPlayerViewController()
controller.player = player
present(controller, animated: true) {
player.play()
}
}
UIReferenceLibraryViewController
顯示單字的意思,需搭配實機測試,無法在模擬器測試。
以下的 controller 比較複雜,需搭配 data source 或 delegate 才能實現完整功能。
UIImagePickerController
選擇相簿的照片或拍照。
let controller = UIImagePickerController()
controller.sourceType = .photoLibrary
PHPickerViewController
MFMailComposeViewController
寄信。(須在實機測試)
UIDocumentPickerViewController & UIDocumentBrowserViewController
選取 File App 的檔案
MFMessageComposeViewController
寄簡訊。(須在實機測試)
CNContactPickerViewController
通訊錄。
QLPreviewController
顯示 pdf,word,圖片等檔案。
MPMediaPickerController
選取 Music App 裡的音樂和影片。
UIColorPickerViewController
選取顏色。
UIFontPickerViewController
選取字型。