[IT鐵人碎碎念篇]
這倒是真的,對自己的履歷與經歷都是有加分的
尤其是在找工作時,會因為有此經歷而有所變數唷!
各位加油!!
嗯,讓我們繼續故事吧
蕭亦翔之後有找我一同去看夜景,而我剛好也想去拍夜景
Man talk就是那樣嗎...(以下省略三萬字)
疑?別給我這麼省略啊!!!(林宇)
好啦,那天他跟我說...
阿宏,其實我一直都喜歡霏語你應該是知道的吧(亦翔)
我知道啊,跟你這麼多年了,哪位不清楚你腦子裡在想什麼,除了霏語不知道而已
啊不,她現在知道了,因你那時年貨大街做的蠢事,哈哈哈
哎呦,那時我一定被附身了,才會說這那種話(亦翔)
老實說,我挺羨慕你們的,也很希望你們能再一起修成正果
「如果自己還能再堅強一點的話,那份壓抑在心裡的思念,或許我會嘗試伸出手握緊妳」(亦翔)
啥!握我幹嘛~滾!
我性向很正常,你離俺遠點,去旁變畫圈圈思你的念!!
呃,你可以在淦話一點,少在那自我感覺良好!(亦翔)
好啦,別說兄弟不幫你一把,反正都來夜曝了,那我們就來玩玩光塗鴉吧!
光塗鴉?(亦翔)
「老蕭的不負責任解說」
Light Painting 光影塗鴉原理
光影塗鴉的原理Very So Easy,只要相機的快門時間拉長,然後拿著一隻激光劍,拍攝下激光劍在揮舞時的軌跡,影像上便會有成像了
激光劍...你當這是星際大戰唷...(亦翔)
啊,那就手機的手電筒也可以啊
那...要畫什麼字啊(亦翔)
那就畫一個「LOVE」吧!
(本故事純屬虛構,如有雷同實屬巧合)
想必,你應該知道我們等等要做什麼App來當練習了吧
手機的手電筒控制App嗎?(林宇)
正是如此,不愧是我看上的女人!!
呃...(林宇)
Step1. 開個新專案名稱為「Flashlight」
Step2. 接著拉出一個Switch元件,等等要來當作開關使用
Step3. 步驟1 先點選元件->點選步驟2的地方,叫出元件屬性->步驟3 State選擇「Off」
Step4. 開啟「輔助設計模式」,將Switch元件選擇「Value Changed」連結,名稱為「SwitchBtn」
Step5. 鍵入以下程式碼,可以注意到判斷Switch State值會出現錯誤訊息,因為上面取得的值類別為Any,而非一個布林值,將Any改為UISwitch
@IBAction func SwitchBtn(_ sender: UISwitch) {
if let AVCDeviceVideo = AVCaptureDevice.default(for: .video) {
// AVCaptureDevice.default(for: .video) 為獲得後方鏡頭的訪問
if AVCDeviceVideo.hasTorch {
// 確認後方鏡頭支援燈光功能
do {
//注意改變設備屬性前一定要首先使用lockForConfiguration->使用完之後使用unlockForConfiguration方法解鎖
// 取得設備配置屬性的訪問權限
try AVCDeviceVideo.lockForConfiguration()
// 控制LED
// 判斷元件State
if sender.isOn {
AVCDeviceVideo.torchMode = .on
} else {
AVCDeviceVideo.torchMode = .off
}
AVCDeviceVideo.unlockForConfiguration()
} catch {
print(error)
}
}
}
}
[改變前]
[改變後]
Step6. 編譯測試看看,手機點選Switch切換後可順利使用,Finish
[Off狀態]
[On狀態]
)
完整程式碼提供:
import UIKit
import AVFoundation //導入AVFoundation
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func SwitchBtn(_ sender: UISwitch) {
if let AVCDeviceVideo = AVCaptureDevice.default(for: .video) {
// AVCaptureDevice.default(for: .video) 為獲得後方鏡頭的訪問
if AVCDeviceVideo.hasTorch {
// 確認後方鏡頭支援燈光功能
do {
//注意改變設備屬性前一定要首先使用lockForConfiguration->使用完之後使用unlockForConfiguration方法解鎖
// 取得設備配置屬性的訪問權限
try AVCDeviceVideo.lockForConfiguration()
// 控制LED
// 判斷元件State
if sender.isOn {
AVCDeviceVideo.torchMode = .on
} else {
AVCDeviceVideo.torchMode = .off
}
AVCDeviceVideo.unlockForConfiguration()
} catch {
print(error)
}
}
}
}
}