第三方庫的一些知識與應用

weixin_34370347發表於2017-12-14

一  設定網路請求活動指示器(就是每當連網請求資料的時候彈出來的那個小菊花圖示)

宣告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來改變

```





```


   

相關文章