#4a 利用 iOS SDK 各式型別生成東西,設定它的屬性和呼叫方法

目的: 學習利用 iOS SDK 各式型別生成東西,設定它的屬性和呼叫方法。

關鍵技術:

  • 地圖: MapKit,MKMapView,MKCoordinateRegion
  • 播音樂: AVFoundation,URL,AVPlayer
  • 播影片: AVKit,AVPlayerViewController
  • 網頁: SafariServices,SFSafariViewController
  • 時間: Foundation,Date,DateFormatter,Calendar,DateComponents,Void
  • App 講話: AVFAudio,AVSpeechSynthesizer,AVSpeechUtterance,AVSpeechSynthesisVoice
  • playground: PlaygroundSupport,PlaygroundPage,liveView,type property
//播音樂
import AVFoundation

let url = URL(string: "https://drive.google.com/uc?export=download&id=1jvaWxokiHNQBtkjyT2TrNutLRr2JxNqo")
let player = AVPlayer(url: url!)
player.play()
//播影片
import AVKit
import PlaygroundSupport

let url = URL(string: "https://movietrailers.apple.com/movies/fox_searchlight/the-menu/the-menu-trailer-1_h480p.mov")
let player = AVPlayer(url: url!)
let controller = AVPlayerViewController()
controller.player = player
PlaygroundPage.current.liveView = controller
player.play()

//開網頁
import SafariServices
import PlaygroundSupport

let url = URL(string: "https://ani.gamer.com.tw/")
let controller = SFSafariViewController(url: url!)
PlaygroundPage.current.liveView = controller

//開地圖秀台灣大學
import MapKit
import PlaygroundSupport

let mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
mapView.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 25.018116, longitude: 121.538293), latitudinalMeters: 1000, longitudinalMeters: 1000)
PlaygroundPage.current.liveView = mapView
let bigBenAnnotation = MKPointAnnotation()
bigBenAnnotation.title = "台灣大學"
bigBenAnnotation.coordinate = CLLocationCoordinate2D(latitude: 25.018116, longitude: 121.538293)
bigBenAnnotation.subtitle = "台灣最高學府"
mapView.addAnnotation(bigBenAnnotation)
let londonEyeAnnotation = MKPointAnnotation()
londonEyeAnnotation.title = "台灣大學圖書館"
londonEyeAnnotation.coordinate = CLLocationCoordinate2D(latitude: 25.017340, longitude: 121.540662)
londonEyeAnnotation.subtitle = "學術館藏豐富之處"
mapView.addAnnotation(londonEyeAnnotation)
mapView.mapType = .hybrid

//顯示時間,取得星期幾跟年份
import Foundation

let today = Date()
let dateComponents = Calendar.current.dateComponents(in: TimeZone.current, from: today)
let month = dateComponents.month
let day = dateComponents.day
//weekday數值1是星期天
let weekday = dateComponents.weekday
let year = dateComponents.year

//使用內建合成器說話
import AVFAudio

let utterance = AVSpeechUtterance(string: "哪朵玫瑰 沒有荊棘 最好的報復 是美麗 最美的盛開 是反擊。")
utterance.voice = AVSpeechSynthesisVoice(language: "zh-TW")
utterance.rate = 0.5
utterance.pitchMultiplier = 1.2
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)

--

--

邱奕軒/Charlie
彼得潘的 Swift iOS / Flutter App 開發教室

IOS 初心者 Resolve to perform what you ought. Perform without fail what you resolve