第三方庫的一些知識(shí)與應(yīng)用
一 設(shè)置網(wǎng)絡(luò)請(qǐng)求活動(dòng)指示器(就是每當(dāng)連網(wǎng)請(qǐng)求數(shù)據(jù)的時(shí)候彈出來的那個(gè)小菊花圖標(biāo))
聲明hud的屬性
var hud:MBProgressHUD!
1.設(shè)置相應(yīng)小菊花文字 顏色 背景顏色 等的屬性
//網(wǎng)絡(luò)活動(dòng)指示器 在實(shí)際使用的時(shí)候 在所有控件之后進(jìn)行創(chuàng)建 并且添加到self.view上 否則會(huì)被覆蓋
self.hud = MBProgressHUD(view: self.view)```
3.開始請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù)
func dataRequestWithPost(){
//
//在開始請(qǐng)求數(shù)據(jù)的時(shí)候顯示網(wǎng)絡(luò)活動(dòng)指示器
self.hud.show(true)
let manager = AFHTTPSessionManager()
manager.responseSerializer.acceptableContentTypes = NSSet(object: "text/html") as! Set<String>
//設(shè)置請(qǐng)求頭
//apls
// manager.requestSerializer.setValue(<#T##value: String!##String!#>, forHTTPHeaderField: <#T##String!#>)
manager.POST("http://d.yixincao.com/interface/getdata.php?act=list&type=nuanwen&page=1", parameters: nil, success: { (dataTask, responseObject) -> Void in
print("請(qǐng)求成功:\(responseObject)")
//在數(shù)據(jù)請(qǐng)求完成之后隱藏活動(dòng)指示器
self.hud.hide(true)
}) { (dataTask, error) -> Void in
print("請(qǐng)求失敗:\(error)")
//蘋果審核規(guī)定 不管你的網(wǎng)絡(luò)請(qǐng)求時(shí)成功還是失敗 網(wǎng)絡(luò)活動(dòng)指示器不能沒完沒了的轉(zhuǎn)
self.hud.hide(true)
}
}
二1oc中插入swift 2swift中插入oc
1.建立一個(gè)Swift文件 然后彈出一個(gè)讓你是否建立橋文件的窗口 點(diǎn)右邊的確認(rèn)就行 然后再build setting中 查詢model 然后再packaging中改名字 然后照著Swift Compiler 中的Header Name的打一遍到m文件中
2.建立一個(gè)橋文件xxx_Briding_Header.h 在其中添加你需要倒入的oc的文件的名字 然后再build setting 中查詢bri 然后再briding Header中添加地址$(SRCROOT)/oc文件名
三 網(wǎng)絡(luò)請(qǐng)求(相當(dāng)于前面的getnetdata)
1.網(wǎng)絡(luò)請(qǐng)求有兩種 get post
2.這里講的是引入第三方庫來解決這個(gè)問題 這里注意的是parameters那里是否是nil 就看get那里是否有參數(shù) 如果沒有就nil 有就用dic這種傳參
func dataRequestWithGet2() {
//創(chuàng)建請(qǐng)求管理類
let manager = AFHTTPSessionManager()
//攜帶參數(shù)眠冈,以字典的方式攜帶參數(shù)彼水,更符合實(shí)際項(xiàng)目中傳參的方式县遣,根據(jù)接口文檔中的要求來做
//參數(shù)中currency和page是后臺(tái)要求的字段泛源,對(duì)應(yīng)的value值就是需要傳入的參數(shù)
let dic = ["currency": "rmb","page": "1"]
//get請(qǐng)求一般用于獲取數(shù)據(jù)诺核,post請(qǐng)求一般用于更改或者添加數(shù)據(jù)
manager.GET("http://iappfree.candou.com:8080/free/applications/limited", parameters: dic, success: { (dataTask, responseObject) in
print("請(qǐng)求成功:\(responseObject)")
}) { (dataTask, error) in
print("請(qǐng)求失斉凇:\(error)")
}
}
以上如果出現(xiàn)錯(cuò)誤 就用這個(gè)試試
//"Request failed: unacceptable content-type: text/html"
//content-type在默認(rèn)情況下是application/json格式的,如果是其他任何格式的話祝钢,都需要手動(dòng)進(jìn)行設(shè)置,表示數(shù)據(jù)響應(yīng)的格式
manager.responseSerializer.acceptableContentTypes = NSSet(object: "text/html") as! Set<String>
這里是手勢(shì)滑動(dòng)時(shí)滑條跟著移動(dòng)
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let index = scrollView.contentOffset.x / screenW
//獲取對(duì)應(yīng)的按鈕
let btn = self.buttonArray[Int(index)] as! UIButton
for btn in self.buttonArray {
(btn as! UIButton).selected = false
}
//設(shè)置選中
btn.selected = true
UIView.animateWithDuration(0.3) {
self.lineView.frame = CGRectMake(index * self.screenW / 3, 58, self.screenW / 3, 2)
}
}
這里是點(diǎn)擊按鈕滑條跟著移動(dòng)
func headerButtonClick(button:UIButton) {
//將已經(jīng)選中的按鈕置為不選中,保證每次只選中一個(gè)按鈕
for btn in self.buttonArray {
(btn as! UIButton).selected = false
}
//設(shè)置選中
button.selected = true
//指示條跟著移動(dòng)
UIView.animateWithDuration(0.3) {
self.lineView.frame = CGRectMake(CGFloat(button.tag - 10) * self.screenW / 3, 58, self.screenW / 3, 2)
}
//關(guān)聯(lián)scrollView
//self.scrollView.contentOffset = CGPointMake(CGFloat(button.tag - 10) * screenW, 0)
//帶有動(dòng)畫
self.scrollView.setContentOffset(CGPointMake(CGFloat(button.tag - 10) * screenW, 0), animated: true)
}
![屏幕快照 2016-10-17 下午8.37.04.png](/Users/qianfeng1/.Trash/屏幕快照 2016-10-17 下午8.37.04.png)
創(chuàng)建UI 其中設(shè)計(jì)到button和底下的滑動(dòng)條lineView
1.button就是button大小 顏色 點(diǎn)鐘、中和沒點(diǎn)中時(shí)有什么差別 最后把定制好的button循環(huán)模型加入一個(gè)數(shù)組中 用這個(gè)代碼 //將創(chuàng)建的按鈕循環(huán)添加到數(shù)組中
self.buttonArray.addObject(headerButton)
2.指示條的創(chuàng)建 顏色 位置大小 最后加入到self
3.最后是視圖控制器加入到加入到scrollview中
func createUI() {
//頭部按鈕
let titleArray = ["推薦","娛樂","新聞"]
for i in 0..<titleArray.count {
let headerButton = UIButton(type: .Custom)
//設(shè)置frame
headerButton.frame = CGRectMake(CGFloat(i) * screenW / CGFloat(titleArray.count), 0, screenW / CGFloat(titleArray.count), 60)
//設(shè)置標(biāo)題
headerButton.setTitle(titleArray[i], forState: .Normal)
//設(shè)置未選中的標(biāo)題顏色
headerButton.setTitleColor(UIColor.lightGrayColor(), forState: .Normal)
//選中的標(biāo)題顏色
headerButton.setTitleColor(UIColor.redColor(), forState: .Selected)
//設(shè)置tag
headerButton.tag = 10 + i
//添加響應(yīng)事件
headerButton.addTarget(self, action:"headerButtonClick:", forControlEvents: .TouchUpInside)
self.view.addSubview(headerButton)
//將創(chuàng)建的按鈕循環(huán)添加到數(shù)組中
self.buttonArray.addObject(headerButton)
}
//選中指示條
lineView = UIView(frame: CGRectMake(0,58,screenW / CGFloat(titleArray.count),2))
lineView.backgroundColor = UIColor.redColor()
self.view.addSubview(lineView)
//scrollView
self.scrollView = UIScrollView(frame: CGRectMake(0,60,screenW,screenH - 60))
//設(shè)置分頁屬性
self.scrollView.pagingEnabled = true
//關(guān)閉scrolView的彈跳效果
self.scrollView.bounces = false
//設(shè)置代理
self.scrollView.delegate = self
self.view.addSubview(self.scrollView)
//設(shè)置contentSize
//contentSize的高度設(shè)置為0若厚,為了避免在滑動(dòng)scrollView出現(xiàn)不定向偏移的bug
self.scrollView.contentSize = CGSizeMake(screenW * CGFloat(titleArray.count), 0)
//如果上面的方式不起作用的話,可以關(guān)閉scrollView的留白
//self.automaticallyAdjustsScrollViewInsets = false
//實(shí)現(xiàn)滾動(dòng)是框架的核心
//實(shí)例化子控制器
let firstVC = FirstViewController()
firstVC.view.backgroundColor = UIColor.redColor()
let secondVC = SecondViewController()
secondVC.view.backgroundColor = UIColor.blueColor()
let thirdVC = ThirdViewController()
thirdVC.view.backgroundColor = UIColor.greenColor()
let vcArray = [firstVC,secondVC,thirdVC]
for i in 0..<vcArray.count {
let vc = vcArray[i]
//設(shè)置vc.view的frame
vc.view.frame = CGRectMake(CGFloat(i) * screenW, 0, screenW, screenH - 60)
//將vc.view添加到scrollView之前需要將子控制器作為當(dāng)前控制器的childViewController添加進(jìn)去
self.addChildViewController(vc)
self.scrollView.addSubview(vc.view)
}
}
創(chuàng)建UI 其中設(shè)計(jì)到button和底下的滑動(dòng)條lineView
1.button就是button大小 顏色 點(diǎn)鐘拦英、中和沒點(diǎn)中時(shí)有什么差別 最后把定制好的button循環(huán)模型加入一個(gè)數(shù)組中 用這個(gè)代碼 //將創(chuàng)建的按鈕循環(huán)添加到數(shù)組中
self.buttonArray.addObject(headerButton)
2.指示條的創(chuàng)建 顏色 位置大小 最后加入到self
3.最后是視圖控制器加入到加入到scrollview中
func createUI() {
//頭部按鈕
let titleArray = ["推薦","娛樂","新聞"]
for i in 0..<titleArray.count {
let headerButton = UIButton(type: .Custom)
//設(shè)置frame
headerButton.frame = CGRectMake(CGFloat(i) * screenW / CGFloat(titleArray.count), 0, screenW / CGFloat(titleArray.count), 60)
//設(shè)置標(biāo)題
headerButton.setTitle(titleArray[i], forState: .Normal)
//設(shè)置未選中的標(biāo)題顏色
headerButton.setTitleColor(UIColor.lightGrayColor(), forState: .Normal)
//選中的標(biāo)題顏色
headerButton.setTitleColor(UIColor.redColor(), forState: .Selected)
//設(shè)置tag
headerButton.tag = 10 + i
//添加響應(yīng)事件
headerButton.addTarget(self, action:"headerButtonClick:", forControlEvents: .TouchUpInside)
self.view.addSubview(headerButton)
//將創(chuàng)建的按鈕循環(huán)添加到數(shù)組中
self.buttonArray.addObject(headerButton)
}
//選中指示條
lineView = UIView(frame: CGRectMake(0,58,screenW / CGFloat(titleArray.count),2))
lineView.backgroundColor = UIColor.redColor()
self.view.addSubview(lineView)
//scrollView
self.scrollView = UIScrollView(frame: CGRectMake(0,60,screenW,screenH - 60))
//設(shè)置分頁屬性
self.scrollView.pagingEnabled = true
//關(guān)閉scrolView的彈跳效果
self.scrollView.bounces = false
//設(shè)置代理
self.scrollView.delegate = self
self.view.addSubview(self.scrollView)
//設(shè)置contentSize
//contentSize的高度設(shè)置為0,為了避免在滑動(dòng)scrollView出現(xiàn)不定向偏移的bug
self.scrollView.contentSize = CGSizeMake(screenW * CGFloat(titleArray.count), 0)
//如果上面的方式不起作用的話,可以關(guān)閉scrollView的留白
//self.automaticallyAdjustsScrollViewInsets = false
//實(shí)現(xiàn)滾動(dòng)是框架的核心
//實(shí)例化子控制器
let firstVC = FirstViewController()
firstVC.view.backgroundColor = UIColor.redColor()
let secondVC = SecondViewController()
secondVC.view.backgroundColor = UIColor.blueColor()
let thirdVC = ThirdViewController()
thirdVC.view.backgroundColor = UIColor.greenColor()
let vcArray = [firstVC,secondVC,thirdVC]
for i in 0..<vcArray.count {
let vc = vcArray[i]
//設(shè)置vc.view的frame
vc.view.frame = CGRectMake(CGFloat(i) * screenW, 0, screenW, screenH - 60)
//將vc.view添加到scrollView之前需要將子控制器作為當(dāng)前控制器的childViewController添加進(jìn)去
self.addChildViewController(vc)
self.scrollView.addSubview(vc.view)
}
}
抽屜式
1.用手往左邊
let leftVC = LeftViewController()
leftVC.view.backgroundColor = UIColor.redColor()
let centerVC = CenterViewController()
let centerNav = UINavigationController(rootViewController: centerVC)
centerVC.view.backgroundColor = UIColor.blueColor()
//實(shí)例化抽屜類
let revealVC = SWRevealViewController(rearViewController: leftVC, frontViewController: centerNav)
//右抽屜
//revealVC.rightViewController =
//設(shè)置打開抽屜的寬度
revealVC.rearViewRevealWidth = 200
self.window?.rootViewController = revealVC
//需要手動(dòng)設(shè)置打開抽屜的方式--注冊(cè)拖動(dòng)效果
centerVC.view.addGestureRecognizer(revealVC.panGestureRecognizer())
2.實(shí)現(xiàn)qq那種效果 顏色可以在第三方庫自己去調(diào)節(jié)
var sideMenu:RESideMenu?
@IBAction func openDrawer(sender: AnyObject) {
if sideMenu == nil {
//添加抽屜中的選項(xiàng)
let item1 = RESideMenuItem(title: "我的收藏", action: { (menu, item) in
print("我的收藏")
//進(jìn)行頁面跳轉(zhuǎn)(push或者present)之前测秸,將menu隱藏掉疤估,否則不能跳轉(zhuǎn)
menu.hide()
})
let item2 = RESideMenuItem(title: "QQ錢包", action: { (menu, item) in
print("QQ錢包")
})
//創(chuàng)建抽屜
sideMenu = RESideMenu(items: [item1,item2])
}
//讓抽屜顯示
sideMenu?.show()
}
3.還有種打開的方式 個(gè)人感覺比較low 不建議使用
//實(shí)例化子控制器
let leftVC = LeftViewController()
leftVC.view.backgroundColor = UIColor.redColor()
let centerVC = CenterViewController()
centerVC.view.backgroundColor = UIColor.blueColor()
//實(shí)例化抽屜類,用于管理leftVC和centerVC
let drawerVC = MMDrawerController(centerViewController: centerVC, leftDrawerViewController: leftVC)
//設(shè)置抽屜打開和關(guān)閉的模式
drawerVC.openDrawerGestureModeMask = MMOpenDrawerGestureMode.All
drawerVC.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.All
//設(shè)置當(dāng)抽屜打開之后的寬度
drawerVC.maximumLeftDrawerWidth = 200
self.window?.rootViewController = drawerVC
上面是手勢(shì)拖動(dòng)改變 下面是button來改變