首頁
import UIKit
//YYModel的使用
//1.創(chuàng)建一個數(shù)據(jù)模型揉阎,讓它遵守YYModel協(xié)議
//2.聲明數(shù)據(jù)模型的屬性,屬性必須和對應(yīng)的字典的key保持一致(屬性名必須和字典的key一樣装盯;屬性名必須是字典的key值)
//3.使用YYModel的方法快速將字典轉(zhuǎn)換成模型误窖;將字典數(shù)組轉(zhuǎn)換成模型數(shù)組
class HotShowModel: NSObject,YYModel {
var card_type = ""
var film_id = ""
var genre = ""
var intro = ""
var large_poster_url = ""
var name = ""
var poster_url = ""
var release_time = ""
var score = ""
var score_count = ""
var wanttosee = ""
//打印模型對象所對應(yīng)的值
override var description: String{
return name
}
}
import Kingfisher
class HotShowTableViewCell: UITableViewCell {
//MARK: - 屬性
@IBOutlet weak var coverImageView: UIImageView!
@IBOutlet weak var soreLabel: UILabel!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var scoreCountLabel: UILabel!
//當給模型屬賦值的時候囚戚,通過模型的值給子視圖的屬性賦值
var model:HotShowModel? = nil{
didSet{
//圖片
self.coverImageView.kf_setImageWithURL(NSURL.init(string: model!.poster_url)!, placeholderImage: UIImage.init(named: "movie_default_light_760x570"))
//分數(shù)
self.soreLabel.text = model?.score
//名字
self.nameLabel.text = model?.name
//評分數(shù)量
self.scoreCountLabel.attributedText = ToolManager.mixImageAndText("home_interest", text: " \(model!.score_count)人點評")
class MainPageViewController: BasicViewController {
//MARK: - 屬性
//1.滾動視圖
let scrollView = UIScrollView()
//2.分段選擇器
var segment:YTSegmentControl!
//MARK: - 生命周期
override func viewDidLoad() {
super.viewDidLoad()
self.navigationBarItemSetting()
self.creatUI()
}
}
//MARK: - 界面相關(guān)
extension MainPageViewController{
override func creatUI() {
super.creatUI()
//0.關(guān)閉滾動視圖自動補齊導航條高度的偏移
self.automaticallyAdjustsScrollViewInsets = false
//1.創(chuàng)建滾動視圖
//設(shè)置frame
self.scrollView.frame = CGRectMake(0, 64, Screen_W, Screen_H-64-49)
//設(shè)置內(nèi)容大小
self.scrollView.contentSize = CGSizeMake(Screen_W*2,scrollView.frame.size.height-64-49)
//設(shè)置分頁
self.scrollView.pagingEnabled = true
//設(shè)置代理
self.scrollView.delegate = self
//隱藏滾動條
self.scrollView.showsHorizontalScrollIndicator = false
// self.automaticallyAdjustsScrollViewInsets = false
//顯示在界面上
self.view.addSubview(self.scrollView)
//2.添加熱映界面
let hotC = HotShowViewController()
self.addChildViewController(hotC)
hotC.tableView.frame = CGRectMake(0, 0,self.scrollView.frame.size.width, self.scrollView.frame.size.height)
self.scrollView.addSubview(hotC.tableView)
//3.添加預告界面
let reailerC = TrailerTableViewController()
self.addChildViewController(reailerC)
reailerC.tableView.frame = CGRectMake(self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height)
self.scrollView.addSubview(reailerC.tableView)
}
override func navigationBarItemSetting() {
super.navigationBarItemSetting()
//1.中間的item
//創(chuàng)建分段選擇器對象
self.segment = YTSegmentControl.init(items: ["熱映","預告"])
//設(shè)置frame
self.segment.frame = CGRectMake(0, 0, 100, 44)
//添加到導航條上
self.navigationItem.titleView = self.segment
//設(shè)置正常和選中的文字顏色
self.segment.titleSelectedColor = UIColor.whiteColor()
self.segment.titleColor = UIColor.whiteColor()
//設(shè)置正常狀態(tài)和選中的字體
self.segment.selectedFont = UIFont.boldSystemFontOfSize(15)
self.segment.normalFont = UIFont.systemFontOfSize(12)
//設(shè)置滑塊的顏色
self.segment.sliderColor = UIColor.yellowColor()
//添加事件
self.segment.addTarget(self, action: "segmentAction:")
}
}
//MARK: - scrollView Delegate
extension MainPageViewController:UIScrollViewDelegate{
//停止?jié)L動
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
//切換分段選擇器
if scrollView.contentOffset.x == 0 {
self.segment.selectedSegmentIndex = 0
return
}
self.segment.selectedSegmentIndex = 1
}
}
//MARK: - 按鈕點擊
extension MainPageViewController{
func segmentAction(segment:YTSegmentControl){
if segment.selectedSegmentIndex == 0 {
print("熱映被選中")
self.scrollView.contentOffset = CGPointMake(0, 0)
}else{
print("預告被選中")
self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.width, 0)
}
}
}
import Alamofire
//MARK: - 屬性
class HotShowViewController: UITableViewController{
//1.數(shù)據(jù)源數(shù)組
//NSMutableArray == [AnyObject]
lazy var dataArray:NSMutableArray = {
return NSMutableArray()
}()
}
//MARK: - 生命周期
extension HotShowViewController{
override func viewDidLoad() {
super.viewDidLoad()
self.getNetData(1)
self.creatUI()
self.addRefreshView()
}
}
//MARK: - 添加刷新控件
extension HotShowViewController{
func addRefreshView() {
//1.添加header
self.tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {
self.getNetData(1)
})
//2.添加footer
self.tableView.mj_footer = MJRefreshAutoNormalFooter.init(refreshingBlock: {
self.getNetData(self.dataArray.count/12+1)
})
}
}
//MARK: - 界面相關(guān)
extension HotShowViewController{
func creatUI() {
//1.注冊cell
self.tableView.registerNib(UINib.init(nibName: "HotShowTableViewCell", bundle: nil), forCellReuseIdentifier: "cell")
//2.設(shè)置cell高度
self.tableView.rowHeight = 200
//3.去掉分割線
self.tableView.separatorStyle = .None
}
}
//MARK: - tableView 協(xié)議方法
extension HotShowViewController{
//1.cell個數(shù)
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.dataArray.count
}
//2.創(chuàng)建cell
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//a.創(chuàng)建cell
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! HotShowTableViewCell
//b.刷新數(shù)據(jù)
cell.model = self.dataArray[indexPath.row] as? HotShowModel
//c.返回cell
return cell
}
}
//MARK: - 網(wǎng)絡(luò)請求
extension HotShowViewController{
func getNetData(page:Int){
//開始請求數(shù)據(jù)
KVNProgress.showWithStatus("正在加載")
//注意:page是從1開始
Alamofire.request(.GET, Url_HotShow, parameters: ["count":12,"page":page], encoding: .URL, headers: nil).responseJSON(options: .MutableContainers) { (data) in
if let json = data.result.value{
//提示請求成功
KVNProgress.showSuccessWithStatus("加載成功")
//0.判斷是否是刷新產(chǎn)生的數(shù)據(jù)請求
if self.tableView.mj_header.isRefreshing(){
self.dataArray.removeAllObjects()
}
//1.獲取存放字典的數(shù)組
let dataDict = json.objectForKey("data") as! NSDictionary
let ranklisthotArray = dataDict["ranklist_hot"]
//2.使用YYModel將字典數(shù)組轉(zhuǎn)換成模型數(shù)組
//參數(shù)1:模型類型
//參數(shù)2:需要轉(zhuǎn)換的數(shù)組對象
let modelArray = NSArray.yy_modelArrayWithClass(HotShowModel.self, json: ranklisthotArray)
//3.將數(shù)組存到數(shù)據(jù)源數(shù)組中
self.dataArray.addObjectsFromArray(modelArray)
//讓刷新控件停止刷新
self.tableView.mj_header.endRefreshing()
self.tableView.mj_footer.endRefreshing()
//4.刷新tableView
self.tableView.reloadData()
}else{
KVNProgress.showErrorWithStatus("請求失敗")
}
}//Alamofire結(jié)束
}//函數(shù)結(jié)束
}
search
class SearchViewController: YTViewController{
override func viewDidLoad() {
super.viewDidLoad()
self.navigationBarItemSetting()
}
}
//MARK: - 界面相關(guān)
extension SearchViewController{
override func navigationBarItemSetting() {
super.navigationBarItemSetting()
//1.返回按鈕
let returnItem = UIBarButtonItem.init(image: UIImage.init(named: "common_arrow_back_dark"), style: .Done, target: self, action: "backItemAction")
self.navigationItem.leftBarButtonItem = returnItem
//2.搜索框
//創(chuàng)建搜索框?qū)ο? let searchBar = UISearchBar.init(frame: CGRectMake(0, 0, 200, 40))
//顯示刪除按鈕
searchBar.showsCancelButton = true
//設(shè)置占位文字
searchBar.placeholder = "電影,演員"
//設(shè)置代理
searchBar.delegate = self
//將搜索框添加到導航條上
self.navigationItem.titleView = searchBar
}
}
//MARK: - searchBar Delegate
extension SearchViewController:UISearchBarDelegate{
//2.cancel按鈕被點擊
func searchBarCancelButtonClicked(searchBar: UISearchBar){
searchBar.resignFirstResponder()
}
//1.搜索按鈕被點擊
func searchBarSearchButtonClicked(searchBar: UISearchBar){
//1.開始搜索
//2.收起鍵盤
searchBar.resignFirstResponder()
}
}
//MARK: - 按鈕點擊
extension SearchViewController{
func backItemAction() {
self.navigationController?.popViewControllerAnimated(true)
}
}