下載初始項目并解壓,在 Xcode 中打開 BlueLibrarySwift.xcodeproj
項目文件。
項目中有三個地方需要注意一下:
ViewController
有兩個 IBOutlet
,分別連接到了 UITableView
和 UIToolBar
上。
HTTP
客戶端類 (HTTPClient
) ,里面還沒有什么內(nèi)容,需要你去完善。注意:其實當你創(chuàng)建一個新的 Xcode 的項目的時候,你的代碼里就已經(jīng)有很多設(shè)計模式的影子了: MVC、委托、代理、單例 - 真是眾里尋他千百度,得來全不費功夫。
在學(xué)習(xí)第一個設(shè)計模式之前,你需要創(chuàng)建兩個類,用來存儲和展示專輯數(shù)據(jù)。
創(chuàng)建一個新的類,繼承 NSObject
名為 Album
,記得選擇 Swift 作為編程語言然后點擊下一步。
打開 Album.swift
然后添加如下定義:
var title : String!
var artist : String!
var genre : String!
var coverUrl : String!
var year : String!
這里創(chuàng)建了五個屬性,分別對應(yīng)專輯的標題、作者、流派、封面地址和出版年份。
接下來我們添加一個初始化方法:
init(title: String, artist: String, genre: String, coverUrl: String, year: String) {
super.init()
self.title = title
self.artist = artist
self.genre = genre
self.coverUrl = coverUrl
self.year = year
}
這樣我們就可以愉快的初始化了。
然后再加上下面這個方法:
func description() -> String {
return "title: (title)" +
"artist: (artist)" +
"genre: (genre)" +
"coverUrl: (coverUrl)" +
"year: (year)"
}
這是專輯對象的描述方法,詳細的打印了 Album
的所有屬性值,方便我們查看變量各個屬性的值。
接下來,再創(chuàng)建一個繼承自 UIView
的視圖類 AlbumView.swift
。
在新建的類中添加兩個屬性:
private let coverImage: UIImageView!
private let indicator: UIActivityIndicatorView!
coverImage
代表了封面的圖片,indicator
則是在加載過程中顯示的等待指示器。
這兩個屬性都是私有屬性,因為除了 AlbumView
之外,其他類沒有必要知道他倆的存在。在寫一些框架或者類庫的時候,這種規(guī)范十分重要,可以避免一些誤操作。
接下來給這個類添加初始化化方法:
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
init(frame: CGRect, albumCover: String) {
super.init(frame: frame)
backgroundColor = UIColor.blackColor()
coverImage = UIImageView(frame: CGRectMake(5, 5, frame.size.width - 10, frame.size.height - 10))
addSubview(coverImage)
indicator = UIActivityIndicatorView()
indicator.center = center
indicator.activityIndicatorViewStyle = .WhiteLarge
indicator.startAnimating()
addSubview(indicator)
}
因為 UIView
遵從 NSCoding
協(xié)議,所以我們需要 NSCoder
的初始化方法。不過目前我們沒有 encode
和 decode
的必要,所以就把它放在那里就行,調(diào)用父類方法初始化即可。
在真正的初始化方法里,我們設(shè)置了一些初始化的默認值。比如設(shè)置背景顏色默認為黑色,創(chuàng)建 ImageView
并設(shè)置了 margin
值,添加了一個加載指示器。
最終我們再加上如下方法:
func highlightAlbum(
if didHighlightView == true {
backgroundColor = UIColor.whiteColor()
} else {
backgroundColor = UIColor.blackColor()
}
}
這會切換專輯的背景顏色,如果高亮就是白色,否則就是黑色。
在繼續(xù)下面的內(nèi)容之前, Command + B
試一下確保沒有什么問題,一切正常?那就開始第一個設(shè)計模式的學(xué)習(xí)啦!
更多建議: