一 設定網路請求活動指示器(就是每當連網請求資料的時候彈出來的那個小菊花圖示)
宣告hud的屬性
```
var hud:MBProgressHUD!
```
1.設定相應小菊花文字 顏色 背景顏色 等的屬性
2.
```
//網路活動指示器 在實際使用的時候 在所有控制元件之後進行建立 並且新增到self.view上 否則會被覆蓋
self.hud = MBProgressHUD(view: self.view)```
3.開始請求網路資料
```
func dataRequestWithPost(){
//
//在開始請求資料的時候顯示網路活動指示器
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)")
//在資料請求完成之後隱藏活動指示器
self.hud.hide(true)
}) { (dataTask, error) -> Void in
print("請求失敗:\\(error)")
//蘋果稽核規定 不管你的網路請求時成功還是失敗 網路活動指示器不能沒完沒了的轉
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檔名
三 網路請求(相當於前面的getnetdata)
1.網路請求有兩種 get post
2.這裡講的是引入第三方庫來解決這個問題 這裡注意的是parameters那裡是否是nil 就看get那裡是否有引數 如果沒有就nil 有就用dic這種傳參
```
func dataRequestWithGet2() {
//建立請求管理類
let manager = AFHTTPSessionManager()
//攜帶引數,以字典的方式攜帶引數,更符合實際專案中傳參的方式,根據介面文件中的要求來做
//引數中currency和page是後臺要求的欄位,對應的value值就是需要傳入的引數
let dic = ["currency": "rmb","page": "1"]
//get請求一般用於獲取資料,post請求一般用於更改或者新增資料
manager.GET("http://iappfree.candou.com:8080/free/applications/limited", parameters: dic, success: { (dataTask, responseObject) in
print("請求成功:\\(responseObject)")
}) { (dataTask, error) in
print("請求失敗:\\(error)")
}
}
```
以上如果出現錯誤 就用這個試試
```
//"Request failed: unacceptable content-type: text/html"
//content-type在預設情況下是application/json格式的,如果是其他任何格式的話,都需要手動進行設定,表示資料響應的格式
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) {
//將已經選中的按鈕置為不選中,保證每次只選中一個按鈕
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)
}
//關聯scrollView
//self.scrollView.contentOffset = CGPointMake(CGFloat(button.tag - 10) * screenW, 0)
//帶有動畫
self.scrollView.setContentOffset(CGPointMake(CGFloat(button.tag - 10) * screenW, 0), animated: true)
}
```
建立UI 其中設計到button和底下的滑動條lineView
1.button就是button大小 顏色 點鐘、中和沒點中時有什麼差別 最後把定製好的button迴圈模型加入一個陣列中 用這個程式碼 //將建立的按鈕迴圈新增到陣列中
self.buttonArray.addObject(headerButton)
2.指示條的建立 顏色 位置大小 最後加入到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)
//將建立的按鈕迴圈新增到陣列中
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出現不定向偏移的bug
self.scrollView.contentSize = CGSizeMake(screenW * CGFloat(titleArray.count), 0)
//如果上面的方式不起作用的話,可以關閉scrollView的留白
//self.automaticallyAdjustsScrollViewInsets = false
//實現滾動是框架的核心
//例項化子控制器
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.實現qq那種效果 顏色可以在第三方庫自己去調節
```
var sideMenu:RESideMenu?
@IBAction func openDrawer(sender: AnyObject) {
if sideMenu == nil {
//新增抽屜中的選項
let item1 = RESideMenuItem(title: "我的收藏", action: { (menu, item) in
print("我的收藏")
//進行頁面跳轉(push或者present)之前,將menu隱藏掉,否則不能跳轉
menu.hide()
})
let item2 = RESideMenuItem(title: "QQ錢包", action: { (menu, item) in
print("QQ錢包")
})
//建立抽屜
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來改變
```
```