Commit bd57d55accf43fb885810edd606ccd3a50624ae8
1 parent
6f06ed3c
Exists in
newLive
首页排行界面搭建及数据填充
Showing
7 changed files
with
426 additions
and
78 deletions
Show diff stats
YouerLiveVideo/YouerLiveVideo.xcodeproj/project.pbxproj
... | ... | @@ -157,6 +157,7 @@ |
157 | 157 | BF7B75A71E305A6D0011D5C7 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75911E305A6D0011D5C7 /* UIScrollView+MJExtension.m */; }; |
158 | 158 | BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */; }; |
159 | 159 | BF7B75A91E305A6D0011D5C7 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75951E305A6D0011D5C7 /* UIView+MJExtension.m */; }; |
160 | + BF8E52EE1ECFD16000E472E8 /* RankingTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8E52ED1ECFD16000E472E8 /* RankingTableViewController.swift */; }; | |
160 | 161 | BFBB83A91ECAE35E008B404B /* LeadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83A81ECAE35E008B404B /* LeadViewController.swift */; }; |
161 | 162 | BFBB83D11ECBEB4E008B404B /* JYScrollItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */; }; |
162 | 163 | BFBB83D21ECBEB4E008B404B /* JYScrollItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CE1ECBEB4E008B404B /* JYScrollItemModel.m */; }; |
... | ... | @@ -493,6 +494,7 @@ |
493 | 494 | BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJRefresh.m"; sourceTree = "<group>"; }; |
494 | 495 | BF7B75941E305A6D0011D5C7 /* UIView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+MJExtension.h"; sourceTree = "<group>"; }; |
495 | 496 | BF7B75951E305A6D0011D5C7 /* UIView+MJExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+MJExtension.m"; sourceTree = "<group>"; }; |
497 | + BF8E52ED1ECFD16000E472E8 /* RankingTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RankingTableViewController.swift; sourceTree = "<group>"; }; | |
496 | 498 | BFBB83A81ECAE35E008B404B /* LeadViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeadViewController.swift; sourceTree = "<group>"; }; |
497 | 499 | BFBB83CB1ECBEB4E008B404B /* JYScrollItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JYScrollItem.h; sourceTree = "<group>"; }; |
498 | 500 | BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollItem.m; sourceTree = "<group>"; }; |
... | ... | @@ -595,6 +597,7 @@ |
595 | 597 | isa = PBXGroup; |
596 | 598 | children = ( |
597 | 599 | BF682F1D1ECE8772007632CA /* MainHomeTableViewController.swift */, |
600 | + BF8E52ED1ECFD16000E472E8 /* RankingTableViewController.swift */, | |
598 | 601 | 5904FC541ECA8BCB00E631FF /* HomePage.storyboard */, |
599 | 602 | ); |
600 | 603 | path = HomePage; |
... | ... | @@ -1545,6 +1548,7 @@ |
1545 | 1548 | BF7B75A11E305A6D0011D5C7 /* MJRefreshGifHeader.m in Sources */, |
1546 | 1549 | 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */, |
1547 | 1550 | BF25DFF91DDAA36A003EC0C1 /* NSImage+WebCache.m in Sources */, |
1551 | + BF8E52EE1ECFD16000E472E8 /* RankingTableViewController.swift in Sources */, | |
1548 | 1552 | 59F8014F1DD2C7AD000A78B0 /* AppDelegate.swift in Sources */, |
1549 | 1553 | BF25DFED1DDAA36A003EC0C1 /* ResponseSerialization.swift in Sources */, |
1550 | 1554 | BF25E0031DDAA36A003EC0C1 /* UIImage+GIF.m in Sources */, | ... | ... |
YouerLiveVideo/YouerLiveVideo/controllers/HomePage/HomePage.storyboard
1 | -<?xml version="1.0" encoding="UTF-8"?> | |
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"> | |
1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> | |
3 | 3 | <device id="retina4_7" orientation="portrait"> |
4 | 4 | <adaptation id="fullscreen"/> |
5 | 5 | </device> |
6 | 6 | <dependencies> |
7 | 7 | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/> |
8 | + <capability name="Constraints to layout margins" minToolsVersion="6.0"/> | |
8 | 9 | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
9 | 10 | </dependencies> |
10 | 11 | <scenes> |
11 | - <!--View Controller--> | |
12 | - <scene sceneID="eHj-Hl-wWx"> | |
12 | + <!--排行--> | |
13 | + <scene sceneID="dY5-uz-H10"> | |
13 | 14 | <objects> |
14 | - <viewController id="LjZ-4M-CWC" sceneMemberID="viewController"> | |
15 | - <layoutGuides> | |
16 | - <viewControllerLayoutGuide type="top" id="yeh-XP-HPd"/> | |
17 | - <viewControllerLayoutGuide type="bottom" id="vkl-Ah-CiJ"/> | |
18 | - </layoutGuides> | |
19 | - <view key="view" contentMode="scaleToFill" id="Hyp-9a-Mci"> | |
15 | + <tableViewController storyboardIdentifier="RankingTableViewController" automaticallyAdjustsScrollViewInsets="NO" hidesBottomBarWhenPushed="YES" id="xTw-6t-Upd" customClass="RankingTableViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController"> | |
16 | + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="339" sectionHeaderHeight="28" sectionFooterHeight="28" id="o1U-D1-qqQ"> | |
20 | 17 | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
21 | 18 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
22 | - <subviews> | |
23 | - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="157" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="YOa-J8-2UM"> | |
24 | - <rect key="frame" x="0.0" y="20" width="375" height="647"/> | |
25 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | |
26 | - <prototypes> | |
27 | - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="157" id="SLW-Wm-iau"> | |
28 | - <rect key="frame" x="0.0" y="28" width="375" height="157"/> | |
29 | - <autoresizingMask key="autoresizingMask"/> | |
30 | - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="SLW-Wm-iau" id="QXN-J0-KgA"> | |
31 | - <rect key="frame" x="0.0" y="0.0" width="375" height="157"/> | |
32 | - <autoresizingMask key="autoresizingMask"/> | |
19 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | |
20 | + <prototypes> | |
21 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="ItemTableViewCell" rowHeight="339" id="cns-vb-pIQ" customClass="ItemTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target"> | |
22 | + <rect key="frame" x="0.0" y="28" width="375" height="339"/> | |
23 | + <autoresizingMask key="autoresizingMask"/> | |
24 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="cns-vb-pIQ" id="88M-wr-UJ8"> | |
25 | + <rect key="frame" x="0.0" y="0.0" width="375" height="339"/> | |
26 | + <autoresizingMask key="autoresizingMask"/> | |
27 | + <subviews> | |
28 | + <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学校排行" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EZa-z2-arr"> | |
29 | + <rect key="frame" x="8" y="15" width="65.5" height="19.5"/> | |
30 | + <fontDescription key="fontDescription" type="system" pointSize="16"/> | |
31 | + <nil key="textColor"/> | |
32 | + <nil key="highlightedColor"/> | |
33 | + </label> | |
34 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ckB-W3-VJE"> | |
35 | + <rect key="frame" x="0.0" y="44" width="375" height="44"/> | |
33 | 36 | <subviews> |
34 | - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="PAj-p1-GN4"> | |
35 | - <rect key="frame" x="8" y="4" width="359" height="148.5"/> | |
36 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | |
37 | - <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="Yxz-uf-KtO"> | |
38 | - <size key="itemSize" width="111" height="147"/> | |
39 | - <size key="headerReferenceSize" width="0.0" height="0.0"/> | |
40 | - <size key="footerReferenceSize" width="0.0" height="0.0"/> | |
41 | - <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> | |
42 | - </collectionViewFlowLayout> | |
43 | - <cells> | |
44 | - <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="Azu-vg-rrB"> | |
45 | - <rect key="frame" x="0.0" y="0.0" width="111" height="147"/> | |
46 | - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | |
47 | - <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> | |
48 | - <rect key="frame" x="0.0" y="0.0" width="111" height="147"/> | |
49 | - <autoresizingMask key="autoresizingMask"/> | |
50 | - </view> | |
51 | - </collectionViewCell> | |
52 | - </cells> | |
53 | - </collectionView> | |
37 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="综合排名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SaW-7O-OkT"> | |
38 | + <rect key="frame" x="18" y="13" width="61.5" height="18"/> | |
39 | + <fontDescription key="fontDescription" type="system" pointSize="15"/> | |
40 | + <nil key="textColor"/> | |
41 | + <nil key="highlightedColor"/> | |
42 | + </label> | |
43 | + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="botoom_image" translatesAutoresizingMaskIntoConstraints="NO" id="NNQ-07-hic"> | |
44 | + <rect key="frame" x="352" y="15" width="15" height="15"/> | |
45 | + <constraints> | |
46 | + <constraint firstAttribute="height" constant="15" id="J3l-xy-BQF"/> | |
47 | + <constraint firstAttribute="width" constant="15" id="uel-30-fcR"/> | |
48 | + </constraints> | |
49 | + </imageView> | |
50 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ss9-IN-p7o"> | |
51 | + <rect key="frame" x="331" y="0.0" width="44" height="44"/> | |
52 | + <constraints> | |
53 | + <constraint firstAttribute="width" constant="44" id="i7f-rP-uMp"/> | |
54 | + </constraints> | |
55 | + <connections> | |
56 | + <action selector="openOrCloseAction:" destination="cns-vb-pIQ" eventType="touchUpInside" id="pnJ-fx-YyR"/> | |
57 | + </connections> | |
58 | + </button> | |
54 | 59 | </subviews> |
60 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | |
55 | 61 | <constraints> |
56 | - <constraint firstItem="PAj-p1-GN4" firstAttribute="top" secondItem="QXN-J0-KgA" secondAttribute="top" constant="4" id="5zz-bd-O6i"/> | |
57 | - <constraint firstItem="PAj-p1-GN4" firstAttribute="leading" secondItem="QXN-J0-KgA" secondAttribute="leading" constant="8" id="8MC-Zz-u5f"/> | |
58 | - <constraint firstAttribute="trailing" secondItem="PAj-p1-GN4" secondAttribute="trailing" constant="8" id="sTQ-kz-OzQ"/> | |
59 | - <constraint firstAttribute="bottom" secondItem="PAj-p1-GN4" secondAttribute="bottom" constant="4" id="w43-em-me9"/> | |
62 | + <constraint firstItem="NNQ-07-hic" firstAttribute="centerY" secondItem="ckB-W3-VJE" secondAttribute="centerY" id="0Rf-nE-jAo"/> | |
63 | + <constraint firstAttribute="trailing" secondItem="NNQ-07-hic" secondAttribute="trailing" constant="8" id="6G8-VB-s2n"/> | |
64 | + <constraint firstAttribute="bottom" secondItem="ss9-IN-p7o" secondAttribute="bottom" id="PLC-c5-EFr"/> | |
65 | + <constraint firstAttribute="height" constant="44" id="Wyr-GU-aaT"/> | |
66 | + <constraint firstAttribute="trailing" secondItem="ss9-IN-p7o" secondAttribute="trailing" id="aAO-V3-sgD"/> | |
67 | + <constraint firstItem="ss9-IN-p7o" firstAttribute="top" secondItem="ckB-W3-VJE" secondAttribute="top" id="bxF-ra-1Fc"/> | |
68 | + <constraint firstItem="SaW-7O-OkT" firstAttribute="centerY" secondItem="ckB-W3-VJE" secondAttribute="centerY" id="ne0-jg-T5L"/> | |
69 | + <constraint firstItem="SaW-7O-OkT" firstAttribute="leading" secondItem="ckB-W3-VJE" secondAttribute="leading" constant="18" id="wS7-H2-6Hb"/> | |
60 | 70 | </constraints> |
61 | - </tableViewCellContentView> | |
62 | - </tableViewCell> | |
63 | - </prototypes> | |
64 | - </tableView> | |
65 | - </subviews> | |
66 | - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | |
67 | - <constraints> | |
68 | - <constraint firstItem="YOa-J8-2UM" firstAttribute="leading" secondItem="Hyp-9a-Mci" secondAttribute="leading" id="7D9-Dd-nwr"/> | |
69 | - <constraint firstItem="vkl-Ah-CiJ" firstAttribute="top" secondItem="YOa-J8-2UM" secondAttribute="bottom" id="KeN-hy-x2G"/> | |
70 | - <constraint firstItem="YOa-J8-2UM" firstAttribute="top" secondItem="yeh-XP-HPd" secondAttribute="bottom" id="d83-an-LAU"/> | |
71 | - <constraint firstAttribute="trailing" secondItem="YOa-J8-2UM" secondAttribute="trailing" id="kit-ZG-l6n"/> | |
72 | - </constraints> | |
73 | - </view> | |
74 | - </viewController> | |
75 | - <placeholder placeholderIdentifier="IBFirstResponder" id="AHa-9V-Fv6" userLabel="First Responder" sceneMemberID="firstResponder"/> | |
71 | + </view> | |
72 | + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="M9F-0f-7Zj"> | |
73 | + <rect key="frame" x="0.0" y="88" width="375" height="251"/> | |
74 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> | |
75 | + <prototypes> | |
76 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="cell" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="deq-A6-QAT"> | |
77 | + <rect key="frame" x="0.0" y="28" width="375" height="44"/> | |
78 | + <autoresizingMask key="autoresizingMask"/> | |
79 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="deq-A6-QAT" id="jel-9N-Twh"> | |
80 | + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> | |
81 | + <autoresizingMask key="autoresizingMask"/> | |
82 | + </tableViewCellContentView> | |
83 | + </tableViewCell> | |
84 | + </prototypes> | |
85 | + <connections> | |
86 | + <outlet property="dataSource" destination="cns-vb-pIQ" id="UYa-xu-7SP"/> | |
87 | + <outlet property="delegate" destination="cns-vb-pIQ" id="XE2-JN-ndb"/> | |
88 | + </connections> | |
89 | + </tableView> | |
90 | + </subviews> | |
91 | + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> | |
92 | + <constraints> | |
93 | + <constraint firstItem="M9F-0f-7Zj" firstAttribute="leading" secondItem="88M-wr-UJ8" secondAttribute="leading" id="05H-J5-3ft"/> | |
94 | + <constraint firstItem="ckB-W3-VJE" firstAttribute="leading" secondItem="88M-wr-UJ8" secondAttribute="leading" id="Llv-Cj-qUv"/> | |
95 | + <constraint firstItem="EZa-z2-arr" firstAttribute="top" secondItem="88M-wr-UJ8" secondAttribute="topMargin" constant="7" id="Y6P-C4-Lnh"/> | |
96 | + <constraint firstItem="ckB-W3-VJE" firstAttribute="top" secondItem="88M-wr-UJ8" secondAttribute="top" constant="44" id="YYa-p3-V5Z"/> | |
97 | + <constraint firstAttribute="trailing" secondItem="M9F-0f-7Zj" secondAttribute="trailing" id="Zee-lj-9ac"/> | |
98 | + <constraint firstAttribute="bottom" secondItem="M9F-0f-7Zj" secondAttribute="bottom" id="gJP-sa-9DJ"/> | |
99 | + <constraint firstAttribute="trailing" secondItem="ckB-W3-VJE" secondAttribute="trailing" id="grJ-oO-BaR"/> | |
100 | + <constraint firstAttribute="leadingMargin" secondItem="EZa-z2-arr" secondAttribute="leading" id="pPi-1h-WTn"/> | |
101 | + <constraint firstItem="M9F-0f-7Zj" firstAttribute="top" secondItem="ckB-W3-VJE" secondAttribute="bottom" id="seG-Ge-GIf"/> | |
102 | + </constraints> | |
103 | + </tableViewCellContentView> | |
104 | + <connections> | |
105 | + <outlet property="sectionTitleLabel" destination="EZa-z2-arr" id="riK-aS-fgl"/> | |
106 | + <outlet property="subTableView" destination="M9F-0f-7Zj" id="TzF-ki-ccn"/> | |
107 | + <outlet property="tableViewButtom" destination="gJP-sa-9DJ" id="hjD-Q3-nGW"/> | |
108 | + <outlet property="titleImageView" destination="NNQ-07-hic" id="FDL-Do-NZC"/> | |
109 | + <outlet property="titleLabel" destination="SaW-7O-OkT" id="sqD-nr-S3a"/> | |
110 | + <outlet property="titleViewTop" destination="YYa-p3-V5Z" id="hok-Ka-n3E"/> | |
111 | + </connections> | |
112 | + </tableViewCell> | |
113 | + </prototypes> | |
114 | + <sections/> | |
115 | + <connections> | |
116 | + <outlet property="dataSource" destination="xTw-6t-Upd" id="k4J-Ub-G0Z"/> | |
117 | + <outlet property="delegate" destination="xTw-6t-Upd" id="9YG-mr-onA"/> | |
118 | + </connections> | |
119 | + </tableView> | |
120 | + <navigationItem key="navigationItem" title="排行" id="JPt-wk-Pdj"/> | |
121 | + <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/> | |
122 | + </tableViewController> | |
123 | + <placeholder placeholderIdentifier="IBFirstResponder" id="mqx-56-Al8" userLabel="First Responder" sceneMemberID="firstResponder"/> | |
76 | 124 | </objects> |
77 | - <point key="canvasLocation" x="164" y="253.2233883058471"/> | |
125 | + <point key="canvasLocation" x="196" y="260.41979010494754"/> | |
78 | 126 | </scene> |
79 | 127 | </scenes> |
128 | + <resources> | |
129 | + <image name="botoom_image" width="48" height="48"/> | |
130 | + </resources> | |
80 | 131 | </document> | ... | ... |
YouerLiveVideo/YouerLiveVideo/controllers/HomePage/MainHomeTableViewController.swift
... | ... | @@ -111,6 +111,11 @@ class MainHomeTableViewController: UITableViewController { |
111 | 111 | */ |
112 | 112 | override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
113 | 113 | NSLog("点击了第\(indexPath.row)个cell") |
114 | + if indexPath.row==0{ | |
115 | + //排行 | |
116 | + let vc = UIStoryboard(name: "HomePage", bundle: nil).instantiateViewController(withIdentifier: "RankingTableViewController") as! RankingTableViewController | |
117 | + self.navigationController?.pushViewController(vc, animated: true) | |
118 | + } | |
114 | 119 | } |
115 | 120 | |
116 | 121 | ... | ... |
YouerLiveVideo/YouerLiveVideo/controllers/HomePage/RankingTableViewController.swift
0 → 100644
... | ... | @@ -0,0 +1,279 @@ |
1 | +// | |
2 | +// RankingTableViewController.swift | |
3 | +// YouerLiveVideo | |
4 | +// | |
5 | +// Created by 葛建军 on 17/5/20. | |
6 | +// Copyright © 2017年 左丞. All rights reserved. | |
7 | +// | |
8 | + | |
9 | +import UIKit | |
10 | + | |
11 | +class RankingTableViewController: UITableViewController { | |
12 | + var openIndexAry:[Int]=[0,4] //记录那些是展开状态 | |
13 | + var allDic:[Int:[String]]=Dictionary<Int,[String]>() | |
14 | + var ary:[String]=["综合排名","资源贡献","下载排名","阅读排名","综合排名","资源贡献","下载排名","阅读排名"] | |
15 | + override func viewDidLoad() { | |
16 | + super.viewDidLoad() | |
17 | + getAllSubRankings() | |
18 | + } | |
19 | + func getAllSubRankings(){ | |
20 | + for i in 0..<8{ | |
21 | + allDic.updateValue([], forKey: i) | |
22 | + } | |
23 | + AppDelegate.instance().httpServer.getSchoolGeneral { (str, error) in | |
24 | + if error==nil { | |
25 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
26 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
27 | + var lineAry:[String]=[] | |
28 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
29 | + lineAry.append(item["f_SchoolName"].stringValue) | |
30 | + } | |
31 | + self.allDic.updateValue(lineAry, forKey: 0) | |
32 | + self.tableView.reloadData() | |
33 | + }, failHandler: { (error) in | |
34 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
35 | + }) | |
36 | + }else{ | |
37 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
38 | + } | |
39 | + }else{ | |
40 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
41 | + } | |
42 | + } | |
43 | + AppDelegate.instance().httpServer.getSchoolUpload { (str, error) in | |
44 | + if error==nil { | |
45 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
46 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
47 | + var lineAry:[String]=[] | |
48 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
49 | + lineAry.append(item["f_SchoolName"].stringValue) | |
50 | + } | |
51 | + self.allDic.updateValue(lineAry, forKey: 1) | |
52 | + self.tableView.reloadData() | |
53 | + }, failHandler: { (error) in | |
54 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
55 | + }) | |
56 | + }else{ | |
57 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
58 | + } | |
59 | + }else{ | |
60 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
61 | + } | |
62 | + } | |
63 | + AppDelegate.instance().httpServer.getSchoolDownloads { (str, error) in | |
64 | + if error==nil { | |
65 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
66 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
67 | + var lineAry:[String]=[] | |
68 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
69 | + lineAry.append(item["f_SchoolName"].stringValue) | |
70 | + } | |
71 | + self.allDic.updateValue(lineAry, forKey: 2) | |
72 | + self.tableView.reloadData() | |
73 | + }, failHandler: { (error) in | |
74 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
75 | + }) | |
76 | + }else{ | |
77 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
78 | + } | |
79 | + }else{ | |
80 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
81 | + } | |
82 | + } | |
83 | + AppDelegate.instance().httpServer.getSchoolPv { (str, error) in | |
84 | + if error==nil { | |
85 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
86 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
87 | + var lineAry:[String]=[] | |
88 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
89 | + lineAry.append(item["f_SchoolName"].stringValue) | |
90 | + } | |
91 | + self.allDic.updateValue(lineAry, forKey: 3) | |
92 | + self.tableView.reloadData() | |
93 | + }, failHandler: { (error) in | |
94 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
95 | + }) | |
96 | + }else{ | |
97 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
98 | + } | |
99 | + }else{ | |
100 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
101 | + } | |
102 | + } | |
103 | + AppDelegate.instance().httpServer.getTeacherGenerals { (str, error) in | |
104 | + if error==nil { | |
105 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
106 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
107 | + var lineAry:[String]=[] | |
108 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
109 | + lineAry.append(item["f_SchoolName"].stringValue) | |
110 | + } | |
111 | + self.allDic.updateValue(lineAry, forKey: 4) | |
112 | + self.tableView.reloadData() | |
113 | + }, failHandler: { (error) in | |
114 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
115 | + }) | |
116 | + }else{ | |
117 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
118 | + } | |
119 | + }else{ | |
120 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
121 | + } | |
122 | + } | |
123 | + AppDelegate.instance().httpServer.getTeacherUpload { (str, error) in | |
124 | + if error==nil { | |
125 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
126 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
127 | + var lineAry:[String]=[] | |
128 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
129 | + lineAry.append(item["f_SchoolName"].stringValue) | |
130 | + } | |
131 | + self.allDic.updateValue(lineAry, forKey: 5) | |
132 | + self.tableView.reloadData() | |
133 | + }, failHandler: { (error) in | |
134 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
135 | + }) | |
136 | + }else{ | |
137 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
138 | + } | |
139 | + }else{ | |
140 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
141 | + } | |
142 | + } | |
143 | + AppDelegate.instance().httpServer.getTeacherDownload { (str, error) in | |
144 | + if error==nil { | |
145 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
146 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
147 | + var lineAry:[String]=[] | |
148 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
149 | + lineAry.append(item["f_SchoolName"].stringValue) | |
150 | + } | |
151 | + self.allDic.updateValue(lineAry, forKey: 6) | |
152 | + self.tableView.reloadData() | |
153 | + }, failHandler: { (error) in | |
154 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
155 | + }) | |
156 | + }else{ | |
157 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
158 | + } | |
159 | + }else{ | |
160 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
161 | + } | |
162 | + } | |
163 | + AppDelegate.instance().httpServer.getTeacherPvs { (str, error) in | |
164 | + if error==nil { | |
165 | + if JSON.fromString(jsonString: str)!["status"].intValue == 1{ | |
166 | + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in | |
167 | + var lineAry:[String]=[] | |
168 | + for item in JSON.fromString(jsonString: str)!["data"].arrayValue { | |
169 | + lineAry.append(item["f_SchoolName"].stringValue) | |
170 | + } | |
171 | + self.allDic.updateValue(lineAry, forKey: 7) | |
172 | + self.tableView.reloadData() | |
173 | + }, failHandler: { (error) in | |
174 | + self.view.makeToast("排名失败:\(error.localizedDescription)") | |
175 | + }) | |
176 | + }else{ | |
177 | + self.view.makeToast("获取排名失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)") | |
178 | + } | |
179 | + }else{ | |
180 | + self.view.makeToast("获取排名失败:\(error!.description)") | |
181 | + } | |
182 | + } | |
183 | + } | |
184 | + override func didReceiveMemoryWarning() { | |
185 | + super.didReceiveMemoryWarning() | |
186 | + } | |
187 | + // MARK: - Table view data source | |
188 | + override func numberOfSections(in tableView: UITableView) -> Int { | |
189 | + return 1 | |
190 | + } | |
191 | + | |
192 | + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
193 | + return 8 | |
194 | + } | |
195 | + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | |
196 | + var height:CGFloat=44 | |
197 | + if indexPath.row==0 || indexPath.row==4{ | |
198 | + height=height+44 | |
199 | + } | |
200 | + if indexPath.row != 3{ | |
201 | + height=height+20 | |
202 | + } | |
203 | + if openIndexAry.contains(indexPath.row){ | |
204 | + height=height+CGFloat(30*allDic[indexPath.row]!.count) | |
205 | + } | |
206 | + return height | |
207 | + } | |
208 | + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
209 | + let cell=tableView.dequeueReusableCell(withIdentifier: "ItemTableViewCell", for: indexPath) as! ItemTableViewCell | |
210 | + cell.superVC=self | |
211 | + cell.indexPath=indexPath | |
212 | + if indexPath.row==0{ | |
213 | + cell.sectionTitleLabel.text="学校排行" | |
214 | + cell.sectionTitleLabel.isHidden=false | |
215 | + } | |
216 | + if indexPath.row==4{ | |
217 | + cell.sectionTitleLabel.text="教师排行" | |
218 | + cell.sectionTitleLabel.isHidden=false | |
219 | + } | |
220 | + if indexPath.row==0 || indexPath.row==4{ | |
221 | + cell.titleViewTop.constant=44 | |
222 | + }else{ | |
223 | + cell.titleViewTop.constant=0 | |
224 | + } | |
225 | + if indexPath.row==3{ | |
226 | + cell.tableViewButtom.constant=0 | |
227 | + }else{ | |
228 | + cell.tableViewButtom.constant=20 | |
229 | + } | |
230 | + cell.titleLabel.text=ary[indexPath.row] | |
231 | + if openIndexAry.contains(indexPath.row){ | |
232 | + cell.titleImageView.image=UIImage(named: "botoom_image") | |
233 | + }else{ | |
234 | + cell.titleImageView.image=UIImage(named: "top_image") | |
235 | + } | |
236 | + cell.subTableView.reloadData() | |
237 | + return cell | |
238 | + } | |
239 | + | |
240 | +} | |
241 | +class ItemTableViewCell: UITableViewCell,UITableViewDelegate,UITableViewDataSource { | |
242 | + var superVC:RankingTableViewController? | |
243 | + var indexPath:IndexPath! | |
244 | + @IBOutlet var sectionTitleLabel: UILabel! | |
245 | + @IBOutlet var titleViewTop: NSLayoutConstraint! | |
246 | + @IBOutlet var subTableView: UITableView! | |
247 | + @IBOutlet var tableViewButtom: NSLayoutConstraint! | |
248 | + @IBOutlet var titleLabel: UILabel! | |
249 | + @IBOutlet var titleImageView: UIImageView! | |
250 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
251 | + if superVC != nil { | |
252 | + if superVC!.openIndexAry.contains(indexPath.row){ | |
253 | + return superVC!.allDic[indexPath.row]!.count | |
254 | + }else{ | |
255 | + return 0 | |
256 | + } | |
257 | + }else{ | |
258 | + return 0 | |
259 | + } | |
260 | + } | |
261 | + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | |
262 | + return 30 | |
263 | + } | |
264 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
265 | + let cell=tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) | |
266 | + if superVC != nil { | |
267 | + cell.textLabel?.text="\(superVC!.allDic[self.indexPath.row]![indexPath.row])" | |
268 | + } | |
269 | + return cell | |
270 | + } | |
271 | + @IBAction func openOrCloseAction(_ sender: UIButton) { | |
272 | + if superVC!.openIndexAry.contains(indexPath.row){ | |
273 | + superVC!.openIndexAry.remove(at: getCurrentIndex(item: indexPath.row, arry: superVC!.openIndexAry)) | |
274 | + }else{ | |
275 | + superVC!.openIndexAry.append(indexPath.row) | |
276 | + } | |
277 | + superVC!.tableView.reloadData() | |
278 | + } | |
279 | +} | ... | ... |
YouerLiveVideo/YouerLiveVideo/controllers/MViewController.swift
YouerLiveVideo/YouerLiveVideo/util/network.swift
... | ... | @@ -308,43 +308,43 @@ final class HTTPServer{ |
308 | 308 | |
309 | 309 | //MARK:-DataStatistics |
310 | 310 | //获取前十学校的综合排行 |
311 | - func getSchoolGeneral(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
312 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLGENERAL, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
311 | + func getSchoolGeneral(completionHandler:@escaping (String?, NSError?) -> ()){ | |
312 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLGENERAL,headers:["Authorization":token!], completionHandler: completionHandler) | |
313 | 313 | } |
314 | 314 | |
315 | 315 | //获取前十学校的阅读量排行 |
316 | - func getSchoolPv(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
317 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLPV, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
316 | + func getSchoolPv(completionHandler:@escaping (String?, NSError?) -> ()){ | |
317 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLPV, headers:["Authorization":token!], completionHandler: completionHandler) | |
318 | 318 | } |
319 | 319 | |
320 | 320 | //获取排行前十学校的下载量 |
321 | - func getSchoolDownloads(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
322 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLDOWNLOADS, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
321 | + func getSchoolDownloads(completionHandler:@escaping (String?, NSError?) -> ()){ | |
322 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLDOWNLOADS,headers:["Authorization":token!], completionHandler: completionHandler) | |
323 | 323 | } |
324 | 324 | |
325 | 325 | //获取排行前十学校的上传数 |
326 | - func getSchoolUpload(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
327 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLUPLOAD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
326 | + func getSchoolUpload(completionHandler:@escaping (String?, NSError?) -> ()){ | |
327 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETSCHOOLUPLOAD,headers:["Authorization":token!], completionHandler: completionHandler) | |
328 | 328 | } |
329 | 329 | |
330 | 330 | //获取排行前十的教师的综合数 |
331 | - func getTeacherGenerals(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
332 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERGENERALS, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
331 | + func getTeacherGenerals(completionHandler:@escaping (String?, NSError?) -> ()){ | |
332 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERGENERALS,headers:["Authorization":token!], completionHandler: completionHandler) | |
333 | 333 | } |
334 | 334 | |
335 | 335 | //获取排名前十的教师发的资源的阅读量 |
336 | - func getTeacherPvs(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
337 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERPVS, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
336 | + func getTeacherPvs(completionHandler:@escaping (String?, NSError?) -> ()){ | |
337 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERPVS, headers:["Authorization":token!], completionHandler: completionHandler) | |
338 | 338 | } |
339 | 339 | |
340 | 340 | //获取排名前十的资源的下载量 |
341 | - func getTeacherDownload(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
342 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERDOWNLOAD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
341 | + func getTeacherDownload(completionHandler:@escaping (String?, NSError?) -> ()){ | |
342 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERDOWNLOAD, headers:["Authorization":token!], completionHandler: completionHandler) | |
343 | 343 | } |
344 | 344 | |
345 | 345 | //获取排名前十的教师的上传量 |
346 | - func getTeacherUpload(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ | |
347 | - KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERUPLOAD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) | |
346 | + func getTeacherUpload(completionHandler:@escaping (String?, NSError?) -> ()){ | |
347 | + KHttp.GET(url: HTTPServer.URL_DATASTATISTICGETTEACHERUPLOAD,headers:["Authorization":token!], completionHandler: completionHandler) | |
348 | 348 | } |
349 | 349 | |
350 | 350 | //分页获取排行榜 | ... | ... |
YouerLiveVideo/YouerLiveVideo/util/utiles.swift
... | ... | @@ -187,7 +187,15 @@ class indexLongPressGesture: UILongPressGestureRecognizer { |
187 | 187 | class indexUIMenuItem: UIMenuItem { |
188 | 188 | var indexPath:IndexPath? |
189 | 189 | } |
190 | - | |
190 | +//获取元素在数组中的位置 | |
191 | +func getCurrentIndex(item:Int,arry:[Int])->Int{ | |
192 | + for i in 0..<arry.count { | |
193 | + if arry[i]==item{ | |
194 | + return i | |
195 | + } | |
196 | + } | |
197 | + return 0 | |
198 | +} | |
191 | 199 | //图片缩放 |
192 | 200 | extension UIImage{ |
193 | 201 | func imageScaledToScale(_ scale:CGFloat)->UIImage{ | ... | ... |