Commit bda90d811b34ab0d64069983e9cdcedf6b501dcb

Authored by 左丞
1 parent ab380ebb
Exists in newLive

no message

YouerLiveVideo/YouerLiveVideo/Base.lproj/Main.storyboard
@@ -50,11 +50,11 @@ @@ -50,11 +50,11 @@
50 <rect key="frame" x="0.0" y="28" width="375" height="143"/> 50 <rect key="frame" x="0.0" y="28" width="375" height="143"/>
51 <autoresizingMask key="autoresizingMask"/> 51 <autoresizingMask key="autoresizingMask"/>
52 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="tO9-FG-1Ux" id="73f-qf-61d"> 52 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="tO9-FG-1Ux" id="73f-qf-61d">
53 - <rect key="frame" x="0.0" y="0.0" width="375" height="142"/> 53 + <rect key="frame" x="0.0" y="0.0" width="375" height="143"/>
54 <autoresizingMask key="autoresizingMask"/> 54 <autoresizingMask key="autoresizingMask"/>
55 <subviews> 55 <subviews>
56 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="9sK-3H-gLf"> 56 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="9sK-3H-gLf">
57 - <rect key="frame" x="4" y="4" width="367" height="134.5"/> 57 + <rect key="frame" x="4" y="4" width="367" height="135"/>
58 <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="NNX-1c-rMt"> 58 <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="NNX-1c-rMt">
59 <size key="itemSize" width="110" height="136"/> 59 <size key="itemSize" width="110" height="136"/>
60 <size key="headerReferenceSize" width="0.0" height="0.0"/> 60 <size key="headerReferenceSize" width="0.0" height="0.0"/>
@@ -547,40 +547,40 @@ @@ -547,40 +547,40 @@
547 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 547 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
548 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 548 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
549 <subviews> 549 <subviews>
550 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="143" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="IhH-sz-Bd2"> 550 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="178" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="IhH-sz-Bd2">
551 <rect key="frame" x="0.0" y="64" width="375" height="554"/> 551 <rect key="frame" x="0.0" y="64" width="375" height="554"/>
552 <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 552 <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
553 <prototypes> 553 <prototypes>
554 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" rowHeight="143" id="8PR-k0-hwX" customClass="TVStationViewControllerTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target">  
555 - <rect key="frame" x="0.0" y="28" width="375" height="143"/> 554 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" rowHeight="178" id="8PR-k0-hwX" customClass="TVStationViewControllerTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target">
  555 + <rect key="frame" x="0.0" y="28" width="375" height="178"/>
556 <autoresizingMask key="autoresizingMask"/> 556 <autoresizingMask key="autoresizingMask"/>
557 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8PR-k0-hwX" id="Bb0-oI-ccB"> 557 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8PR-k0-hwX" id="Bb0-oI-ccB">
558 - <rect key="frame" x="0.0" y="0.0" width="375" height="142"/> 558 + <rect key="frame" x="0.0" y="0.0" width="375" height="177"/>
559 <autoresizingMask key="autoresizingMask"/> 559 <autoresizingMask key="autoresizingMask"/>
560 <subviews> 560 <subviews>
561 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="m0I-jk-Iru"> 561 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="m0I-jk-Iru">
562 - <rect key="frame" x="4" y="0.0" width="367" height="138"/> 562 + <rect key="frame" x="0.0" y="0.0" width="375" height="177.5"/>
563 <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 563 <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
564 - <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="Mv6-Xf-FOx">  
565 - <size key="itemSize" width="142" height="131"/> 564 + <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="8" minimumInteritemSpacing="8" id="Mv6-Xf-FOx">
  565 + <size key="itemSize" width="176" height="164"/>
566 <size key="headerReferenceSize" width="0.0" height="0.0"/> 566 <size key="headerReferenceSize" width="0.0" height="0.0"/>
567 <size key="footerReferenceSize" width="0.0" height="0.0"/> 567 <size key="footerReferenceSize" width="0.0" height="0.0"/>
568 <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> 568 <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
569 </collectionViewFlowLayout> 569 </collectionViewFlowLayout>
570 <cells> 570 <cells>
571 <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="cell" id="Xjm-Ee-xEo" customClass="TVStationViewControllerCollectionCell" customModule="YouerLiveVideo" customModuleProvider="target"> 571 <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="cell" id="Xjm-Ee-xEo" customClass="TVStationViewControllerCollectionCell" customModule="YouerLiveVideo" customModuleProvider="target">
572 - <rect key="frame" x="0.0" y="4" width="142" height="131"/> 572 + <rect key="frame" x="0.0" y="7" width="176" height="164"/>
573 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 573 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
574 <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> 574 <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
575 - <rect key="frame" x="0.0" y="0.0" width="142" height="131"/> 575 + <rect key="frame" x="0.0" y="0.0" width="176" height="164"/>
576 <autoresizingMask key="autoresizingMask"/> 576 <autoresizingMask key="autoresizingMask"/>
577 <subviews> 577 <subviews>
578 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="749" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="BvO-kc-ckg"> 578 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="749" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="BvO-kc-ckg">
579 - <rect key="frame" x="0.0" y="0.0" width="142" height="94"/> 579 + <rect key="frame" x="0.0" y="0.0" width="176" height="130"/>
580 </imageView> 580 </imageView>
581 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZGv-kv-0Rn"> 581 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZGv-kv-0Rn">
582 - <rect key="frame" x="50" y="102" width="42" height="21"/>  
583 - <fontDescription key="fontDescription" type="system" pointSize="17"/> 582 + <rect key="frame" x="69.5" y="138" width="37.5" height="18"/>
  583 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
