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