初學(xué)swift,找來(lái)一個(gè)項(xiàng)目拿來(lái)練手。下面是幾個(gè)效果圖->
項(xiàng)目源碼?傳送門https://github.com/SPIREJ/XSLC_Swift-
首頁(yè):
- 首頁(yè)主要由banner、collectionView、tableView 組成

首頁(yè)
- 理財(cái)頁(yè)
- 理財(cái)列表頁(yè)、計(jì)劃詳情頁(yè)以及鍵盤等

理財(cái)
- 我的頁(yè)
- collectionView 、webView

我的
- 初學(xué)者,UI就這么多,就說(shuō)說(shuō)遇到的兩個(gè)坑吧~
第一個(gè)坑,使用pod建立工程時(shí)終端出錯(cuò)
pod[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.You can
try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
解決方案:終端輸入以下命令
pod repo add master https://github.com/CocoaPods/Specs.git
然后提示執(zhí)行
pod setup
如果出現(xiàn)
pod[!] The `master` repo is not a git repo.
進(jìn)入/users/你的用戶名/.cocoapods/repos,刪除master文件夾然后執(zhí)行,如我這么進(jìn)入
cd ~/.cocoapods/repos/
master文件夾是個(gè)目錄,刪除時(shí)需要連下面的分支一起刪掉
rm -rf ~/.cocoapods/repos/master
刪除master之后,再pod setup,之后配置好你的Podfile,最后pod install就成功的建立了 同名的.xcworkspace工程了
pod setup
#先 cd 到你工程的目錄
pod init
open -a Xcode Podfile
#添加你需要的三方庫(kù)
pod install
- 還有以下情況:
如果是安裝多個(gè)Xcdoe,還需要選擇Xcode的路徑,后面是你自己的Xcode路徑,顯示Xcode包內(nèi)容可查看
sudo xcode-select -switch /Applications/Xcode.app/
在終端里輸入下方命令可以知道Xcode的路徑:
xcode-select -p
第二個(gè)坑,加載基于XIB創(chuàng)建的自定義控件時(shí)報(bào)錯(cuò)
-
我像寫OC的基于XIB自定義控件一樣,創(chuàng)建一個(gè)基于
UIView的新類XSCustomView
創(chuàng)建基于UIView的新類XSCustomView -
創(chuàng)建一個(gè)同名的
XIB文件
創(chuàng)建一個(gè)同名的XIB文件 -
像OC一樣給文件指定類
像OC一樣給文件連線 然后加載View就會(huì)出錯(cuò)
fatal error: init(coder:) has not been implemented: file
/路徑/XXX.swift, line 43
(lldb)
-
解決辦法,查了好久資料,找到解決辦法
swift指定類與OC略有不同,swift需要的是File's Owner歸屬于咱們定義的哪個(gè)類,而下面的View是不需要指定類的
解決問(wèn)題 最后咱們從XIB加載View即可,如在custom.swift文件里有如下代碼
class XSCustomView: UIView {
var contentView:UIView!
override func awakeFromNib() {
super.awakeFromNib()
}
override init(frame: CGRect) {
super.init(frame: frame)
contentView = loadFromNib()
addSubview(contentView)
}
func loadFromNib() -> UIView {
return Bundle.main.loadNibNamed("XSCustomView", owner: nil, options: nil)?.first as! UIView
}
override func layoutSubviews() {
contentView.frame = bounds
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
}



