從程式製作國旗圖案->美國國旗
廢話不多說,直接說製作過程吧
本文運用了很多陣列跟迴圈的宣告語法(慎入)
畫出的順序如下:
- 白色底圖
- 左側藍色底圖
- 藍色底圖右方四條短的紅色彩條
- 藍色底圖下方三條長的紅色彩條
- 藍色底圖上的50顆星星
在計算每顆星星的距離時,用Double宣告距離為20.6
在使用迴圈計算的時候發現用20.6連續加3次的時候….會出現一個神奇的現象
(大家有興趣可以在自己的XCode上實驗一下)
本來想直接取出小數點後1位,但我懶惰…
所以就直接把美國國旗的外框重新定義一次
美國國旗外框 寬:247 高:130
紅色彩條 高:10
藍色方格 寬:98.8 高:70
接著就照著Peter說明的宣告方式
再透過addSubview把前面2–5產出的UIImageView拼上去
這邊有個說明,因為要宣告的物件實在是太多
再加上又有位置的關係
所以我先用陣列array宣告所有的UIImageView以及CGRent
跟Peter討教了一下才知道原來CGRent的組成是
CGPoint + CGSize
宣告方式如下:
所以我的做法就變成兩個部分,把CGPoint跟CGSize分開宣告
其中CGPoint用array的方式宣告
藍色底圖右方四條短的紅色彩條
先宣告第一條的CGPoint位置接著宣告CGSize
再來用shortredrect array把CGRent存入
接著在用迴圈把其他三條短的紅色彩條宣告完成
藍色底圖下方三條長的紅色彩條
跟短的紅色彩條宣告方式大同小異,只有CGPoint的位置不一樣
接著在用迴圈把其他兩條長的紅色彩條宣告完成
藍色底圖上的50顆星星
宣告的方式跟前面紅色彩條宣告的方式一樣
先宣告星星初始的位置,再透過迴圈把其他星星完成
星星的部分分為兩種:六顆一排的星星跟五顆一排的星星
我把六顆一排的星星全部一次存入starView 的 array中的[0]–[29]位置
另外五顆一排的星星則是放在starView 的array中的[30]-[49]位置
我的設定是將starView[0]設定為六顆一排星星的第一個位置
也就是說starView[0]的初始位置設定完成後,其他的則透過迴圈把它完成
另外starView[30]就是五顆一排星星的第一個位置
也是先設定完starView[30]的初始位置,剩下的透過迴圈把它完成
最後是完整的程式碼:
是說最後寫完才看到其他學長的美國國旗作品:
他的藍色跟紅色挺漂亮的,所以就順勢把顏色的部分也抄過來了
如果早點看到的話,搞不好就不會有這篇了呢 XD
#swift