貪吃蛇游戲(四)——美化界面

接上篇

http://www.reibang.com/p/04bed658abed

在本節(jié)里喘沿,我們將對現(xiàn)有的界面進行一些美化奥帘,包括添加導(dǎo)航欄骆莹,添加背景圖片,貪吃蛇圖標(biāo)圖片靶草,添加食物圖片等等蹄胰。

1 添加導(dǎo)航欄
打開Matin.storyboard,點擊Snake View Controller



之后選擇 Editor > Embed In > Navigation Controller。



雙擊導(dǎo)航欄中央奕翔,輸入『貪吃蛇』裕寨,如下圖:

2 給貪吃蛇添加背景圖片
在項目左側(cè)導(dǎo)航欄,找到Assets.xcassets,點擊派继,之后點擊右下角的『+』(綠色圈)帮坚,選擇New Image Set。



將下面的圖片拖入2x位置


背景


之后點擊Image互艾,將其重命名為background(點擊Image试和,間隔2秒后再次點擊)。
現(xiàn)在我們需要在代碼中應(yīng)用背景纫普。首先在左側(cè)的導(dǎo)航欄里找到SnakeViewController.swift阅悍,點擊。找到viewDidLoad()函數(shù)昨稼,在super.viewDidLoad()后添加如下代碼
let backgroundImage = UIImage(named: "background")!
        
view.backgroundColor = UIColor(patternImage: backgroundImage)

這段代碼將修改view的背景圖片节视。
點擊左上角的運行按鈕,現(xiàn)在我們的背景圖片變成剛才添加的圖片了假栓,如下圖:


3 給蛇增加圖片寻行。
點擊左側(cè)的Assets.xcassets,點擊右下角的『+』匾荆,選擇New Folder拌蜘,將New Folder重命名為snake杆烁。在snake中添加如下兩張圖片,分別為snake head和snake body简卧。




分別添加完成后兔魂,將名字修改為snakeHead和snakeBody,如下所示:



我們繼續(xù)在代碼中實現(xiàn)對圖片的引用邏輯举娩。
在左側(cè)導(dǎo)航欄找到ListBodyItem.swift析校,之后找到SnakeHead的定義,在super.init后面加入:
setImage(UIImage(named: "snakeHead"), forState: .Normal)

找到SnakeBody的定義铜涉,在let body = ListBodyItem(frame: frame)后加入

body.setImage(UIImage(named: "snakeBody"), forState: .Normal)

之后點擊運行智玻,現(xiàn)在我們的蛇像這樣:



現(xiàn)在整個蛇還很不美觀,不僅周圍有灰色的空白芙代,而且蛇的身體使用方形也并不好看尚困。
我們將蛇的頭和身體做圓角化處理。在剛才的SnakeHead背景后面添加如下代碼:

layer.cornerRadius = 17
clipsToBounds = true //去除邊界

這兩句將對蛇頭的圖標(biāo)做圓角處理链蕊。
在對蛇的身體處理時事甜,我們需要增加一個漸變效果,這將使得蛇的身體不斷變小滔韵,我們通過不斷增加cornerRadius的值來實現(xiàn)逻谦,首先在SnakeBody中增加如下存儲屬性:

var startRadius: CGFloat = 20.0

之后在conBody()中增加如下代碼:

body.layer.cornerRadius = startRadius
body.clipsToBounds = true
startRadius += 0.5

經(jīng)過修改后整個SnakeBodyList的代碼如下:

import UIKit

class ListBodyItem: UIButton {
    override var frame: CGRect {
        set {
            if let next = nextItem {
                next.frame.origin = frame.origin
            }
            
            super.frame.origin = newValue.origin
        }
        
        get {
            return super.frame
        }
    }
    
