Xcode Bug
因為老師太廢,從2020年初投票回來開始跟其他實驗室(aka 金主)合作一個完全不同領域的project。過程多少風風雨雨和狗屁倒灶的事以後有機會再講。總而言之現在做的東西跟AR有關。而現階段在實現Mobile AR 最火的兩個框架就是ARCore (Google), 和 ARKit (Apple)。經過一番嘗試和爬文之後,選定用ARKit來開發。
說實在,無論選哪個,我都得從頭學起,畢竟以前完全沒寫過手機app。幸好最近剛退役用了四年多的Iphone 6s,迎來了Iphone 11,所以硬體上並沒有太大問題。比較棘手的是要去哪找開發ios app 的資源。由於想當個免費仔,所以沒有考慮任何線上課程。但也幸好這個資訊爆炸時代,網路上一堆人分享學習資源,大多數的疑問都能找到答案,只有少數時候得看官方文檔,在實作上trial and error並試圖的去理解文件內容寫的意思。
在這邊就要講到,要開發蘋果的app,不管軟硬體上,必定得用他們家的東西(OS, IDE, Programming Language),簡直直銷一條龍。不得不說真的很Z,但還好我信仰夠,除了Swift要學,其他東西我都有。而Xcode就是蘋果限定的IDE,不論是要寫Mac上或是手機上的app,都得用Xcode開發並編譯你的程式。在Xcode上面有個叫做Storyboard的東西,主要就是讓你設計手機的介面,和使用邏輯。比如說你可以在Storyboard上放兩個按鍵,並設計使用者按按鍵之後會發生什麼事。例如,按A按鍵會讓你跳離這個頁面,按B按鍵會顯示 “你很Z" 之類的。
Xcode內建Iphone系列手機模板,如圖中最下方那一排,你可以根據自己手機型號,選擇模板,基本上你在模板上哪個位置放哪個圖案,就會是實際把app跑在你手機上的樣子,非常直觀。
而bug就在這裡,非常之Z,搞了我好久。一開始我是選Iphone 11的模板來設計我的UI,但不論我怎麼調放在Storyboard裡的UI,跑到我手機上之後看的東西就是不一樣。剛開始還不以為意,想說這種介面的東西後面再學就好。但當整個app開始變複雜之後,對於介面上顯示的東西就不得不在意了。於是開始花時間仔細下去瞭解Storyboard背後的運作原理。後來發現其實沒想像中複雜,主要是以手機整個最左上角的角作為原點(0, 0),而之後元件擺放的位置可以依據相對於最近元件的座標來調,或是主座標來調。但無論我怎麼調,怎麼算,我要的元件擺放位置在Storyboard上看起來的就是跟跑到我手機上的 完全不一樣。說完全不一樣有點誇張,但不管怎樣就是跟預計的位置向下位移了某個肉眼不可忽略的X值。我花了整個工作天在那邊來回驗算擺放元件的坐標值,不管怎樣都找不到哪裡出錯。
後來發現,bug就是在Xcode把模板搞錯,iPhone 11 Pro的模板其實是iPhone 11,iPhone 11的模板其實是iPhone 11 Pro。解法就是選擇 iPhone 11 Pro的模板,什麼bug都沒了。ZZZ
Z爆
ReplyDelete左上角原點這件事依稀有聽@chenhaoftk提過說不定他知道
一陣子沒用XCode了不知道
Delete這bug太廢了吧