Commit 7ed310793e58a0abe45bca8c41087c460bdff6b2

Authored by 葛建军
1 parent 67db43ab
Exists in newLive

资源排序筛选界面学段,年级,学科搭建及数据处理,图标导入及添加。

Showing 54 changed files with 1010 additions and 74 deletions   Show diff stats
YouerLiveVideo/YouerLiveVideo.xcodeproj/project.pbxproj
... ... @@ -140,6 +140,10 @@
140 140 BF6977981E2DEC98006FA934 /* userId.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977951E2DEC98006FA934 /* userId.png */; };
141 141 BF6977991E2DEC98006FA934 /* userPassword.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977961E2DEC98006FA934 /* userPassword.png */; };
142 142 BF7722F31ED283D400226D44 /* FilterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7722F21ED283D400226D44 /* FilterViewController.swift */; };
  143 + BF7722F71ED3C3CD00226D44 /* FilterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF7722F61ED3C3CD00226D44 /* FilterView.xib */; };
  144 + BF7722F91ED3C3E900226D44 /* FilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7722F81ED3C3E900226D44 /* FilterView.swift */; };
  145 + BF7722FC1ED3C54B00226D44 /* FilterCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */; };
  146 + BF7722FD1ED3C54B00226D44 /* FilterCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */; };
143 147 BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */; };
144 148 BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756C1E305A6D0011D5C7 /* MJRefreshBackFooter.m */; };
145 149 BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756E1E305A6D0011D5C7 /* MJRefreshComponent.m */; };
... ... @@ -460,6 +464,10 @@
460 464 BF6977951E2DEC98006FA934 /* userId.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = userId.png; sourceTree = "<group>"; };
461 465 BF6977961E2DEC98006FA934 /* userPassword.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = userPassword.png; sourceTree = "<group>"; };
462 466 BF7722F21ED283D400226D44 /* FilterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterViewController.swift; sourceTree = "<group>"; };
  467 + BF7722F61ED3C3CD00226D44 /* FilterView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterView.xib; sourceTree = "<group>"; };
  468 + BF7722F81ED3C3E900226D44 /* FilterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterView.swift; sourceTree = "<group>"; };
  469 + BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilterCollectionViewCell.swift; sourceTree = "<group>"; };
  470 + BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilterCollectionViewCell.xib; sourceTree = "<group>"; };
463 471 BF7B75691E305A6D0011D5C7 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; };
464 472 BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; };
465 473 BF7B756B1E305A6D0011D5C7 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; };
... ... @@ -626,6 +634,7 @@
626 634 59AE3DFA1ECECD7D003E2C62 /* LiveInforViewController.swift */,
627 635 59AE3DFC1ECED5B1003E2C62 /* MoivePlayerViewController.swift */,
628 636 597185B41ECA990C00D7F478 /* Resource.storyboard */,
  637 + BF7722F51ED3C3A500226D44 /* View */,
629 638 );
630 639 path = Resource;
631 640 sourceTree = "<group>";
... ... @@ -1048,6 +1057,17 @@
1048 1057 path = SVProgressHUD;
1049 1058 sourceTree = "<group>";
1050 1059 };
  1060 + BF7722F51ED3C3A500226D44 /* View */ = {
  1061 + isa = PBXGroup;
  1062 + children = (
  1063 + BF7722F81ED3C3E900226D44 /* FilterView.swift */,
  1064 + BF7722F61ED3C3CD00226D44 /* FilterView.xib */,
  1065 + BF7722FA1ED3C54B00226D44 /* FilterCollectionViewCell.swift */,
  1066 + BF7722FB1ED3C54B00226D44 /* FilterCollectionViewCell.xib */,
  1067 + );
  1068 + path = View;
  1069 + sourceTree = "<group>";
  1070 + };
