#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)

取得今天幾月幾號的數字

練習

  1. 取得今天年份的數字。
  2. 取得今天星期幾的數字。
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

--

--