584 <nil key="textColor"/> 584 <nil key="textColor"/>
585 <nil key="highlightedColor"/> 585 <nil key="highlightedColor"/>
586 </label> 586 </label>
@@ -609,11 +609,14 @@ @@ -609,11 +609,14 @@
609 </subviews> 609 </subviews>
610 <constraints> 610 <constraints>
611 <constraint firstItem="m0I-jk-Iru" firstAttribute="top" secondItem="Bb0-oI-ccB" secondAttribute="top" id="1Jb-Lc-HqD"/> 611 <constraint firstItem="m0I-jk-Iru" firstAttribute="top" secondItem="Bb0-oI-ccB" secondAttribute="top" id="1Jb-Lc-HqD"/>
612 - <constraint firstAttribute="bottom" secondItem="m0I-jk-Iru" secondAttribute="bottom" constant="4" id="ANa-WV-bP7"/>  
613 - <constraint firstAttribute="trailing" secondItem="m0I-jk-Iru" secondAttribute="trailing" constant="4" id="Nmx-qu-r17"/>  
614 - <constraint firstItem="m0I-jk-Iru" firstAttribute="leading" secondItem="Bb0-oI-ccB" secondAttribute="leading" constant="4" id="aMz-0M-R7W"/> 612 + <constraint firstAttribute="bottom" secondItem="m0I-jk-Iru" secondAttribute="bottom" id="ANa-WV-bP7"/>
  613 + <constraint firstAttribute="trailing" secondItem="m0I-jk-Iru" secondAttribute="trailing" id="Nmx-qu-r17"/>
  614 + <constraint firstItem="m0I-jk-Iru" firstAttribute="leading" secondItem="Bb0-oI-ccB" secondAttribute="leading" id="aMz-0M-R7W"/>
615 </constraints> 615 </constraints>
616 </tableViewCellContentView> 616 </tableViewCellContentView>
  617 + <connections>
  618 + <outlet property="collectionView" destination="m0I-jk-Iru" id="UUs-Z9-Hac"/>
  619 + </connections>
617 </tableViewCell> 620 </tableViewCell>
618 </prototypes> 621 </prototypes>
619 <connections> 622 <connections>
@@ -626,16 +629,19 @@ @@ -626,16 +629,19 @@
626 <constraints> 629 <constraints>
627 <constraint firstAttribute="trailing" secondItem="IhH-sz-Bd2" secondAttribute="trailing" id="KVp-Qt-6LS"/> 630 <constraint firstAttribute="trailing" secondItem="IhH-sz-Bd2" secondAttribute="trailing" id="KVp-Qt-6LS"/>
628 <constraint firstItem="IhH-sz-Bd2" firstAttribute="top" secondItem="fIM-JF-YUx" secondAttribute="bottom" id="N08-aD-PC9"/> 631 <constraint firstItem="IhH-sz-Bd2" firstAttribute="top" secondItem="fIM-JF-YUx" secondAttribute="bottom" id="N08-aD-PC9"/>
  632 + <constraint firstItem="k5T-vX-htB" firstAttribute="top" secondItem="IhH-sz-Bd2" secondAttribute="bottom" id="Ooi-6e-ZhV"/>
629 <constraint firstItem="IhH-sz-Bd2" firstAttribute="leading" secondItem="KHY-Ri-Rc3" secondAttribute="leading" id="brw-xU-W7N"/> 633 <constraint firstItem="IhH-sz-Bd2" firstAttribute="leading" secondItem="KHY-Ri-Rc3" secondAttribute="leading" id="brw-xU-W7N"/>
630 - <constraint firstItem="k5T-vX-htB" firstAttribute="top" secondItem="IhH-sz-Bd2" secondAttribute="bottom" id="eYV-eZ-X6d"/>  
631 </constraints> 634 </constraints>
632 </view> 635 </view>
633 <tabBarItem key="tabBarItem" tag="3" title="电视台" id="s3g-mh-Xtl"/> 636 <tabBarItem key="tabBarItem" tag="3" title="电视台" id="s3g-mh-Xtl"/>
634 <navigationItem key="navigationItem" id="4l0-y8-1gT"/> 637 <navigationItem key="navigationItem" id="4l0-y8-1gT"/>
  638 + <connections>
  639 + <outlet property="tableView" destination="IhH-sz-Bd2" id="ut2-uV-tkE"/>
  640 + </connections>