1051 1071 BF7B75671E305A6D0011D5C7 /* MJRefresh */ = {
1052 1072 isa = PBXGroup;
1053 1073 children = (
... ... @@ -1404,6 +1424,7 @@
1404 1424 599B2CDB1DE52F7E00B4F7FD /* read_me.txt in Resources */,
1405 1425 59BA13551E25D8DB00540DE0 /* video_brightness_bg@2x.png in Resources */,
1406 1426 59BA13491E25D8DB00540DE0 /* movieForward.png in Resources */,
  1427 + BF7722FD1ED3C54B00226D44 /* FilterCollectionViewCell.xib in Resources */,
1407 1428 BFF5F4801DD5AA5C00D33B89 /* 竖屏.png in Resources */,
1408 1429 599B2CDC1DE52F7E00B4F7FD /* README.txt in Resources */,
1409 1430 BFF5F4811DD5AA5C00D33B89 /* 编辑.png in Resources */,
... ... @@ -1420,6 +1441,7 @@
1420 1441 5904FC501ECA8B8C00E631FF /* TVStation.storyboard in Resources */,
1421 1442 BF3E4A771E2F30B700D90659 /* 观看人数.png in Resources */,
1422 1443 599B2CDF1DE52F7E00B4F7FD /* UMSocialSDKResources.bundle in Resources */,
  1444 + BF7722F71ED3C3CD00226D44 /* FilterView.xib in Resources */,
1423 1445 BFF5F4901DD5B7CA00D33B89 /* Info-tvOS.plist in Resources */,
1424 1446 BFF5F4711DD5AA5C00D33B89 /* attach_file.png in Resources */,
1425 1447 599B2CD81DE52F7E00B4F7FD /* WeiboSDK.bundle in Resources */,
... ... @@ -1470,6 +1492,7 @@
1470 1492 BF7B75A21E305A6D0011D5C7 /* MJRefreshNormalHeader.m in Sources */,
1471 1493 BF7B75991E305A6D0011D5C7 /* MJRefreshFooter.m in Sources */,
1472 1494 59F801571DD2C7AE000A78B0 /* YouerLiveVideo.xcdatamodeld in Sources */,
  1495 + BF7722F91ED3C3E900226D44 /* FilterView.swift in Sources */,
1473 1496 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */,
1474 1497 BFBB83EB1ECC445D008B404B /* UserViewController.swift in Sources */,
1475 1498 5904FC4E1ECA8B8C00E631FF /* ResourceViewController.swift in Sources */,
... ... @@ -1560,6 +1583,7 @@
1560 1583 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */,
1561 1584 BF25DFF91DDAA36A003EC0C1 /* NSImage+WebCache.m in Sources */,
1562 1585 BF8E52EE1ECFD16000E472E8 /* RankingTableViewController.swift in Sources */,
  1586 + BF7722FC1ED3C54B00226D44 /* FilterCollectionViewCell.swift in Sources */,
1563 1587 59F8014F1DD2C7AD000A78B0 /* AppDelegate.swift in Sources */,
1564 1588 BF7722F31ED283D400226D44 /* FilterViewController.swift in Sources */,
1565 1589 BF25DFED1DDAA36A003EC0C1 /* ResponseSerialization.swift in Sources */,
... ...
YouerLiveVideo/YouerLiveVideo.xcodeproj/project.xcworkspace/xcuserdata/jun.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
YouerLiveVideo/YouerLiveVideo/AppDelegate.swift
... ... @@ -40,20 +40,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate,NIMLoginManagerDelegate {
40 40 }
41 41  
42 42 func applicationDidBecomeActive(_ application: UIApplication) {
43   - let userId = AppDelegate.instance().accountManager.id()
44   - let phone = AppDelegate.instance().accountManager.phone()
45   - if userId != ""{
46   - NIMSDK.shared().loginManager.autoLogin(phone, token: phone.md5().uppercased())
47   - }
48   - if let step = self.step {
49   - if userId != "" && step == NIMLoginStep.loginFailed{//( step == NIMLoginStep.LinkFailed ||
50   - XSTLiveManager.shareXSTLiveManager().login(userId: phone, completion: { (success) -> Void in
51   - if !success {
52   - self.accountManager.cleanUserInfoAndPoptoRootVC()
53   - }
54   - })
55   - }
56   - }
  43 +// let userId = AppDelegate.instance().accountManager.id()
  44 +// let phone = AppDelegate.instance().accountManager.phone()
  45 +// if userId != ""{
  46 +// NIMSDK.shared().loginManager.autoLogin(phone, token: phone.md5().uppercased())
  47 +// }
  48 +// if let step = self.step {
  49 +// if userId != "" && step == NIMLoginStep.loginFailed{//( step == NIMLoginStep.LinkFailed ||
  50 +// XSTLiveManager.shareXSTLiveManager().login(userId: phone, completion: { (success) -> Void in
  51 +// if !success {
  52 +// self.accountManager.cleanUserInfoAndPoptoRootVC()
  53 +// }
  54 +// })
  55 +// }
  56 +// }
57 57  
58 58  
59 59 // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/Contents.json 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +{
  2 + "info" : {
  3 + "version" : 1,
  4 + "author" : "xcode"
  5 + }
  6 +}
0 7 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/Contents.json 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +{
  2 + "info" : {
  3 + "version" : 1,
  4 + "author" : "xcode"
  5 + }
  6 +}
0 7 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_courseList.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "资源.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_courseList.imageset/资源.png 0 → 100644

1.9 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_hotcourse.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "热门微课.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_hotcourse.imageset/热门微课.png 0 → 100644

1.21 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_ranking.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "排行.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_ranking.imageset/排行.png 0 → 100644

1.07 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_television.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "图标_28.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/HomePage/homepage_television.imageset/图标_28.png 0 → 100644

1.47 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_back.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "返回.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_back.imageset/返回.png 0 → 100644

1.3 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_courseList.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "图标_24.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_courseList.imageset/图标_24.png 0 → 100644

1.9 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_download.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "下载数量.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_download.imageset/下载数量.png 0 → 100644

1.12 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_homepage.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "底栏1.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_homepage.imageset/底栏1.png 0 → 100644

1.58 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_hotcourse.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "图标_30.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_hotcourse.imageset/图标_30.png 0 → 100644

1.56 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_microcourse.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "底栏3.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_microcourse.imageset/底栏3.png 0 → 100644

1.22 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_more.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "更多.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_more.imageset/更多.png 0 → 100644

1.36 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_open.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "展开.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_open.imageset/展开.png 0 → 100644

1.36 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_ranking.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "图标_22.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_ranking.imageset/图标_22.png 0 → 100644

1.08 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_resource.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "底栏2.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_resource.imageset/底栏2.png 0 → 100644

2.02 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_setting.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "设置.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_setting.imageset/设置.png 0 → 100644

2.28 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_tvstation.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "底栏4.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_tvstation.imageset/底栏4.png 0 → 100644

1.39 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_user.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "底栏5.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_user.imageset/底栏5.png 0 → 100644

1.68 KB

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_watchcount.imageset/Contents.json 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "观看数量.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/z_NewIcon/icon_watchcount.imageset/观看数量.png 0 → 100644

1.43 KB

YouerLiveVideo/YouerLiveVideo/Base.lproj/Main.storyboard
... ... @@ -124,7 +124,7 @@
124 124 <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
125 125 </state>
126 126 </button>
127   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="ds9-Gw-nOf">
  127 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_download" translatesAutoresizingMaskIntoConstraints="NO" id="ds9-Gw-nOf">
128 128 <rect key="frame" x="297" y="90.5" width="20" height="20"/>
129 129 <constraints>
130 130 <constraint firstAttribute="width" secondItem="ds9-Gw-nOf" secondAttribute="height" multiplier="1:1" id="Mto-fo-vVR"/>
... ... @@ -273,16 +273,16 @@
273 273 <constraint firstAttribute="height" constant="15" id="mtL-aK-O9I"/>
274 274 </constraints>
275 275 </view>
276   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="tc9-OD-L9x">
  276 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="homepage_ranking" translatesAutoresizingMaskIntoConstraints="NO" id="tc9-OD-L9x">
277 277 <rect key="frame" x="15" y="30" width="20" height="20"/>
278 278 <constraints>
279 279 <constraint firstAttribute="height" constant="20" id="dzU-2e-0A0"/>
280 280 <constraint firstAttribute="width" constant="20" id="jeW-Q1-Yqy"/>
281 281 </constraints>
282 282 </imageView>
283   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="gpI-zw-6qq">
  283 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="gpI-zw-6qq">
284 284 <rect key="frame" x="352" y="32.5" width="8" height="15"/>
285   - <color key="backgroundColor" red="0.10980392160000001" green="0.63529411759999999" blue="1" alpha="1" colorSpace="calibratedRGB"/>
  285 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
286 286 <constraints>
287 287 <constraint firstAttribute="width" constant="8" id="X2b-MK-4bQ"/>
288 288 <constraint firstAttribute="height" constant="15" id="ZkK-Yr-R26"/>
... ... @@ -380,14 +380,14 @@
380 380 <constraint firstAttribute="height" constant="15" id="cu9-3U-16R"/>
381 381 </constraints>
382 382 </view>
383   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="JfT-qO-w2b">
  383 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="homepage_hotcourse" translatesAutoresizingMaskIntoConstraints="NO" id="JfT-qO-w2b">
384 384 <rect key="frame" x="15" y="30" width="20" height="20"/>
385 385 <constraints>
386 386 <constraint firstAttribute="width" constant="20" id="gju-0Y-vbI"/>
387 387 <constraint firstAttribute="height" constant="20" id="upC-qc-OXv"/>
388 388 </constraints>
389 389 </imageView>
390   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="QcE-wo-WjW">
  390 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="QcE-wo-WjW">
391 391 <rect key="frame" x="352" y="32.5" width="8" height="15"/>
392 392 <constraints>
393 393 <constraint firstAttribute="width" constant="8" id="6rP-92-fox"/>
... ... @@ -453,7 +453,7 @@
453 453 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
454 454 <nil key="highlightedColor"/>
455 455 </label>
456   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="Ah6-9S-zUX">
  456 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_watchcount" translatesAutoresizingMaskIntoConstraints="NO" id="Ah6-9S-zUX">
457 457 <rect key="frame" x="154" y="167" width="12" height="8"/>
458 458 <constraints>
459 459 <constraint firstAttribute="width" constant="12" id="Gst-KJ-hy2"/>
... ... @@ -527,14 +527,14 @@
527 527 <constraint firstAttribute="height" constant="15" id="zk7-4f-Srd"/>
528 528 </constraints>
529 529 </view>
530   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="UWk-5A-PEj">
  530 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="homepage_courseList" translatesAutoresizingMaskIntoConstraints="NO" id="UWk-5A-PEj">
531 531 <rect key="frame" x="15" y="30" width="20" height="20"/>
532 532 <constraints>
533 533 <constraint firstAttribute="width" constant="20" id="c35-8L-oxO"/>
534 534 <constraint firstAttribute="height" constant="20" id="iOy-11-gMR"/>
535 535 </constraints>
536 536 </imageView>
537   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="Tib-Fm-A1U">
  537 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="Tib-Fm-A1U">
538 538 <rect key="frame" x="352" y="32.5" width="8" height="15"/>
539 539 <constraints>
540 540 <constraint firstAttribute="height" constant="15" id="5ek-5S-7Cb"/>
... ... @@ -600,7 +600,7 @@
600 600 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
601 601 <nil key="highlightedColor"/>
602 602 </label>
603   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="j8z-Dm-5mL">
  603 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_download" translatesAutoresizingMaskIntoConstraints="NO" id="j8z-Dm-5mL">
604 604 <rect key="frame" x="100" y="220" width="8" height="8"/>
605 605 <constraints>
606 606 <constraint firstAttribute="width" constant="8" id="f5p-Mv-Ylo"/>
... ... @@ -684,14 +684,14 @@
684 684 <constraint firstAttribute="height" constant="15" id="8kZ-Qb-uv0"/>
685 685 </constraints>
686 686 </view>
687   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="NyS-EO-TLP">
  687 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="homepage_television" translatesAutoresizingMaskIntoConstraints="NO" id="NyS-EO-TLP">
688 688 <rect key="frame" x="15" y="30" width="20" height="20"/>
689 689 <constraints>
690 690 <constraint firstAttribute="width" constant="20" id="3VH-BC-Dg6"/>
691 691 <constraint firstAttribute="height" constant="20" id="FB0-l5-0Jp"/>
692 692 </constraints>
693 693 </imageView>
694   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="TE2-1P-sZs">
  694 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="TE2-1P-sZs">
695 695 <rect key="frame" x="352" y="32.5" width="8" height="15"/>
696 696 <constraints>
697 697 <constraint firstAttribute="height" constant="15" id="EJo-or-6w8"/>
... ... @@ -1090,7 +1090,7 @@
1090 1090 <scene sceneID="Ztv-WN-7iK">
1091 1091 <objects>
1092 1092 <navigationController title="资源" automaticallyAdjustsScrollViewInsets="NO" id="oPL-zE-5ud" sceneMemberID="viewController">
1093   - <tabBarItem key="tabBarItem" title="资源" image="首页.png" id="H9f-Lc-mQs"/>
  1093 + <tabBarItem key="tabBarItem" title="资源" image="icon_resource" id="H9f-Lc-mQs"/>
1094 1094 <toolbarItems/>
1095 1095 <navigationBar key="navigationBar" contentMode="scaleToFill" id="Ca3-cq-bcD">
1096 1096 <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
... ... @@ -1109,7 +1109,7 @@
1109 1109 <scene sceneID="cuR-qn-3H2">
1110 1110 <objects>
1111 1111 <navigationController title="微课" automaticallyAdjustsScrollViewInsets="NO" id="B6F-S8-zbX" sceneMemberID="viewController">
1112   - <tabBarItem key="tabBarItem" title="微课" image="首页.png" id="6vI-fw-Oos"/>
  1112 + <tabBarItem key="tabBarItem" title="微课" image="icon_microcourse" id="6vI-fw-Oos"/>
1113 1113 <toolbarItems/>
1114 1114 <navigationBar key="navigationBar" contentMode="scaleToFill" id="gzA-MB-3BR">
1115 1115 <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
... ... @@ -1128,7 +1128,7 @@
1128 1128 <scene sceneID="zf3-SG-nOb">
1129 1129 <objects>
1130 1130 <navigationController title="电视台" automaticallyAdjustsScrollViewInsets="NO" id="eeQ-qi-Oqc" sceneMemberID="viewController">
1131   - <tabBarItem key="tabBarItem" title="电视台" image="首页.png" id="Aq8-EP-9iB"/>
  1131 + <tabBarItem key="tabBarItem" title="电视台" image="icon_tvstation" id="Aq8-EP-9iB"/>
1132 1132 <toolbarItems/>
1133 1133 <navigationBar key="navigationBar" contentMode="scaleToFill" id="zos-0a-mzB">
1134 1134 <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
... ... @@ -1147,7 +1147,7 @@
1147 1147 <scene sceneID="CWh-n7-nxi">
1148 1148 <objects>
1149 1149 <navigationController title="用户" automaticallyAdjustsScrollViewInsets="NO" id="Lq6-19-raF" sceneMemberID="viewController">
1150   - <tabBarItem key="tabBarItem" title="用户" image="首页.png" id="xsr-8R-tgo"/>
  1150 + <tabBarItem key="tabBarItem" title="用户" image="icon_user" id="xsr-8R-tgo"/>
1151 1151 <toolbarItems/>
1152 1152 <navigationBar key="navigationBar" contentMode="scaleToFill" id="aYo-eQ-QLv">
1153 1153 <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
... ... @@ -1274,7 +1274,7 @@
1274 1274 <scene sceneID="axA-Q8-m9h">
1275 1275 <objects>
1276 1276 <navigationController title="教育视频云" automaticallyAdjustsScrollViewInsets="NO" id="ZF0-NB-klP" sceneMemberID="viewController">
1277   - <tabBarItem key="tabBarItem" title="首页" image="首页.png" id="JKA-ml-vLX"/>
  1277 + <tabBarItem key="tabBarItem" title="首页" image="icon_homepage" id="JKA-ml-vLX"/>
1278 1278 <toolbarItems/>
1279 1279 <navigationBar key="navigationBar" contentMode="scaleToFill" id="Xg7-jx-ngw">
1280 1280 <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
... ... @@ -1402,7 +1402,7 @@
1402 1402 <action selector="pushDetailVC:" destination="IlC-3c-gI6" eventType="touchUpInside" id="3BZ-om-ppg"/>
1403 1403 </connections>
1404 1404 </button>
1405   - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon" translatesAutoresizingMaskIntoConstraints="NO" id="anY-xC-gfl">
  1405 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_watchcount" translatesAutoresizingMaskIntoConstraints="NO" id="anY-xC-gfl">
1406 1406 <rect key="frame" x="297" y="91" width="20" height="20"/>
1407 1407 <constraints>
1408 1408 <constraint firstAttribute="width" constant="20" id="FKY-fi-PSd"/>
... ... @@ -1523,10 +1523,21 @@
1523 1523 <image name="default_userRoom" width="19" height="17"/>
1524 1524 <image name="defphoto.png" width="256" height="256"/>
1525 1525 <image name="divshadow.png" width="771" height="13"/>
  1526 + <image name="homepage_courseList" width="20" height="20"/>
  1527 + <image name="homepage_hotcourse" width="20" height="20"/>
  1528 + <image name="homepage_ranking" width="20" height="20"/>
  1529 + <image name="homepage_television" width="20" height="20"/>
1526 1530 <image name="icon" width="512" height="512"/>
1527 1531 <image name="icon.png" width="80" height="80"/>
  1532 + <image name="icon_download" width="8" height="8"/>
  1533 + <image name="icon_homepage" width="25" height="25"/>
  1534 + <image name="icon_microcourse" width="25" height="25"/>
  1535 + <image name="icon_more" width="8" height="14"/>
  1536 + <image name="icon_resource" width="25" height="25"/>
  1537 + <image name="icon_tvstation" width="25" height="25"/>
  1538 + <image name="icon_user" width="25" height="25"/>
  1539 + <image name="icon_watchcount" width="12" height="7"/>
1528 1540 <image name="starLive" width="22" height="22"/>
1529 1541 <image name="视窗.png" width="31" height="31"/>
1530   - <image name="首页.png" width="31" height="31"/>
1531 1542 </resources>
1532 1543 </document>
... ...
YouerLiveVideo/YouerLiveVideo/controllers/HomePage/MainHomeTableViewController.swift
... ... @@ -60,10 +60,6 @@ class MainHomeTableViewController: UITableViewController {
60 60 }
61 61 }
62 62 }
63   - //右上角搜索按钮点击方法
64   - @IBAction func rightBarButtonAction(_ sender: UIBarButtonItem) {
65   -
66   - }
67 63  
68 64  
69 65 override func didReceiveMemoryWarning() {
... ... @@ -112,10 +108,10 @@ class MainHomeTableViewController: UITableViewController {
112 108 }
113 109 */
114 110 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
115   - NSLog("点击了第\(indexPath.row)个cell")
116 111 if indexPath.row==0{
117 112 //排行
118 113 let vc = UIStoryboard(name: "HomePage", bundle: nil).instantiateViewController(withIdentifier: "RankingTableViewController") as! RankingTableViewController
  114 + vc.openIndexAry=[0,4]
119 115 self.navigationController?.pushViewController(vc, animated: true)
120 116 }
121 117 }
... ... @@ -148,10 +144,18 @@ class InLineModel: NSObject {
148 144 }
149 145 class HomeFirstTableViewCell: UITableViewCell,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
150 146 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
151   - if indexPath.row==0{
152   - //点击进入学校 appRootViewController()
153   - }else{
154   - //点击进入教师
  147 + if appRootViewController().childViewControllers.count>0 {
  148 + if indexPath.row==0{
  149 + //点击进入学校
  150 + let vc = UIStoryboard(name: "HomePage", bundle: nil).instantiateViewController(withIdentifier: "RankingTableViewController") as! RankingTableViewController
  151 + vc.openIndexAry=[0]
  152 + ((appRootViewController().childViewControllers[0] as! MViewController).selectedViewController as! UINavigationController).pushViewController(vc, animated: true)
  153 + }else{
  154 + //点击进入教师
  155 + let vc = UIStoryboard(name: "HomePage", bundle: nil).instantiateViewController(withIdentifier: "RankingTableViewController") as! RankingTableViewController
  156 + vc.openIndexAry=[4]
  157 + ((appRootViewController().childViewControllers[0] as! MViewController).selectedViewController as! UINavigationController).pushViewController(vc, animated: true)
  158 + }
155 159 }
156 160 }
157 161 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
... ...
YouerLiveVideo/YouerLiveVideo/controllers/HomePage/RankingTableViewController.swift
... ... @@ -229,9 +229,9 @@ class RankingTableViewController: UITableViewController {
229 229 }
230 230 cell.titleLabel.text=ary[indexPath.row]
231 231 if openIndexAry.contains(indexPath.row){
232   - cell.titleImageView.image=UIImage(named: "botoom_image")
  232 + cell.titleImageView.image=UIImage(named: "icon_open")
233 233 }else{
234   - cell.titleImageView.image=UIImage(named: "top_image")
  234 + cell.titleImageView.image=UIImage(named: "icon_more")
235 235 }
236 236 cell.subTableView.reloadData()
237 237 return cell
... ...
YouerLiveVideo/YouerLiveVideo/controllers/Resource/FilterViewController.swift
... ... @@ -7,28 +7,224 @@
7 7 //
8 8  
9 9 import UIKit
10   -
11   -class FilterViewController: UIViewController {
12   -
  10 +class FilterViewController: UIViewController,FilterViewDelegate {
  11 + @IBOutlet var scrollContentView: UIStackView!
  12 + var nameAry:[String]=["学段","年级","学科","教材"]
  13 + var dataSchoolSection:[SchoolSection]=[]
  14 + var dataGrade:[Grade]=[]
  15 + var dataSubject:[Subject]=[]
  16 +
  17 + var type=FilterParameter()
13 18 override func viewDidLoad() {
14 19 super.viewDidLoad()
15   -// AppDelegate.instance().httpServer.postResourceList(parameters: <#T##[String : AnyObject]?#>, completionHandler: <#T##(String?, NSError?) -> ()#>)
  20 + self.configTheme()
  21 + self.navigationItem.title="筛选"
  22 + getSchoolSection()
  23 +// NotificationCenter.default.addObserver(self, selector: #selector(RegisterVC.keyboardWIllChange), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
  24 +// NotificationCenter.default.post(name: NSNotification.Name(rawValue: "loginOutSuccess"), object: nil)
16 25 }
17 26  
  27 + @IBAction func dismissAction(_ sender: UIBarButtonItem) {
  28 + self.dismiss(animated: true, completion: nil)
  29 + }
  30 + func setupFilterView(index:Int,arry:[filterModel]){
  31 + let filterView=scrollContentView.subviews[index] as! FilterView
  32 + if arry.count>0{
  33 + filterView.selected = 0
  34 + switch index {
  35 + case 2:
  36 + //年级
  37 + type.grade=arry[0].f_Id
  38 + case 3:
  39 + //学科
  40 + type.subject=arry[0].f_Id
  41 + default:
  42 + break
  43 + }
  44 + }else{
  45 + filterView.selected = -1
  46 + if index==2{
  47 + type.grade=nil
  48 + }
  49 + }
  50 +
  51 + filterView.isOpen=false
  52 + filterView.changeItems(array: arry)
  53 + filterView.constraints.last!.constant=60+(getScreenWidth()-80)/12
  54 + filterView.collectionView.reloadData()
  55 + }
  56 + @IBAction func determineAction(_ sender: UIButton) {
  57 + // AppDelegate.instance().httpServer.postResourceList(parameters: <#T##[String : AnyObject]?#>, completionHandler: <#T##(String?, NSError?) -> ()#>)
  58 + }
  59 + //请求年级 并添加控件
  60 + func getSchoolSection(){
  61 + SVProgressHUD.show(withStatus: "获取学段...")
  62 + SVProgressHUD.setDefaultMaskType(.black)
  63 + AppDelegate.instance().httpServer.getSchoolTypes { (str, error) in
  64 + SVProgressHUD.dismiss()
  65 + if error==nil {
  66 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  67 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  68 + for item in JSON.fromString(jsonString: str)!["data"].arrayValue {
  69 + self.dataSchoolSection.append(SchoolSection(j: item))
  70 + }
  71 + }, failHandler: { (error) in
  72 + self.view.makeToast("获取学段失败:\(error.localizedDescription)")
  73 + })
  74 + }else{
  75 + self.view.makeToast("获取学段失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
  76 + }
  77 + }else{
  78 + self.view.makeToast("获取学段失败:\(error!.description)")
  79 + }
  80 + let filterView=Bundle.main.loadNibNamed("FilterView", owner: nil, options: nil)![0] as! FilterView
  81 + filterView.frame.size=CGSize(width: getScreenWidth(), height: 60+(getScreenWidth()-80)/12)
  82 + filterView.delegate=self
  83 + filterView.tag=0
  84 + filterView.setUpWithItems(title: self.nameAry[0], array: self.dataSchoolSection)
  85 + if self.dataSchoolSection.count>0{
  86 + filterView.selected=0
  87 + self.type.schoolSection=self.dataSchoolSection[0].f_Id
  88 + }
  89 + self.scrollContentView.addArrangedSubview(filterView)
  90 + filterView.translatesAutoresizingMaskIntoConstraints=false
  91 + filterView.addConstraint(NSLayoutConstraint(item: filterView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 60+(getScreenWidth()-80)/12))
  92 + for i in 1..<3{
  93 + let filterView=Bundle.main.loadNibNamed("FilterView", owner: nil, options: nil)![0] as! FilterView
  94 + filterView.frame.size=CGSize(width: getScreenWidth(), height: 60+(getScreenWidth()-80)/12)
  95 + filterView.delegate=self
  96 + filterView.tag=i
  97 + filterView.setUpWithItems(title: self.nameAry[i], array: [])
  98 + self.scrollContentView.addArrangedSubview(filterView)
  99 + filterView.translatesAutoresizingMaskIntoConstraints=false
  100 + filterView.addConstraint(NSLayoutConstraint(item: filterView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 60+(getScreenWidth()-80)/12))
  101 + }
  102 + if self.dataSchoolSection.count>0{
  103 + self.getGradeWithSchoolSectionID(id: self.dataSchoolSection[0].f_Id, index: 2)
  104 + }
  105 + self.getSubjects(index: 3)
  106 + }
  107 + }
  108 + func selectCurrentCount(index: Int,tag:Int) {
  109 + switch tag {
  110 + case 0:
  111 + type.schoolSection=dataSchoolSection[index].f_Id
  112 + getGradeWithSchoolSectionID(id: dataSchoolSection[index].f_Id, index: 2)
  113 + case 1:
  114 + type.grade=dataGrade[index].f_Id
  115 + case 2:
  116 + type.subject=dataSubject[index].f_Id
  117 + case 3: break
  118 +
  119 + default: break
  120 +
  121 + }
  122 + }
  123 + //请求年级 并刷新
  124 + func getGradeWithSchoolSectionID(id:String,index:Int){
  125 + SVProgressHUD.show(withStatus: "获取年级...")
  126 + SVProgressHUD.setDefaultMaskType(.black)
  127 + AppDelegate.instance().httpServer.getGrades(parameters: ["schooltypeid":id as AnyObject]) { (str, error) in
  128 + SVProgressHUD.dismiss()
  129 + self.dataGrade.removeAll()
  130 + if error==nil {
  131 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  132 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  133 + for item in JSON.fromString(jsonString: str)!["data"].arrayValue {
  134 + self.dataGrade.append(Grade(j: item))
  135 + }
  136 + }, failHandler: { (error) in
  137 + self.view.makeToast("获取年级失败:\(error.localizedDescription)")
  138 + })
  139 + }else{
  140 + self.view.makeToast("获取年级失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
  141 + }
  142 + }else{
  143 + self.view.makeToast("获取年级失败:\(error!.description)")
  144 + }
  145 + self.setupFilterView(index: index, arry: self.dataGrade)
  146 + }
  147 + }
  148 + //请求学科 并刷新
  149 + func getSubjects(index:Int){
  150 + SVProgressHUD.show(withStatus: "获取学科...")
  151 + SVProgressHUD.setDefaultMaskType(.black)
  152 + AppDelegate.instance().httpServer.getSubjects { (str, error) in
  153 + SVProgressHUD.dismiss()
  154 + self.dataSubject.removeAll()
  155 + if error==nil {
  156 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  157 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  158 + for item in JSON.fromString(jsonString: str)!["data"].arrayValue {
  159 + self.dataSubject.append(Subject(j: item))
  160 + }
  161 + }, failHandler: { (error) in
  162 + self.view.makeToast("获取学科失败:\(error.localizedDescription)")
  163 + })
  164 + }else{
  165 + self.view.makeToast("获取学科失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
  166 + }
  167 + }else{
  168 + self.view.makeToast("获取学科失败:\(error!.description)")
  169 + }
  170 + self.setupFilterView(index: index, arry: self.dataSubject)
  171 + }
  172 + }