    var nextItem: ListBodyItem?
    
    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

class SnakeHead: ListBodyItem {
    init() {
        super.init(frame: CGRect(x: 90, y: 90, width: 30, height: 30))
        setImage(UIImage(named: "snakeHead"), forState: .Normal)
        layer.cornerRadius = 17
        clipsToBounds = true
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

class SnakeBody {
    var startRadius: CGFloat = 20.0
    var bodys = [ListBodyItem]()
    
    //初始化身體時只有一段
    init() {
        bodys.append(conBody(CGRect(x: 60, y: 90, width: 30, height: 30)))
    }
    
    //為蛇添加一段(完成一次吃食后調(diào)用)
    func addOne(view: UIView) {
        let curLast = bodys.last!
        
        bodys.append(conBody(curLast.frame))
        curLast.nextItem = bodys.last
        
        view.addSubview(bodys.last!)
    }
    
    //構(gòu)造一個bodyItem
    func conBody(frame: CGRect) -> ListBodyItem {
        let body = ListBodyItem(frame: frame)
        body.setImage(UIImage(named: "snakeBody"), forState: .Normal)
        body.layer.cornerRadius = startRadius
        body.clipsToBounds = true
        startRadius += 0.5
        
        return body
    }
}

點擊左上角的運行,現(xiàn)在陪蜻,我們的蛇是這個樣子:



相比剛才邦马,要好看了一些。

4 給食物增加圖標(biāo)
點擊左側(cè)的Assets.xcassets宴卖,和上面一樣滋将,新增一個food文件夾。本來可以在food中多添加幾張圖片症昏,并對食物做一個隨機處理随闽,目前為了簡化先只添加一張圖片。如下圖:



將圖片拖入image中肝谭,并將image重命名為chicken



在左側(cè)導(dǎo)航欄里找到Food.swift掘宪,在init中添加如下代碼:
setImage(UIImage(named: "chicken"), forState: .Normal)
layer.cornerRadius = CGFloat(foodX/2)
clipsToBounds = true

現(xiàn)在Food.init的代碼如下

init(view: UIView) {
    //初始化在屏幕中央
    super.init(frame: CGRect(x: 180, y: 330, width: foodX, height: foodY))
        
    setImage(UIImage(named: "chicken"), forState: .Normal)
    layer.cornerRadius = CGFloat(foodX/2)
    clipsToBounds = true

    //將Food添加到主view中顯示
    view.addSubview(self)
    //注冊點擊事件
    addTarget(self, action: "changeFood:", forControlEvents: .TouchDown)
}

點擊左上角的運行,效果如下:


5 修改app圖標(biāo)
app圖標(biāo)的修改相對簡單攘烛,點擊左側(cè)的Assets.xcassets魏滚,找到AppIcon,將下面的圖片拖入App iOS 7-9 60pt的2x中


icon.png

如下圖所示:



如果使用真實的iphone6運行坟漱,在手機上圖標(biāo)如下:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鼠次,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腥寇,老刑警劉巖成翩,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異花颗,居然都是意外死亡捕传,警方通過查閱死者的電腦和手機惠拭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門扩劝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人职辅,你說我怎么就攤上這事棒呛。” “怎么了域携?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵簇秒,是天一觀的道長。 經(jīng)常有香客問我秀鞭,道長趋观,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任锋边,我火速辦了婚禮皱坛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘豆巨。我一直安慰自己剩辟,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布往扔。 她就那樣靜靜地躺著贩猎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萍膛。 梳的紋絲不亂的頭發(fā)上吭服,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音蝗罗,去河邊找鬼噪馏。 笑死,一個胖子當(dāng)著我的面吹牛绿饵,可吹牛的內(nèi)容都是我干的欠肾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼拟赊,長吁一口氣:“原來是場噩夢啊……” “哼刺桃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吸祟,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瑟慈,失蹤者是張志新(化名)和其女友劉穎桃移,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葛碧,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡借杰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了进泼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔗衡。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖乳绕,靈堂內(nèi)的尸體忽然破棺而出绞惦,到底是詐尸還是另有隱情,我是刑警寧澤洋措,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布济蝉,位于F島的核電站,受9級特大地震影響菠发,放射性物質(zhì)發(fā)生泄漏王滤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一滓鸠、第九天 我趴在偏房一處隱蔽的房頂上張望雁乡。 院中可真熱鬧,春花似錦哥力、人聲如沸蔗怠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寞射。三九已至,卻和暖如春锌钮,著一層夾襖步出監(jiān)牢的瞬間桥温,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工梁丘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侵浸,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓氛谜,卻偏偏與公主長得像掏觉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子值漫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容