635 </viewController> 641 </viewController>
636 <placeholder placeholderIdentifier="IBFirstResponder" id="CMh-ol-5GE" userLabel="First Responder" sceneMemberID="firstResponder"/> 642 <placeholder placeholderIdentifier="IBFirstResponder" id="CMh-ol-5GE" userLabel="First Responder" sceneMemberID="firstResponder"/>
637 </objects> 643 </objects>
638 - <point key="canvasLocation" x="430" y="2113"/> 644 + <point key="canvasLocation" x="429.60000000000002" y="2112.5937031484259"/>
639 </scene> 645 </scene>
640 </scenes> 646 </scenes>
641 <resources> 647 <resources>
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/MoreTVStationViewController.swift
@@ -9,13 +9,89 @@ @@ -9,13 +9,89 @@
9 import UIKit 9 import UIKit
10 10
11 class MoreTVStationViewController: UIViewController { 11 class MoreTVStationViewController: UIViewController {
12 - 12 +
  13 + @IBOutlet weak var collectionView: UICollectionView!
  14 +
  15 + var topTenTVStation:[TVStationInfor] = []
  16 + var xxcellentSchool:[TVStationInfor] = []
  17 + var excellentTVStationProgram:[TVStationSubject] = []
  18 + var type:Int = 0 //0:十佳电视台,1:优秀电视台,2:优秀校园节目
  19 + var pageIndex:Int = 2
13 override func viewDidLoad() { 20 override func viewDidLoad() {
14 super.viewDidLoad() 21 super.viewDidLoad()
15 22
  23 + if type != 0{
  24 + addCellAndRefresh()
  25 + }
16 // Do any additional setup after loading the view. 26 // Do any additional setup after loading the view.
17 } 27 }
18 28
  29 + func addCellAndRefresh(){
  30 + collectionView.mj_header=MJRefreshNormalHeader(refreshingTarget: self, refreshingAction: #selector(MoreTVStationViewController.loadNewData))
  31 +
  32 + collectionView.mj_footer=MJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction: #selector(MoreTVStationViewController.loadMoreData))
  33 + }
  34 +
  35 + // MARK: - 下拉刷新
  36 + func loadNewData(){
  37 + pageIndex=1
  38 + getTVStation() { (finish) in
  39 + self.collectionView.mj_header.endRefreshing()
  40 + }
  41 + }
  42 + // MARK: - 上拉加载更多
  43 + func loadMoreData(){
  44 + getTVStation() { (finish) in
  45 + self.collectionView.mj_footer.endRefreshing()
  46 + }
  47 + }
  48 +
  49 + func getTVStation(finish: @escaping (Bool)->()){
  50 + if type == 1{
  51 + AppDelegate.instance().httpServer.postExcellentSchool(parameters: ["pageIndex":pageIndex as AnyObject,"pageSize":8 as AnyObject]) { (str, error) in
  52 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  53 + if json.contentData().dictionaryValue["resultData"] != nil{
  54 + if self.pageIndex==1{
  55 + self.xxcellentSchool.removeAll()
  56 + }
  57 + for item in json.contentData().dictionaryValue["resultData"]!.arrayValue{
  58 + self.xxcellentSchool.append(TVStationInfor(json: item))
  59 + }
  60 + if json.contentData().dictionaryValue["resultData"]!.arrayValue.count > 0{
  61 + self.pageIndex=self.pageIndex+1
  62 + }
  63 + finish(true)
  64 + self.collectionView.reloadData()
  65 + }
  66 + }, failHandler: { (error) in
  67 + finish(false)
  68 +
  69 + })
  70 + }
  71 + }else if type == 2{
  72 + AppDelegate.instance().httpServer.postExcellentProgram(parameters: ["pageIndex":pageIndex as AnyObject,"pageSize":8 as AnyObject]) { (str, error) in
  73 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  74 + if json.contentData().dictionaryValue["resultData"] != nil{
  75 + if self.pageIndex==1{
  76 + self.excellentTVStationProgram.removeAll()
  77 + }
  78 + for item in json.contentData().dictionaryValue["resultData"]!.arrayValue{
  79 + self.excellentTVStationProgram.append(TVStationSubject(json: item))
  80 + }
  81 + if json.contentData().dictionaryValue["resultData"]!.arrayValue.count > 0{
  82 + self.pageIndex=self.pageIndex+1
  83 + }
  84 + finish(true)
  85 + self.collectionView.reloadData()
  86 + }
  87 + }, failHandler: { (error) in
  88 + finish(false)
  89 + })
  90 + }
  91 + }
  92 + }
  93 +
  94 +
19 override func didReceiveMemoryWarning() { 95 override func didReceiveMemoryWarning() {
20 super.didReceiveMemoryWarning() 96 super.didReceiveMemoryWarning()
21 // Dispose of any resources that can be recreated. 97 // Dispose of any resources that can be recreated.
@@ -37,15 +113,39 @@ class MoreTVStationViewController: UIViewController { @@ -37,15 +113,39 @@ class MoreTVStationViewController: UIViewController {
37 extension MoreTVStationViewController:UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource{ 113 extension MoreTVStationViewController:UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource{
38 114
39 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 115 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
40 - 116 + if type == 2{
  117 + let vc = Story.instantiateViewControllerWithIdentifier("TVStationInforViewControllerVC", storyName: "TVStation") as! TVStationInforViewController
  118 + vc.excellentTVStationProgram = excellentTVStationProgram[indexPath.row]
  119 + self.navigationController?.pushViewController(vc, animated: true)
  120 + }
  121 +
41 } 122 }
42 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 123 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
43 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MoreTVStationViewCollectionCell 124 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MoreTVStationViewCollectionCell
  125 + if type == 0{
  126 + cell.tvPicture.sd_setImage(with: URL(string: topTenTVStation[indexPath.row].f_Logo), placeholderImage: UIImage(named:"icon"))
  127 + cell.tvStationName.text = topTenTVStation[indexPath.row].f_SchoolName
  128 + }else if type == 1{
  129 + cell.tvPicture.sd_setImage(with: URL(string: xxcellentSchool[indexPath.row].f_Logo), placeholderImage: UIImage(named:"icon"))
  130 + cell.tvStationName.text = xxcellentSchool[indexPath.row].f_SchoolName
  131 + }else if type == 2{
  132 + cell.tvPicture.sd_setImage(with: URL(string: excellentTVStationProgram[indexPath.row].f_Img), placeholderImage: UIImage(named:"icon"))
  133 + cell.tvStationName.text = excellentTVStationProgram[indexPath.row].f_Title
  134 + }
44 return cell 135 return cell
45 } 136 }
46 137
47 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 138 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
48 - return 5 139 + switch type {
  140 + case 0:
  141 + return topTenTVStation.count
  142 + case 1:
  143 + return xxcellentSchool.count
  144 + case 2:
  145 + return excellentTVStationProgram.count
  146 + default:
  147 + return 0
  148 + }
49 } 149 }
50 150
51 } 151 }
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/TVStation.storyboard
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12120" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> 2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
3 <device id="retina4_7" orientation="portrait"> 3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/> 4 <adaptation id="fullscreen"/>
5 </device> 5 </device>
6 <dependencies> 6 <dependencies>
7 - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/> 7 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
8 <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> 8 <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 </dependencies> 10 </dependencies>
@@ -21,10 +21,9 @@ @@ -21,10 +21,9 @@
21 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 21 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
22 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 22 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
23 <subviews> 23 <subviews>
24 - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="T5M-Yy-22h"> 24 + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="T5M-Yy-22h">
25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
26 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
27 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 26 + <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
28 <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="8" minimumInteritemSpacing="8" id="EWj-Hf-n52"> 27 <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="8" minimumInteritemSpacing="8" id="EWj-Hf-n52">
29 <size key="itemSize" width="180" height="182"/> 28 <size key="itemSize" width="180" height="182"/>
30 <size key="headerReferenceSize" width="0.0" height="0.0"/> 29 <size key="headerReferenceSize" width="0.0" height="0.0"/>
@@ -40,11 +39,11 @@ @@ -40,11 +39,11 @@
40 <autoresizingMask key="autoresizingMask"/> 39 <autoresizingMask key="autoresizingMask"/>
41 <subviews> 40 <subviews>
42 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="x1d-Bc-juB"> 41 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="x1d-Bc-juB">
43 - <rect key="frame" x="0.0" y="0.0" width="180" height="145"/> 42 + <rect key="frame" x="0.0" y="0.0" width="180" height="148"/>
44 </imageView> 43 </imageView>
45 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8hi-XF-Vgx"> 44 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8hi-XF-Vgx">
46 - <rect key="frame" x="69" y="153" width="42" height="21"/>  
47 - <fontDescription key="fontDescription" type="system" pointSize="17"/> 45 + <rect key="frame" x="71.5" y="156" width="37.5" height="18"/>
  46 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