18 173 override func didReceiveMemoryWarning() {
19 174 super.didReceiveMemoryWarning()
20   - // Dispose of any resources that can be recreated.
21 175 }
22   -
23   -
24   - /*
25   - // MARK: - Navigation
26   -
27   - // In a storyboard-based application, you will often want to do a little preparation before navigation
28   - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
29   - // Get the new view controller using segue.destinationViewController.
30   - // Pass the selected object to the new view controller.
  176 + // MARK: - 销毁通知
  177 + deinit {
  178 + NotificationCenter.default.removeObserver(self)
  179 + }
  180 +}
  181 +class FilterParameter:NSObject {
  182 + var schoolSection:String? //学段
  183 + var grade:String? //年级
  184 + var subject:String? //学科
  185 + var materials:String? //教材
  186 + override init() {
  187 +
  188 + }
  189 +}
  190 +class filterModel:NSObject{
  191 + var f_Id:String=""
  192 + var f_DeleteMark:Bool=false
  193 + var f_CreatorTime:String=""
  194 + var f_CreatorUserId:String=""
  195 + var f_LastModifyTime:String=""
  196 + var f_LastModifyUserId:String=""
  197 + var f_DeleteTime:String=""
  198 + var f_DeleteUserId:String=""
  199 + init(j:JSON) {
  200 + f_Id=j["f_Id"].stringValue
  201 + f_DeleteMark=j["f_DeleteMark"].boolValue
  202 + f_CreatorTime=j["f_CreatorTime"].stringValue
  203 + f_CreatorUserId=j["f_CreatorUserId"].stringValue
  204 + f_LastModifyTime=j["f_LastModifyTime"].stringValue
  205 + f_LastModifyUserId=j["f_LastModifyUserId"].stringValue
  206 + f_DeleteTime=j["f_DeleteTime"].stringValue
  207 + f_DeleteUserId=j["f_DeleteUserId"].stringValue
  208 + }
  209 +}
  210 +class SchoolSection: filterModel {
  211 + var f_SchoolType:String=""
  212 + override init(j:JSON) {
  213 + super.init(j: j)
  214 + f_SchoolType=j["f_SchoolType"].stringValue
  215 + }
  216 +}
  217 +class Grade: filterModel {
  218 + var f_GradeName:String=""
  219 + override init(j:JSON) {
  220 + super.init(j: j)
  221 + f_GradeName=j["f_GradeName"].stringValue
  222 + }
  223 +}
  224 +class Subject: filterModel {
  225 + var f_SubjectName:String=""
  226 + override init(j:JSON) {
  227 + super.init(j: j)
  228 + f_SubjectName=j["f_SubjectName"].stringValue
31 229 }
32   - */
33   -
34 230 }
... ...
YouerLiveVideo/YouerLiveVideo/controllers/Resource/Resource.storyboard
... ... @@ -9,10 +9,10 @@
9 9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 10 </dependencies>
11 11 <scenes>
12   - <!--Filter View Controller-->
  12 + <!--筛选-->
