iOS 課堂作業 從 playground 調色去背圖片


import UIKit

let typeMoonImageView = UIImageView(image: UIImage(named: "typemoon.png"))
typeMoonImageView.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.5)

typeMoonImageView.frame = CGRect(x: 0, y: 0, width: 300, height: 100)

let patternImageView = UIImageView(image: UIImage(named: "pattern.png"))

patternImageView.frame = typeMoonImageView.frame

patternImageView.addSubview(typeMoonImageView)

typeMoonImageView.layer.borderWidth = 5
typeMoonImageView.layer.borderColor = UIColor.red.cgColor
typeMoonImageView

要去背的圖片,我是選鼎鼎大名的遊戲IP — Typemoon社的商標哈

去背後的樣子

至於怎麼去背的,我是利用Mac上的Preview去背的
記得最後去背完的檔案要轉成png檔喔

好了,前置作業 — 要有已去背的圖片了,接下來就是把圖片加入到Playground裡了。

加入的方法,就是打開finder,找出它,然後再按option加拖曳圖片到Playground裡的Resources資料夾

如上圖,我把素材(已去背的圖片和等一下要疊加上去的圖片[pattern.png])都放入Resources資料夾裡了。

然後開始進入code的部分。

首先,先寫程式加入圖片

import UIKit

let typeMoonImageView = UIImageView(image: UIImage(named: "typemoon.png"))

第一行寫import UIkit,是為了要加入UI的函式庫(UIkit),不然接下來的步驟,Playground會無法辨識我們寫的程式碼。import就是放在要加入的函示庫前,宣告函式庫用的。

let是swift裡宣告常數的寫法,可以不加Type來宣告。
我在此宣告一個叫typeMoonImageView的常數,這個常數名字是用駱駝峰命名法命名的。

let typeMoonImageView = UIImageView(image: UIImage(named: "typemoon.png"))

等號右邊的東西會存到左邊的常數裡。
因為這邊我要圖片,所以就宣告一個UIImageView的型別(在swift中,字首大寫的單字通常是型別(Type)),來放圖片的資料。

UIImageView中的(),參數要傳入一個UIImage的型別,這個就可以放入圖片了,所以我在name:的地方就放入我圖片的名字字串。

typeMoonImageView.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.5)

typeMoonImageView.frame = CGRect(x: 0, y: 0, width: 300, height: 100)

然後我在typeMoonImageView的常數後面加上.,加入屬性backgroundColor,然後這個左邊的backgroundColor的型別要跟等號右邊的型別一樣,不然會出現錯誤。
這邊backgroundColor的型別是UIColor,所以右邊也呼叫UIColor。
然後在UIColor的()中設定顏色(RGB,數值:0~1)跟透明度(alpha,數值:0~1,1是完全不透明)。

現在圖片的顏色都設定好了,如下:

去背的地方加上顏色囉!

再來設定typeMoonImageView的大小

typeMoonImageView.frame = CGRect(x: 0, y: 0, width: 300, height: 100)

.frame是圖片大小跟位置的屬性。
它的型別是CGRect。

let patternImageView = UIImageView(image: UIImage(named: "pattern.png"))

加入要覆蓋的素材圖片,方法步驟跟前面一樣,就不再贅述了。

patternImageView.frame = typeMoonImageView.frame

這一行是指定patternImageView跟typeMoonImageView大小位置一樣,這樣後面幫圖片加上素材的時候,才不會出問題。
比如素材沒完全覆蓋到圖片之類的。

patternImageView.addSubview(typeMoonImageView)

在patternImageView後面,利用加.點的方式呼叫function addSubview()。
(是的,加.是叫屬性跟function的方法,加法一樣。)
(屬性和function的分辨方法:屬性名字後面沒有()、但function名字後面有(),()中可以輸入參數或常數或變數,不一定。)

這邊我們利用addSubview這個function把素材pattern.png加到TypeMoonImageView上。
如圖:

這是pattern.png的原貌:

在TM圖片中,格紋之所以會變成淡紅色,是因為背景顏色是淡紅色的關係。

typeMoonImageView

最後如果想看成果,要加typeMoonImageView這個常數到最後一行,因為它才是顯示圖片的常數。

完成啦!

--

--