48 <nil key="textColor"/> 47 <nil key="textColor"/>
49 <nil key="highlightedColor"/> 48 <nil key="highlightedColor"/>
50 </label> 49 </label>
@@ -71,7 +70,16 @@ @@ -71,7 +70,16 @@
71 </collectionView> 70 </collectionView>
72 </subviews> 71 </subviews>
73 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 72 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  73 + <constraints>
  74 + <constraint firstItem="6DV-QE-ehs" firstAttribute="top" secondItem="T5M-Yy-22h" secondAttribute="bottom" id="7yG-A7-fjD"/>
  75 + <constraint firstItem="T5M-Yy-22h" firstAttribute="leading" secondItem="aBm-lU-NjM" secondAttribute="leading" id="RSk-Xn-5MG"/>
  76 + <constraint firstAttribute="trailing" secondItem="T5M-Yy-22h" secondAttribute="trailing" id="SAg-4R-dPR"/>
  77 + <constraint firstItem="T5M-Yy-22h" firstAttribute="top" secondItem="aBm-lU-NjM" secondAttribute="top" id="hpe-dB-RYs"/>
  78 + </constraints>
74 </view> 79 </view>
  80 + <connections>
  81 + <outlet property="collectionView" destination="T5M-Yy-22h" id="ZjI-XZ-T6D"/>
  82 + </connections>
75 </viewController> 83 </viewController>
76 <placeholder placeholderIdentifier="IBFirstResponder" id="e4N-p3-2Gw" userLabel="First Responder" sceneMemberID="firstResponder"/> 84 <placeholder placeholderIdentifier="IBFirstResponder" id="e4N-p3-2Gw" userLabel="First Responder" sceneMemberID="firstResponder"/>
77 </objects> 85 </objects>
@@ -282,7 +290,7 @@ @@ -282,7 +290,7 @@
282 <rect key="frame" x="0.0" y="28" width="375" height="123"/> 290 <rect key="frame" x="0.0" y="28" width="375" height="123"/>
283 <autoresizingMask key="autoresizingMask"/> 291 <autoresizingMask key="autoresizingMask"/>
284 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MMn-tR-I0v" id="H7d-Zz-WAS"> 292 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MMn-tR-I0v" id="H7d-Zz-WAS">
285 - <rect key="frame" x="0.0" y="0.0" width="375" height="123"/> 293 + <rect key="frame" x="0.0" y="0.0" width="375" height="122"/>
286 <autoresizingMask key="autoresizingMask"/> 294 <autoresizingMask key="autoresizingMask"/>
287 <subviews> 295 <subviews>
288 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9Yk-8z-nas"> 296 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9Yk-8z-nas">
@@ -389,6 +397,15 @@ @@ -389,6 +397,15 @@
389 <state key="normal" title=" 进入电视台 "> 397 <state key="normal" title=" 进入电视台 ">
390 <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 398 <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
391 </state> 399 </state>
  400 + <userDefinedRuntimeAttributes>
  401 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  402 + <integer key="value" value="5"/>
  403 + </userDefinedRuntimeAttribute>
  404 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  405 + </userDefinedRuntimeAttributes>
  406 + <connections>
  407 + <action selector="enterTVStationBtnClick:" destination="Cfe-bh-dEi" eventType="touchUpInside" id="rtA-lS-pCe"/>
  408 + </connections>
392 </button> 409 </button>
393 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="信息" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WpW-S4-jZJ"> 410 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="信息" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WpW-S4-jZJ">
394 <rect key="frame" x="16" y="340" width="35" height="21"/> 411 <rect key="frame" x="16" y="340" width="35" height="21"/>
@@ -415,6 +432,12 @@ @@ -415,6 +432,12 @@
415 <constraint firstAttribute="bottom" secondItem="Nwx-qi-TmG" secondAttribute="bottom" id="t7e-OT-6Bq"/> 432 <constraint firstAttribute="bottom" secondItem="Nwx-qi-TmG" secondAttribute="bottom" id="t7e-OT-6Bq"/>
416 </constraints> 433 </constraints>
417 </view> 434 </view>
  435 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="04n-fF-iSZ">
  436 + <rect key="frame" x="93" y="303" width="42" height="21"/>
  437 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  438 + <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
  439 + <nil key="highlightedColor"/>
  440 + </label>
418 </subviews> 441 </subviews>
419 <color key="backgroundColor" red="0.93503493070602417" green="0.93562394380569458" blue="0.96585971117019653" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 442 <color key="backgroundColor" red="0.93503493070602417" green="0.93562394380569458" blue="0.96585971117019653" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
420 <constraints> 443 <constraints>
@@ -427,14 +450,22 @@ @@ -427,14 +450,22 @@
427 <constraint firstAttribute="trailing" secondItem="YGJ-f7-llj" secondAttribute="trailing" constant="16" id="PeL-3c-MS9"/> 450 <constraint firstAttribute="trailing" secondItem="YGJ-f7-llj" secondAttribute="trailing" constant="16" id="PeL-3c-MS9"/>
428 <constraint firstItem="tOg-Dx-FMX" firstAttribute="top" secondItem="xXj-8O-v1p" secondAttribute="bottom" constant="16" id="UDD-gx-z8G"/> 451 <constraint firstItem="tOg-Dx-FMX" firstAttribute="top" secondItem="xXj-8O-v1p" secondAttribute="bottom" constant="16" id="UDD-gx-z8G"/>
429 <constraint firstItem="WpW-S4-jZJ" firstAttribute="top" secondItem="tOg-Dx-FMX" secondAttribute="bottom" constant="16" id="XfY-Hk-spU"/> 452 <constraint firstItem="WpW-S4-jZJ" firstAttribute="top" secondItem="tOg-Dx-FMX" secondAttribute="bottom" constant="16" id="XfY-Hk-spU"/>
  453 + <constraint firstItem="04n-fF-iSZ" firstAttribute="leading" secondItem="tOg-Dx-FMX" secondAttribute="trailing" constant="8" id="aSb-Em-tQr"/>