13 13 <scene sceneID="Rmv-Eo-NBi">
14 14 <objects>
15   - <viewController storyboardIdentifier="FilterViewController" hidesBottomBarWhenPushed="YES" id="J51-bf-ysq" customClass="FilterViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  15 + <viewController storyboardIdentifier="FilterViewController" title="筛选" automaticallyAdjustsScrollViewInsets="NO" hidesBottomBarWhenPushed="YES" id="J51-bf-ysq" customClass="FilterViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
16 16 <layoutGuides>
17 17 <viewControllerLayoutGuide type="top" id="8Fm-xC-jSr"/>
18 18 <viewControllerLayoutGuide type="bottom" id="bXh-Wr-qy6"/>
... ... @@ -20,13 +20,64 @@
20 20 <view key="view" contentMode="scaleToFill" id="ao2-Oa-iAS">
21 21 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
22 22 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  23 + <subviews>
  24 + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IYF-5b-c3m">
  25 + <rect key="frame" x="0.0" y="64" width="375" height="603"/>
  26 + <subviews>
  27 + <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="KvN-Pb-Nub">
  28 + <rect key="frame" x="0.0" y="0.0" width="375" height="1"/>
  29 + <subviews>
  30 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="65A-no-dyJ">
  31 + <rect key="frame" x="0.0" y="0.0" width="375" height="1"/>
  32 + <constraints>
  33 + <constraint firstAttribute="height" constant="1" id="xkQ-5h-BMe"/>
  34 + </constraints>
  35 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  36 + <nil key="textColor"/>
  37 + <nil key="highlightedColor"/>
  38 + </label>
  39 + </subviews>
  40 + <color key="backgroundColor" red="0.98431372549999996" green="0.53333333329999999" blue="0.16078431369999999" alpha="1" colorSpace="calibratedRGB"/>
  41 + <constraints>
  42 + <constraint firstAttribute="trailing" secondItem="65A-no-dyJ" secondAttribute="trailing" id="54Y-dd-gNq"/>
  43 + <constraint firstItem="65A-no-dyJ" firstAttribute="top" secondItem="KvN-Pb-Nub" secondAttribute="top" id="ATk-pq-QJJ"/>
  44 + <constraint firstItem="65A-no-dyJ" firstAttribute="leading" secondItem="KvN-Pb-Nub" secondAttribute="leading" id="l5s-Ax-axE"/>
  45 + </constraints>
  46 + </stackView>
  47 + </subviews>
  48 + <constraints>
  49 + <constraint firstItem="KvN-Pb-Nub" firstAttribute="leading" secondItem="IYF-5b-c3m" secondAttribute="leading" id="09s-Vs-jBg"/>
  50 + <constraint firstItem="KvN-Pb-Nub" firstAttribute="width" secondItem="IYF-5b-c3m" secondAttribute="width" id="5wf-4c-5Xd"/>
  51 + <constraint firstItem="KvN-Pb-Nub" firstAttribute="top" secondItem="IYF-5b-c3m" secondAttribute="top" id="LQM-Ax-Q3o"/>
  52 + <constraint firstItem="KvN-Pb-Nub" firstAttribute="centerX" secondItem="IYF-5b-c3m" secondAttribute="centerX" id="QaL-zJ-Vej"/>
  53 + <constraint firstAttribute="trailing" secondItem="KvN-Pb-Nub" secondAttribute="trailing" id="sRO-Ai-dtq"/>
  54 + <constraint firstAttribute="bottom" secondItem="KvN-Pb-Nub" secondAttribute="bottom" id="ygU-WM-4eC"/>
  55 + </constraints>
  56 + </scrollView>
  57 + </subviews>
