#62 顯示 iOS SDK 內建的 controller

方法一: 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:

  1. 將圖片存到手機相簿要在 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

選取字型。

作品集

--

--

彼得潘的 iOS App Neverland
彼得潘的 100 道 Swift iOS App 謎題

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com