430 <constraint firstAttribute="trailing" secondItem="mAy-et-NIv" secondAttribute="trailing" constant="16" id="c3g-Bc-9IR"/> 454 <constraint firstAttribute="trailing" secondItem="mAy-et-NIv" secondAttribute="trailing" constant="16" id="c3g-Bc-9IR"/>
431 <constraint firstItem="d7u-YA-nhi" firstAttribute="leading" secondItem="mu2-dt-yBu" secondAttribute="leading" id="dYc-wA-Jgf"/> 455 <constraint firstItem="d7u-YA-nhi" firstAttribute="leading" secondItem="mu2-dt-yBu" secondAttribute="leading" id="dYc-wA-Jgf"/>
  456 + <constraint firstItem="04n-fF-iSZ" firstAttribute="top" secondItem="tOg-Dx-FMX" secondAttribute="top" id="jrU-bz-1oD"/>
432 <constraint firstItem="WpW-S4-jZJ" firstAttribute="leading" secondItem="mu2-dt-yBu" secondAttribute="leading" constant="16" id="k1f-og-KKF"/> 457 <constraint firstItem="WpW-S4-jZJ" firstAttribute="leading" secondItem="mu2-dt-yBu" secondAttribute="leading" constant="16" id="k1f-og-KKF"/>
433 <constraint firstItem="mAy-et-NIv" firstAttribute="leading" secondItem="mu2-dt-yBu" secondAttribute="leading" constant="16" id="lcJ-n0-G71"/> 458 <constraint firstItem="mAy-et-NIv" firstAttribute="leading" secondItem="mu2-dt-yBu" secondAttribute="leading" constant="16" id="lcJ-n0-G71"/>
434 <constraint firstItem="mAy-et-NIv" firstAttribute="top" secondItem="LAX-SQ-uDA" secondAttribute="bottom" constant="16" id="lcX-72-Hm3"/> 459 <constraint firstItem="mAy-et-NIv" firstAttribute="top" secondItem="LAX-SQ-uDA" secondAttribute="bottom" constant="16" id="lcX-72-Hm3"/>
435 <constraint firstItem="WsK-MC-j0I" firstAttribute="top" secondItem="d7u-YA-nhi" secondAttribute="bottom" id="rQT-Z8-VEq"/> 460 <constraint firstItem="WsK-MC-j0I" firstAttribute="top" secondItem="d7u-YA-nhi" secondAttribute="bottom" id="rQT-Z8-VEq"/>
436 </constraints> 461 </constraints>
437 </view> 462 </view>
  463 + <connections>
  464 + <outlet property="creatTime" destination="04n-fF-iSZ" id="5Va-ls-AXn"/>
  465 + <outlet property="discreption" destination="Nwx-qi-TmG" id="1Zu-U4-60L"/>
  466 + <outlet property="tvImage" destination="mAy-et-NIv" id="cH8-85-Nba"/>
  467 + <outlet property="tvName" destination="xXj-8O-v1p" id="wMk-Wh-Udh"/>
  468 + </connections>