23 58 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  59 + <constraints>
  60 + <constraint firstItem="bXh-Wr-qy6" firstAttribute="top" secondItem="IYF-5b-c3m" secondAttribute="bottom" id="4Fj-ek-MrC"/>
  61 + <constraint firstItem="IYF-5b-c3m" firstAttribute="leading" secondItem="ao2-Oa-iAS" secondAttribute="leading" id="Gw1-De-QXC"/>
  62 + <constraint firstAttribute="trailing" secondItem="IYF-5b-c3m" secondAttribute="trailing" id="lOu-N7-px1"/>
  63 + <constraint firstItem="IYF-5b-c3m" firstAttribute="top" secondItem="8Fm-xC-jSr" secondAttribute="bottom" id="r8a-fu-6SW"/>
  64 + </constraints>
24 65 </view>
  66 + <navigationItem key="navigationItem" title="筛选" id="XhF-gh-xmO">
  67 + <barButtonItem key="rightBarButtonItem" title="取消" id="sh5-cw-Jab">
  68 + <connections>
  69 + <action selector="dismissAction:" destination="J51-bf-ysq" id="nh3-AE-6cX"/>
  70 + </connections>
  71 + </barButtonItem>
  72 + </navigationItem>
25 73 <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
  74 + <connections>
  75 + <outlet property="scrollContentView" destination="KvN-Pb-Nub" id="NiI-XK-4DK"/>
  76 + </connections>
