從程式製作國旗圖案->美國國旗

廢話不多說,直接說製作過程吧

本文運用了很多陣列跟迴圈的宣告語法(慎入)

畫出的順序如下:

  1. 白色底圖
  2. 左側藍色底圖
  3. 藍色底圖右方四條短的紅色彩條
  4. 藍色底圖下方三條長的紅色彩條
  5. 藍色底圖上的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

--

--