438 </viewController> 469 </viewController>
439 <placeholder placeholderIdentifier="IBFirstResponder" id="LfW-OZ-7Wz" userLabel="First Responder" sceneMemberID="firstResponder"/> 470 <placeholder placeholderIdentifier="IBFirstResponder" id="LfW-OZ-7Wz" userLabel="First Responder" sceneMemberID="firstResponder"/>
440 </objects> 471 </objects>
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/TVStationInforViewController.swift
@@ -9,9 +9,19 @@ @@ -9,9 +9,19 @@
9 import UIKit 9 import UIKit
10 10
11 class TVStationInforViewController: UIViewController { 11 class TVStationInforViewController: UIViewController {
12 - 12 + var excellentTVStationProgram:TVStationSubject!
  13 +
  14 + @IBOutlet weak var tvImage: UIImageView!
  15 + @IBOutlet weak var creatTime: UILabel!
  16 + @IBOutlet weak var tvName: UILabel!
  17 + @IBOutlet weak var discreption: UITextView!
13 override func viewDidLoad() { 18 override func viewDidLoad() {
14 super.viewDidLoad() 19 super.viewDidLoad()
  20 + tvImage.sd_setImage(with: URL(string: excellentTVStationProgram.f_Img), placeholderImage: UIImage(named:"icon"))
  21 + tvName.text = excellentTVStationProgram.f_Title
  22 + creatTime.text = setDateToString(date:dateFromISO8601(dateString: excellentTVStationProgram.f_CreatorTime))
  23 + discreption.text = excellentTVStationProgram.f_Detail
  24 +
15 // Do any additional setup after loading the view. 25 // Do any additional setup after loading the view.
16 } 26 }
17 27
@@ -20,6 +30,9 @@ class TVStationInforViewController: UIViewController { @@ -20,6 +30,9 @@ class TVStationInforViewController: UIViewController {
20 // Dispose of any resources that can be recreated. 30 // Dispose of any resources that can be recreated.
21 } 31 }
22 32
  33 + @IBAction func enterTVStationBtnClick(_ sender: Any) {
  34 +
  35 + }
23 /* 36 /*
24 // MARK: - Navigation 37 // MARK: - Navigation
25 38
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/TVStationViewController.swift
@@ -10,7 +10,11 @@ import UIKit @@ -10,7 +10,11 @@ import UIKit
10 10
11 class TVStationViewController: UIViewController { 11 class TVStationViewController: UIViewController {
12 var dataSet:[AnyObject] = [] 12 var dataSet:[AnyObject] = []
13 - 13 + var topTenTVStation:[TVStationInfor] = []
  14 + var xxcellentSchool:[TVStationInfor] = []
  15 + var excellentTVStationProgram:[TVStationSubject] = []
  16 + @IBOutlet weak var tableView: UITableView!
  17 + var TVStationType:[String] = ["十佳电视台","优秀电视台","优秀校园节目"]
14 override func viewDidLoad() { 18 override func viewDidLoad() {
15 super.viewDidLoad() 19 super.viewDidLoad()
16 self.configTheme() 20 self.configTheme()
@@ -24,7 +28,41 @@ class TVStationViewController: UIViewController { @@ -24,7 +28,41 @@ class TVStationViewController: UIViewController {
24 } 28 }
25 29
26 func getDataList(){ 30 func getDataList(){
27 - 31 + AppDelegate.instance().httpServer.getTopTenSchool(parameters: nil) { (str, error) in
  32 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  33 + for item in json.contentData().arrayValue{
  34 + self.topTenTVStation.append(TVStationInfor(json: item))
  35 + }
  36 + (self.tableView.cellForRow(at: IndexPath(item: 0, section: 0)) as? TVStationViewControllerTableViewCell)?.collectionView.reloadData()
  37 + }, failHandler: { (error) in
  38 +
  39 + })
  40 + }
  41 + AppDelegate.instance().httpServer.postExcellentSchool(parameters: ["pageIndex":1 as AnyObject,"pageSize":8 as AnyObject]) { (str, error) in
  42 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  43 + if json.contentData().dictionaryValue["resultData"] != nil{
  44 + for item in json.contentData().dictionaryValue["resultData"]!.arrayValue{
  45 + self.xxcellentSchool.append(TVStationInfor(json: item))
  46 + }
  47 + (self.tableView.cellForRow(at: IndexPath(item: 0, section: 1)) as? TVStationViewControllerTableViewCell)?.collectionView.reloadData()
  48 + }
  49 + }, failHandler: { (error) in
  50 +
  51 + })
  52 + }
  53 + AppDelegate.instance().httpServer.postExcellentProgram(parameters: ["pageIndex":1 as AnyObject,"pageSize":8 as AnyObject]) { (str, error) in
  54 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  55 + if json.contentData().dictionaryValue["resultData"] != nil{
  56 + for item in json.contentData().dictionaryValue["resultData"]!.arrayValue{
  57 + self.excellentTVStationProgram.append(TVStationSubject(json: item))
  58 + }
  59 + (self.tableView.cellForRow(at: IndexPath(item: 0, section: 2)) as? TVStationViewControllerTableViewCell)?.collectionView.reloadData()
  60 + }
  61 + }, failHandler: { (error) in
  62 +
  63 + })
  64 + }
  65 +
28 } 66 }
29 67
30 override func didReceiveMemoryWarning() { 68 override func didReceiveMemoryWarning() {
@@ -34,6 +72,18 @@ class TVStationViewController: UIViewController { @@ -34,6 +72,18 @@ class TVStationViewController: UIViewController {
34 72
35 func moreBtnClick(sender:UIButton){ 73 func moreBtnClick(sender:UIButton){
36 let vc = Story.instantiateViewControllerWithIdentifier("MoreTVStationViewControllerVC", storyName: "TVStation") as! MoreTVStationViewController 74 let vc = Story.instantiateViewControllerWithIdentifier("MoreTVStationViewControllerVC", storyName: "TVStation") as! MoreTVStationViewController
  75 + switch sender.tag {
  76 + case 0:
  77 + vc.topTenTVStation = topTenTVStation
  78 + case 1:
  79 + vc.xxcellentSchool = xxcellentSchool
  80 + case 2:
  81 + vc.excellentTVStationProgram = excellentTVStationProgram
  82 + default:
  83 + break
  84 + }
  85 + vc.type = sender.tag
  86 + vc.title = TVStationType[sender.tag]
37 self.navigationController?.pushViewController(vc, animated: true) 87 self.navigationController?.pushViewController(vc, animated: true)
38 } 88 }
39 /* 89 /*
@@ -54,15 +104,16 @@ extension TVStationViewController:UITableViewDelegate,UITableViewDataSource{ @@ -54,15 +104,16 @@ extension TVStationViewController:UITableViewDelegate,UITableViewDataSource{
54 } 104 }
55 105
56 func numberOfSections(in tableView: UITableView) -> Int { 106 func numberOfSections(in tableView: UITableView) -> Int {
57 - return 10 107 + return TVStationType.count
58 } 108 }
59 109
60 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 110 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
61 let view = UIView(frame: CGRect(x: 0, y: 0, width: getScreenWidth(), height: 44)) 111 let view = UIView(frame: CGRect(x: 0, y: 0, width: getScreenWidth(), height: 44))
  112 + view.backgroundColor = tableView.backgroundColor
62 let imageView = UIImageView(frame: CGRect(x: 8, y: 8, width: 28, height: 28)) 113 let imageView = UIImageView(frame: CGRect(x: 8, y: 8, width: 28, height: 28))
63 imageView.image = UIImage(named: "icon") 114 imageView.image = UIImage(named: "icon")
64 let label = UILabel(frame: CGRect(x: imageView.frame.maxX+8, y: 11, width: 100, height: 21)) 115 let label = UILabel(frame: CGRect(x: imageView.frame.maxX+8, y: 11, width: 100, height: 21))
65 - label.text = "世家电视台" 116 + label.text = TVStationType[section]
66 label.textAlignment = .left 117 label.textAlignment = .left
67 label.sizeToFit() 118 label.sizeToFit()
68 let btn = UIButton(frame: CGRect(x: getScreenWidth() - 8 - 30, y: 7, width: 30, height: 30)) 119 let btn = UIButton(frame: CGRect(x: getScreenWidth() - 8 - 30, y: 7, width: 30, height: 30))
@@ -85,6 +136,7 @@ extension TVStationViewController:UITableViewDelegate,UITableViewDataSource{ @@ -85,6 +136,7 @@ extension TVStationViewController:UITableViewDelegate,UITableViewDataSource{
85 136
86 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 137 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
87 let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TVStationViewControllerTableViewCell 138 let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TVStationViewControllerTableViewCell
  139 + cell.collectionView.tag = indexPath.section+1
88 return cell 140 return cell
89 } 141 }
90 } 142 }
@@ -92,28 +144,160 @@ extension TVStationViewController:UITableViewDelegate,UITableViewDataSource{ @@ -92,28 +144,160 @@ extension TVStationViewController:UITableViewDelegate,UITableViewDataSource{
92 extension TVStationViewController:UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource{ 144 extension TVStationViewController:UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource{
93 145
94 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 146 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
95 - let vc = Story.instantiateViewControllerWithIdentifier("TVStationInforViewControllerVC", storyName: "TVStation") as! TVStationInforViewController  
96 - self.navigationController?.pushViewController(vc, animated: true) 147 + if collectionView.tag == 3{
  148 + let vc = Story.instantiateViewControllerWithIdentifier("TVStationInforViewControllerVC", storyName: "TVStation") as! TVStationInforViewController
  149 + vc.excellentTVStationProgram = excellentTVStationProgram[indexPath.row]
  150 + self.navigationController?.pushViewController(vc, animated: true)
  151 + }
97 } 152 }
98 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 153 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
99 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! TVStationViewControllerCollectionCell 154 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! TVStationViewControllerCollectionCell
  155 + if collectionView.tag == 1{
  156 + cell.image.sd_setImage(with: URL(string: topTenTVStation[indexPath.row].f_Logo), placeholderImage: UIImage(named:"icon"))
  157 + cell.tvStationName.text = topTenTVStation[indexPath.row].f_SchoolName
  158 + }else if collectionView.tag == 2{
  159 + cell.image.sd_setImage(with: URL(string: xxcellentSchool[indexPath.row].f_Logo), placeholderImage: UIImage(named:"icon"))
  160 + cell.tvStationName.text = xxcellentSchool[indexPath.row].f_SchoolName
  161 + }else if collectionView.tag == 3{
  162 + cell.image.sd_setImage(with: URL(string: excellentTVStationProgram[indexPath.row].f_Img), placeholderImage: UIImage(named:"icon"))
  163 + cell.tvStationName.text = excellentTVStationProgram[indexPath.row].f_Title
  164 + }
100 return cell 165 return cell
101 } 166 }
102 167
103 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 168 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
104 - return 5 169 + switch collectionView.tag {
  170 + case 1:
  171 + return topTenTVStation.count
  172 + case 2:
  173 + return xxcellentSchool.count
  174 + case 3:
  175 + return excellentTVStationProgram.count
  176 + default:
  177 + return 0
  178 + }
105 } 179 }
106 180
107 } 181 }
108 182
109 class TVStationViewControllerTableViewCell:UITableViewCell{ 183 class TVStationViewControllerTableViewCell:UITableViewCell{
110 184
  185 + @IBOutlet weak var collectionView: UICollectionView!
111 } 186 }
112 187
113 188
114 class TVStationViewControllerCollectionCell:UICollectionViewCell{ 189 class TVStationViewControllerCollectionCell:UICollectionViewCell{
115 - 190 + var index:Int!
116 @IBOutlet weak var image: UIImageView! 191 @IBOutlet weak var image: UIImageView!
117 @IBOutlet weak var tvStationName: UILabel! 192 @IBOutlet weak var tvStationName: UILabel!
118 193
119 } 194 }
  195 +
  196 +class TVStationInfor {
  197 + var f_Id:String! //标识字段,Guid标识 ,
  198 + var f_DeleteMark:Bool = false //删除标识,1-已删除 ,
  199 + var f_CreatorTime:String!//创建时间 ,
  200 + var f_CreatorUserId:String!//创建人员ID ,
  201 + var f_LastModifyTime:String! //最近一次编辑时间 ,
  202 + var f_LastModifyUserId:String! //最近一次编辑人员 ,
  203 + var f_DeleteTime:String! //删除时间 ,
  204 + var f_DeleteUserId:String! //删除人员 ,
  205 + var f_SchoolName:String! //学校名称 ,
  206 + var f_SchoolTypeId:String!// 学校类型 ,
  207 + var f_Logo:String! //校徽 ,
  208 + var f_IsTopTen:Bool = false //是否十佳校园电视台 ,
  209 + var f_IsExcellent:Bool = false //是否优秀校园电视台 ,
  210 + var f_Url:String!// 机构地址
  211 +
  212 + init(json:JSON){
  213 + f_Id = json["f_Id"].stringValue
  214 + f_DeleteMark = json["f_DeleteMark"].boolValue
  215 + f_CreatorTime = json["f_CreatorTime"].stringValue
  216 + f_CreatorUserId = json["f_CreatorUserId"].stringValue
  217 + f_LastModifyTime = json["f_LastModifyTime"].stringValue
  218 + f_LastModifyUserId = json["f_LastModifyUserId"].stringValue
  219 + f_DeleteTime = json["f_DeleteTime"].stringValue
  220 + f_DeleteUserId = json["f_DeleteUserId"].stringValue
  221 + f_SchoolName = json["f_SchoolName"].stringValue
  222 + f_SchoolTypeId = json["f_SchoolTypeId"].stringValue
  223 + f_Logo = json["f_Logo"].stringValue
  224 + f_IsTopTen = json["f_IsTopTen"].boolValue
  225 + f_IsExcellent = json["f_IsExcellent"].boolValue
  226 + f_Url = json["f_Url"].stringValue
  227 + }
  228 +}
  229 +
  230 +class TVStationSubject {
  231 + var f_Url:String!// 机构地址
  232 +
  233 + var f_WaveTitle:String!
  234 + var f_ChapterName:String!
  235 + var f_TopicName:String!
  236 + var f_TestName:String!
  237 + var f_Id:String!// 标识字段,Guid标识 ,
  238 + var f_DeleteMark:Bool = false // 删除标识,1-已删除 ,
  239 + var f_CreatorTime:String!// 创建时间 ,
  240 + var f_CreatorUserId:String!// 创建人员ID ,
  241 + var f_LastModifyTime:String!// 最近一次编辑时间 ,
  242 + var f_LastModifyUserId:String!//最近一次编辑人员 ,
  243 + var f_DeleteTime:String!//删除时间 ,
  244 + var f_DeleteUserId:String!// 删除人员 ,
  245 + var f_Img :String!//课件图标/微课封面 ,
  246 + var f_Title:String!//课件名称 ,
  247 + var f_CreatorName:String!// 上传人员昵称 ,
  248 + var f_Pv:Int!// 浏览量 ,
  249 + var f_DownloadSum:Int!// 下载量 ,
  250 + var f_LoveSum:Int!// 点赞量 ,
  251 + var f_Price:Int!// 价格 ,
  252 + var f_WaveId:String!// 所属教材ID ,
  253 + var f_ChapterId:String!// 所属章节 ,
  254 + var f_TopicId:String!//所属知识点 ,
  255 + var f_TestId:String!//所属考点 ,
  256 + var f_SchoolId:String!// 上传老师的学校ID ,
  257 + var f_IsExamine:Int!// 审核状态:0-未审核,1-审核通过,2-审核不通过 ,
  258 + var f_ExamineUserId :String!//审核人ID ,
  259 + var f_ExamineName:String!//审核人姓名 ,
  260 + var f_ExamineDatetime :String!// 审核日期 ,
  261 + var f_ResourceType:Int!// 资源类型 0-微课 1-资源 2-电视台 ,
  262 + var f_ResourceUrl:String!// 资源地址 ,
  263 + var f_IsOpen:Bool = false // 是否公开 ,
  264 + var f_Detail :String!// 资源简介 ,
  265 + var f_TelevisionId :String!//电视台目录
  266 + init(json:JSON){
  267 + f_Url = json["f_Url"].stringValue
  268 + f_WaveTitle = json["f_WaveTitle"].stringValue
  269 + f_ChapterName = json["f_ChapterName"].stringValue
  270 + f_TopicName = json["f_TopicName"].stringValue
  271 + f_TestName = json["f_TestName"].stringValue
  272 + f_Id = json["f_Id"].stringValue
  273 + f_DeleteMark = json["f_DeleteMark"].boolValue
  274 + f_CreatorTime = json["f_CreatorTime"].stringValue
  275 + f_CreatorUserId = json["f_CreatorUserId"].stringValue
  276 + f_LastModifyTime = json["f_LastModifyTime"].stringValue
  277 + f_LastModifyUserId = json["f_LastModifyUserId"].stringValue
  278 + f_DeleteTime = json["f_DeleteTime"].stringValue
  279 + f_DeleteUserId = json["f_DeleteUserId"].stringValue
  280 + f_Img = json["f_Img"].stringValue
  281 + f_Title = json["f_Title"].stringValue
  282 + f_CreatorName = json["f_CreatorName"].stringValue
  283 + f_Pv = json["f_Pv"].intValue
  284 + f_DownloadSum = json["f_DownloadSum"].intValue
  285 + f_LoveSum = json["f_LoveSum"].intValue
  286 + f_Price = json["f_Price"].intValue
  287 + f_WaveId = json["f_WaveId"].stringValue
  288 + f_ChapterId = json["f_ChapterId"].stringValue
  289 + f_TopicId = json["f_TopicId"].stringValue
  290 + f_TestId = json["f_TestId"].stringValue
  291 + f_SchoolId = json["f_SchoolId"].stringValue
  292 + f_IsExamine = json["f_IsExamine"].intValue
  293 + f_ExamineUserId = json["f_ExamineUserId"].stringValue
  294 + f_ExamineName = json["f_ExamineName"].stringValue
  295 + f_ExamineDatetime = json["f_ExamineDatetime"].stringValue
  296 + f_ResourceType = json["f_ResourceType"].intValue
  297 + f_ResourceUrl = json["f_ResourceUrl"].stringValue
  298 + f_IsOpen = json["f_IsOpen"].boolValue
  299 + f_Detail = json["f_Detail"].stringValue
  300 + f_TelevisionId = json["f_TelevisionId"].stringValue
  301 +
  302 + }
  303 +}
YouerLiveVideo/YouerLiveVideo/util/utiles.swift
@@ -346,6 +346,39 @@ func resignTextFiledFirstResponder(){ @@ -346,6 +346,39 @@ func resignTextFiledFirstResponder(){
346 firstView?.resignFirstResponder() 346 firstView?.resignFirstResponder()
347 } 347 }
348 } 348 }
  349 +
  350 +///ISO8601相关
  351 +private var iso8601Formatter:DateFormatter?
  352 +func dateFromISO8601(dateString:String)->Date{
  353 + var dateFormatter:DateFormatter!
  354 + if let tmp=iso8601Formatter{
  355 + dateFormatter=tmp
  356 + }else{
  357 + iso8601Formatter = DateFormatter()
  358 + iso8601Formatter!.locale = Locale(identifier: "en_US_POSIX")
  359 + //iso8601Formatter!.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZ"
  360 + //iso8601Formatter!.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SS"
  361 + dateFormatter=iso8601Formatter!
  362 + }
  363 + //不知道为什么服务器传回的时间有不同格式
  364 + let arr = ["yyyy-MM-dd'T'HH:mm:ss.SSS","yyyy-MM-dd'T'HH:mm:ss","yyyy-MM-dd HH:mm:ss","yyyy-MM-dd HH:mm:ss.SSS","yyyy-MM-dd HH:mm:ss.SSS'Z'","yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]
  365 + for item in arr {
  366 + iso8601Formatter!.dateFormat = item
  367 + let ret=dateFormatter.date(from: dateString)
  368 + if let date=ret{
  369 + return date
  370 + }
  371 + }
  372 +
  373 + return Date(timeIntervalSince1970: 0)
  374 +}
  375 +
  376 +func setDateToString(date:Date)->String{
  377 + let timeFormatter = DateFormatter()
  378 + timeFormatter.dateFormat = "yyyy-MM-dd"
  379 + return timeFormatter.string(from: date)
  380 +}
  381 +
349 //时间处理 382 //时间处理
350 func currentTime()->String{ 383 func currentTime()->String{
351 let format = creatDateFormate(dateFormat: "yyyy-MM-dd HH:mm:ss") 384 let format = creatDateFormate(dateFormat: "yyyy-MM-dd HH:mm:ss")