26 77 </viewController>
27 78 <placeholder placeholderIdentifier="IBFirstResponder" id="ocM-s7-Wga" userLabel="First Responder" sceneMemberID="firstResponder"/>
28 79 </objects>
29   - <point key="canvasLocation" x="-737" y="266"/>
  80 + <point key="canvasLocation" x="-738.39999999999998" y="265.81709145427288"/>
30 81 </scene>
31 82 <!--Live Infor View Controller-->
32 83 <scene sceneID="QrF-a4-VNS">
... ...
YouerLiveVideo/YouerLiveVideo/controllers/Resource/ResourceViewController.swift
... ... @@ -107,7 +107,7 @@ class ResourceViewController: UIViewController,UITableViewDelegate,UITableViewDa
107 107 // MARK: - 跳转到筛选
108 108 @IBAction func jumpFilterVCAction(_ sender: UIButton) {
109 109 let vc = UIStoryboard(name: "Resource", bundle: nil).instantiateViewController(withIdentifier: "FilterViewController") as! FilterViewController
110   - self.navigationController?.pushViewController(vc, animated: true)
  110 + self.present(vc.wrapWithNavigationController(), animated: true, completion: nil)
111 111 }
112 112  
113 113 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
... ...
YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterCollectionViewCell.swift 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +//
  2 +// FilterCollectionViewCell.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 葛建军 on 17/5/23.
  6 +// Copyright © 2017年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class FilterCollectionViewCell: UICollectionViewCell {
  12 +
  13 + @IBOutlet var titleLabel: UILabel!
  14 + override func awakeFromNib() {
  15 + super.awakeFromNib()
  16 + // Initialization code
  17 + }
  18 +
  19 +}
... ...
YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterCollectionViewCell.xib 0 → 100644
... ... @@ -0,0 +1,48 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
  8 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  9 + </dependencies>
  10 + <objects>
  11 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
  12 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
  13 + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="identifier" id="gTV-IL-0wX" customClass="FilterCollectionViewCell" customModule="YouerLiveVideo" customModuleProvider="target">
  14 + <rect key="frame" x="0.0" y="0.0" width="120" height="40"/>
  15 + <autoresizingMask key="autoresizingMask"/>
  16 + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
  17 + <rect key="frame" x="0.0" y="0.0" width="120" height="40"/>
  18 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  19 + <subviews>
  20 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="小学" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F0D-46-jda">
  21 + <rect key="frame" x="0.0" y="0.0" width="120" height="40"/>
  22 + <color key="backgroundColor" red="0.10980392160000001" green="0.63529411759999999" blue="1" alpha="1" colorSpace="calibratedRGB"/>
  23 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  24 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  25 + <nil key="highlightedColor"/>
  26 + <userDefinedRuntimeAttributes>
  27 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  28 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  29 + <integer key="value" value="5"/>
  30 + </userDefinedRuntimeAttribute>
  31 + </userDefinedRuntimeAttributes>
  32 + </label>
  33 + </subviews>
  34 + </view>
  35 + <constraints>
  36 + <constraint firstItem="F0D-46-jda" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="33t-wF-LMs"/>
  37 + <constraint firstAttribute="trailing" secondItem="F0D-46-jda" secondAttribute="trailing" id="M5r-RT-2BD"/>
  38 + <constraint firstAttribute="bottom" secondItem="F0D-46-jda" secondAttribute="bottom" id="NdF-Eb-c7u"/>
  39 + <constraint firstItem="F0D-46-jda" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="TNg-FI-q5K"/>
  40 + </constraints>
  41 + <size key="customSize" width="122" height="38"/>
  42 + <connections>
  43 + <outlet property="titleLabel" destination="F0D-46-jda" id="CGy-n4-6ma"/>
  44 + </connections>
  45 + <point key="canvasLocation" x="-80" y="-77"/>
  46 + </collectionViewCell>
  47 + </objects>
  48 +</document>
