#15利用 iOS SDK 各式型別生成東西,設定它的屬性和呼叫方法
Target: 學習利用 iOS SDK 各式型別生成東西,設定它的屬性和呼叫方法。
關鍵技術:
- 地圖: MapKit,MKMapView,MKCoordinateRegion
- 播音樂: AVFoundation,URL,AVPlayer
- 播影片: AVKit,AVPlayerViewController
- 網頁: SafariServices,SFSafariViewController
- 時間: Foundation,Date,DateFormatter,Calendar,DateComponents,Void
- App 講話: AVFoundation,AVSpeechSynthesizer,AVSpeechUtterance,AVSpeechSynthesisVoice
- playground: PlaygroundSupport,PlaygroundPage,liveView,type property
用 AVPlayer 播音樂
iTunes音樂連結取得方式如下
Google Drive方式如下
//播放影音需要import AVFoundation 才能夠播放
import AVFoundation
//這邊將歌曲改成炙愛的連結
let url = URL(string: "https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview125/v4/bb/10/7b/bb107b21-da25-818f-05f5-f7a32e311db0/mzaf_818185195853354651.plus.aac.p.m4a")
let player = AVPlayer(url: url!)
player.play()
用 AVPlayerViewController 播影片
播放影片,我們需要導入AVKit and PlaygroudSupport用以生成播放器與為了在 playground 看到 controller 的畫面,我們必須利用 live view 顯示,相關說明可參考以下連結。
import AVKit
import PlaygroundSupport
let url = URL(string: "https://movietrailers.apple.com/movies/independent/loving-highsmith/loving-highsmith-trailer-1_h1080p.mov")
let player = AVPlayer(url: url!)
let controller = AVPlayerViewController()
controller.player = player
PlaygroundPage.current.liveView = controller
player.play()
利用 SFSafariViewController 顯示網頁
利用SafariServices生成Safari 瀏覽器,並利用live生成在playground上
import SafariServices
import PlaygroundSupport
let url = URL(string: "https://medium.com/@johjima9015")
let controller = SFSafariViewController(url: url!)
PlaygroundPage.current.liveView = controller
顯示地圖
為了使用顯示地圖的 MKMapView,我們必須加入 framework MapKit。另外為了在 playground 看到地圖,我們須透過 PlaygroundPage 的 liveView,因此我們也要 import PlaygroundSupport。
MKMapView 的 region(區域) 控制地圖中心點的經緯度和範圍,它的型別為 MKCoordinateRegion。生成 MKCoordinateRegion 時,我們傳入以下三個參數:
- center: 型別 CLLocationCoordinate2D,代表地圖中心點的經緯度座標。latitude 是緯度,longitude 是經度。
- latitudinalMeters: 緯度範圍,單位是公尺,因此我們傳入 1000 表示地圖的最北邊 & 最南邊距離 1000 公尺
- longitudinalMeters: 經度範圍,單位是公尺,因此我們傳入 1000 表示地圖的最東邊 & 最西邊距離 1000 公尺。
利用MKPointAnnotation可以在地圖上標註地點,並將其取名
import MapKit
import PlaygroundSupport
let mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: 500, height: 500))
mapView.region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 25.054175, longitude:121.533385), latitudinalMeters: 1000, longitudinalMeters: 1000)let Taipei = MKPointAnnotation()
Taipei.title = "台北文創訓練中心"
Taipei.coordinate = CLLocationCoordinate2D(latitude: 25.054175, longitude: 121.533385)
Taipei.subtitle = "教室"
mapView.addAnnotation(Taipei)PlaygroundPage.current.liveView = mapView
列印時間
var time = Date()
利用 Date() 得到現在的時間。在程式裡 Date 型別的東西代表時間,由於 Date 是在 Foundation 裡定義,所以須 import Foundation。
time.addTimeInterval(91)
在 Date 資料上增加秒數,比方 Date 資料的時間是 2018/9/9 10:10:10,addTimeInterval(10) 後將變成 2018/9/9 10:10:20。
練習:
計算距離現在3小時50分20秒的時間。
import Foundation
var time = Date()
print(time)
time.addTimeInterval(18320)
print(time)
將時間變成特定格式的字串
格式的部分可以參考下方網頁
import Foundationlet now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = "yyyy年MM月dd日"let dateString = dateFormatter.string(from: now)
取得今天幾月幾號的數字
練習
- 取得今天年份的數字。
- 取得今天星期幾的數字。
import Foundation
let today = Date()
let dateComponents = Calendar.current.dateComponents(in: TimeZone.current, from: today)
let month = dateComponents.month
let day = dateComponents.day
let year = dateComponents.year
let week = dateComponents.weekday