... ...
YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterView.swift 0 → 100644
... ... @@ -0,0 +1,93 @@
  1 +//
  2 +// FilterView.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 葛建军 on 17/5/23.
  6 +// Copyright © 2017年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class FilterView: UIView,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {
  12 + @IBOutlet var titleLabel: UILabel!
  13 + @IBOutlet var collectionView: UICollectionView!
  14 + var isOpen:Bool=false
  15 + var dataAry:[filterModel]=[]
  16 + var delegate:FilterViewDelegate!
  17 + var selected:Int = -1
  18 + var numberLines:Int!
  19 + var cellWidth=(getScreenWidth()-80)/3
  20 + var cellHeight=(getScreenWidth()-80)/12
  21 + override func awakeFromNib() {
  22 + super.awakeFromNib()
  23 + collectionView.register(UINib(nibName: "FilterCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "identifier")
  24 + }
  25 + func setUpWithItems(title:String,array:[filterModel]) {
  26 + titleLabel.text=title
  27 + dataAry=array
  28 + numberLines = array.count%3 > 0 ? array.count/3+1 : array.count/3
  29 + self.collectionView.reloadData()
  30 + }
  31 + func changeItems(array:[filterModel]){
  32 + dataAry=array
  33 + numberLines = array.count%3 > 0 ? array.count/3+1 : array.count/3
  34 + self.collectionView.reloadData()
  35 + }
  36 + @IBAction func openOrCloseAction(_ sender: UIButton) {
  37 + if isOpen {
  38 + isOpen=false
  39 + self.constraints.last!.constant=60+cellHeight
  40 + }else{
  41 + if dataAry.count>3{
  42 + isOpen=true
  43 + self.constraints.last!.constant=60+cellHeight+CGFloat(numberLines-1)*(cellHeight+10)
  44 + self.collectionView.reloadData()
  45 + }
  46 + }
  47 + }
  48 + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
  49 + return CGSize(width: cellWidth, height: cellHeight)
  50 + }
  51 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
  52 + let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "identifier", for: indexPath) as! FilterCollectionViewCell
  53 + switch self.tag {
  54 + case 0:
  55 + cell.titleLabel.text=(dataAry as! [SchoolSection])[indexPath.row].f_SchoolType
  56 + case 1:
  57 + cell.titleLabel.text=(dataAry as! [Grade])[indexPath.row].f_GradeName
  58 + case 2:
  59 + cell.titleLabel.text=(dataAry as! [Subject])[indexPath.row].f_SubjectName
  60 + default:
  61 + cell.titleLabel.text="未知"
  62 + }
  63 + if indexPath.row==selected {
  64 + cell.titleLabel.backgroundColor=Theme.topBarColor()
  65 + cell.titleLabel.textColor=UIColor.white
  66 + }else{
  67 + cell.titleLabel.backgroundColor=UIColor.groupTableViewBackground
  68 + cell.titleLabel.textColor=UIColor.black
  69 + }
  70 + return cell
  71 + }
  72 + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  73 + if isOpen {
  74 + return dataAry.count
  75 + }else{
  76 + if dataAry.count<4 {
  77 + return dataAry.count
  78 + }else{
  79 + return 3
  80 + }
  81 + }
  82 + }
  83 + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
  84 + if selected != indexPath.row {
  85 + selected=indexPath.row
  86 + self.delegate.selectCurrentCount(index: indexPath.row, tag: self.tag)
  87 + self.collectionView.reloadData()
  88 + }
  89 + }
  90 +}
  91 +protocol FilterViewDelegate {
  92 + func selectCurrentCount(index:Int,tag:Int)
  93 +}
... ...
YouerLiveVideo/YouerLiveVideo/controllers/Resource/View/FilterView.xib 0 → 100644
... ... @@ -0,0 +1,98 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
  8 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  9 + </dependencies>
  10 + <objects>
  11 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
  12 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
  13 + <view clipsSubviews="YES" contentMode="scaleToFill" id="iN0-l3-epB" customClass="FilterView" customModule="YouerLiveVideo" customModuleProvider="target">
  14 + <rect key="frame" x="0.0" y="0.0" width="406" height="242"/>
  15 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  16 + <subviews>
  17 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学段" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uQz-xV-iAD">
  18 + <rect key="frame" x="20" y="10" width="33" height="20"/>
  19 + <fontDescription key="fontDescription" type="system" pointSize="16"/>
  20 + <nil key="textColor"/>
  21 + <nil key="highlightedColor"/>
  22 + </label>
  23 + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="PUk-bf-FTI">
  24 + <rect key="frame" x="20" y="40" width="366" height="182"/>
  25 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  26 + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="0.0" id="CMD-Fw-Sjo">
  27 + <size key="itemSize" width="50" height="50"/>
  28 + <size key="headerReferenceSize" width="0.0" height="0.0"/>
  29 + <size key="footerReferenceSize" width="0.0" height="0.0"/>
  30 + <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
  31 + </collectionViewFlowLayout>
  32 + <connections>
  33 + <outlet property="dataSource" destination="iN0-l3-epB" id="ESV-a0-hCq"/>
  34 + <outlet property="delegate" destination="iN0-l3-epB" id="RXH-fJ-Hll"/>
  35 + </connections>
  36 + </collectionView>
  37 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cif-Vg-cMI">
  38 + <rect key="frame" x="336" y="0.0" width="50" height="34"/>
  39 + <subviews>
  40 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xgp-Yj-rju">
  41 + <rect key="frame" x="0.0" y="0.0" width="42" height="34"/>
  42 + <fontDescription key="fontDescription" type="system" pointSize="13"/>
  43 + <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
  44 + <nil key="highlightedColor"/>
  45 + </label>
  46 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="Yi5-oE-p54">
  47 + <rect key="frame" x="42" y="10" width="8" height="15"/>
  48 + <constraints>
  49 + <constraint firstAttribute="width" constant="8" id="8pU-3b-hVL"/>
  50 + <constraint firstAttribute="height" constant="15" id="YoR-To-kNi"/>
  51 + </constraints>
  52 + </imageView>
  53 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vFg-ez-6yB">
  54 + <rect key="frame" x="0.0" y="0.0" width="50" height="34"/>
  55 + <connections>
  56 + <action selector="openOrCloseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="enY-8P-rHR"/>
  57 + </connections>
  58 + </button>
  59 + </subviews>
  60 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  61 + <constraints>
  62 + <constraint firstAttribute="bottom" secondItem="Xgp-Yj-rju" secondAttribute="bottom" id="5pX-4I-aV1"/>
  63 + <constraint firstAttribute="trailing" secondItem="vFg-ez-6yB" secondAttribute="trailing" id="8oA-tR-a9S"/>
  64 + <constraint firstAttribute="bottom" secondItem="vFg-ez-6yB" secondAttribute="bottom" id="8pE-Nx-jdY"/>
  65 + <constraint firstItem="Xgp-Yj-rju" firstAttribute="leading" secondItem="cif-Vg-cMI" secondAttribute="leading" id="Acg-vU-eDj"/>
  66 + <constraint firstItem="vFg-ez-6yB" firstAttribute="top" secondItem="cif-Vg-cMI" secondAttribute="top" id="EGn-rn-FhX"/>
  67 + <constraint firstItem="Yi5-oE-p54" firstAttribute="leading" secondItem="Xgp-Yj-rju" secondAttribute="trailing" id="EU8-pp-uj6"/>
  68 + <constraint firstItem="Yi5-oE-p54" firstAttribute="centerY" secondItem="cif-Vg-cMI" secondAttribute="centerY" id="dI6-h0-ve2"/>
  69 + <constraint firstAttribute="width" constant="50" id="gp7-jN-cTr"/>
  70 + <constraint firstItem="Xgp-Yj-rju" firstAttribute="top" secondItem="cif-Vg-cMI" secondAttribute="top" id="mKd-KO-MU9"/>
  71 + <constraint firstItem="vFg-ez-6yB" firstAttribute="leading" secondItem="cif-Vg-cMI" secondAttribute="leading" id="oQy-yz-nC5"/>
  72 + <constraint firstAttribute="trailing" secondItem="Yi5-oE-p54" secondAttribute="trailing" id="qP2-LK-MJS"/>
  73 + </constraints>
  74 + </view>
  75 + </subviews>
  76 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  77 + <constraints>
  78 + <constraint firstItem="uQz-xV-iAD" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="5ZE-95-bk1"/>
  79 + <constraint firstAttribute="bottom" secondItem="PUk-bf-FTI" secondAttribute="bottom" constant="20" id="8xy-ni-fOt"/>
  80 + <constraint firstAttribute="trailing" secondItem="cif-Vg-cMI" secondAttribute="trailing" constant="20" id="DPa-oT-ZVi"/>
  81 + <constraint firstItem="PUk-bf-FTI" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" id="MAr-8E-ipy"/>
  82 + <constraint firstItem="PUk-bf-FTI" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="40" id="NkW-cH-ltZ"/>
  83 + <constraint firstAttribute="trailing" secondItem="PUk-bf-FTI" secondAttribute="trailing" constant="20" id="fwr-U1-zDh"/>
  84 + <constraint firstItem="uQz-xV-iAD" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" id="gNr-Pg-F54"/>
  85 + <constraint firstItem="cif-Vg-cMI" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="kKV-TT-4Ov"/>
  86 + </constraints>
  87 + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
  88 + <connections>
  89 + <outlet property="collectionView" destination="PUk-bf-FTI" id="lcH-DQ-bM9"/>
  90 + <outlet property="titleLabel" destination="uQz-xV-iAD" id="in8-lv-Coj"/>
  91 + </connections>
  92 + <point key="canvasLocation" x="4" y="-317"/>
  93 + </view>
  94 + </objects>
  95 + <resources>
  96 + <image name="icon_more" width="8" height="14"/>
  97 + </resources>
  98 +</document>
... ...
YouerLiveVideo/YouerLiveVideo/controllers/User/UserCenter/RegisterViewController.swift
... ... @@ -85,7 +85,7 @@ class RegisterViewController: UIViewController,UIAlertViewDelegate,UIImagePicker
85 85 if inputVerificationCode.text!.characters.count == 4{
86 86 SVProgressHUD.show(withStatus: "注册...")
87 87 SVProgressHUD.setDefaultMaskType(.black)
88   - let parameters:Dictionary<String,AnyObject>=["account":phoneNumber.text! as AnyObject,"password":passwordTextField.text! as AnyObject,"vercode":inputVerificationCode.text! as AnyObject,"nickname": (nikeNameTextFiled.text!=="" ? phoneNumber.text! : nikeNameTextFiled.text!) as AnyObject]
  88 + let parameters:Dictionary<String,AnyObject>=["account":phoneNumber.text! as AnyObject,"password":passwordTextField.text!.md5() as AnyObject,"vercode":inputVerificationCode.text! as AnyObject,"nickname": (nikeNameTextFiled.text!=="" ? phoneNumber.text! : nikeNameTextFiled.text!) as AnyObject]
89 89 AppDelegate.instance().httpServer.getCreateUser(parameters: parameters) { (str, error) in
90 90 SVProgressHUD.dismiss()
91 91 self.nikeNameTextFiled.isUserInteractionEnabled=true
... ... @@ -95,7 +95,7 @@ class RegisterViewController: UIViewController,UIAlertViewDelegate,UIImagePicker
95 95 if error==nil {
96 96 if JSON.fromString(jsonString: str)!["status"].intValue == 1{
97 97 httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
98   - self.navigationController!.popToRootViewController(animated: true)
  98 + self.navigationController!.dismiss(animated: true, completion: nil)
99 99 AppDelegate.instance().window?.makeToast("注册成功")
100 100 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "refreshLoginUser"), object: self.phoneNumber.text!)
101 101 //是否登录
... ...
YouerLiveVideo/YouerLiveVideo/controllers/User/UserCenter/User.storyboard
... ... @@ -78,7 +78,6 @@
78 78 </imageView>
79 79 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入账号" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="IzH-dB-I9H">
80 80 <rect key="frame" x="36" y="18.5" width="339" height="19"/>
81   - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
82 81 <fontDescription key="fontDescription" type="system" pointSize="13"/>
83 82 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
84 83 <connections>
... ... @@ -121,7 +120,6 @@
121 120 </imageView>
122 121 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="nVn-EA-yWM">
123 122 <rect key="frame" x="36" y="18.5" width="339" height="19"/>
124   - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
125 123 <fontDescription key="fontDescription" type="system" pointSize="13"/>
126 124 <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
127 125 <connections>
... ... @@ -551,7 +549,7 @@
551 549 <nil key="highlightedColor"/>
552 550 </label>
553 551 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入手机号码 " minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="nVJ-81-bXY">
554   - <rect key="frame" x="89" y="18.5" width="123.5" height="19"/>
  552 + <rect key="frame" x="89" y="19" width="177" height="19"/>
555 553 <fontDescription key="fontDescription" type="system" pointSize="15"/>
556 554 <textInputTraits key="textInputTraits" keyboardType="numberPad" returnKeyType="done"/>
557 555 <connections>
... ... @@ -561,6 +559,9 @@
561 559 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hwv-0n-dsf">
562 560 <rect key="frame" x="274" y="13" width="93" height="30"/>
563 561 <color key="backgroundColor" red="0.10980392160000001" green="0.63529411759999999" blue="1" alpha="1" colorSpace="calibratedRGB"/>
  562 + <constraints>
  563 + <constraint firstAttribute="width" constant="93" id="tn3-0t-fnt"/>
  564 + </constraints>
564 565 <fontDescription key="fontDescription" type="system" pointSize="15"/>
565 566 <state key="normal" title=" 发送验证码 ">
566 567 <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
... ... @@ -586,6 +587,7 @@
586 587 <constraint firstAttribute="trailing" secondItem="hwv-0n-dsf" secondAttribute="trailing" constant="8" id="jCe-9b-HiL"/>
587 588 <constraint firstItem="hwv-0n-dsf" firstAttribute="centerY" secondItem="vkP-pb-ydp" secondAttribute="centerY" id="mgL-oA-0oG"/>
588 589 <constraint firstAttribute="trailing" secondItem="MEf-rE-fBh" secondAttribute="trailing" id="nEG-6h-NXY"/>
  590 + <constraint firstItem="hwv-0n-dsf" firstAttribute="leading" secondItem="nVJ-81-bXY" secondAttribute="trailing" constant="8" id="u7R-Pm-UM9"/>
589 591 <constraint firstAttribute="bottom" secondItem="MEf-rE-fBh" secondAttribute="bottom" id="y9Q-1X-3wy"/>
590 592 <constraint firstItem="nVJ-81-bXY" firstAttribute="leading" secondItem="ae8-Wz-CYH" secondAttribute="trailing" constant="8" id="zxS-jB-eC8"/>
591 593 </constraints>
... ... @@ -738,7 +740,7 @@
738 740 </connections>
739 741 </tapGestureRecognizer>
740 742 </objects>
741   - <point key="canvasLocation" x="-1446" y="1533"/>
  743 + <point key="canvasLocation" x="-1447.2" y="1532.3838080959522"/>
742 744 </scene>
743 745 <!--注册-->
744 746 <scene sceneID="fjB-PO-uzD">
... ...
YouerLiveVideo/YouerLiveVideo/util/network.swift
... ... @@ -228,12 +228,12 @@ final class HTTPServer{
228 228 KHttp.GET(url: HTTPServer.URL_COMMONGETCOURSEWAREVERSIONS, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
229 229 }
230 230 //获取学科
231   - func getSubjects(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
232   - KHttp.GET(url: HTTPServer.URL_COMMONGETSUBJECTS, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
  231 + func getSubjects(completionHandler:@escaping (String?, NSError?) -> ()){
  232 + KHttp.GET(url: HTTPServer.URL_COMMONGETSUBJECTS, headers:["Authorization":token!], completionHandler: completionHandler)
233 233 }
234 234 //获取学段
235   - func getSchoolTypes(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
236   - KHttp.GET(url: HTTPServer.URL_COMMONGETSCHOOLTYPES, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
  235 + func getSchoolTypes(completionHandler:@escaping (String?, NSError?) -> ()){
  236 + KHttp.GET(url: HTTPServer.URL_COMMONGETSCHOOLTYPES, headers:["Authorization":token!], completionHandler: completionHandler)
237 237 }
238 238 //获取轮播图 type:0-视频云前端轮播图 1-校园电视台轮播图
239 239 func getLunboList(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
... ...