Commit 69c7c256d8475191cb24fe417e375024c5429b35

Authored by 葛建军
1 parent 37b548f9
Exists in newLive

no message

Showing 52 changed files with 2224 additions and 10722 deletions   Show diff stats
YouerLiveVideo/YouerLiveVideo.xcodeproj/project.pbxproj
@@ -14,12 +14,8 @@ @@ -14,12 +14,8 @@
14 5904FC511ECA8B8C00E631FF /* TVStationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC4B1ECA8B8C00E631FF /* TVStationViewController.swift */; }; 14 5904FC511ECA8B8C00E631FF /* TVStationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC4B1ECA8B8C00E631FF /* TVStationViewController.swift */; };
15 5904FC531ECA8BB500E631FF /* MicroCourse.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5904FC521ECA8BB500E631FF /* MicroCourse.storyboard */; }; 15 5904FC531ECA8BB500E631FF /* MicroCourse.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5904FC521ECA8BB500E631FF /* MicroCourse.storyboard */; };
16 5904FC551ECA8BCB00E631FF /* HomePage.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5904FC541ECA8BCB00E631FF /* HomePage.storyboard */; }; 16 5904FC551ECA8BCB00E631FF /* HomePage.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5904FC541ECA8BCB00E631FF /* HomePage.storyboard */; };
17 - 5904FC591ECA8C0000E631FF /* UserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC581ECA8C0000E631FF /* UserViewController.swift */; };  
18 - 5904FC5B1ECA8C0900E631FF /* User.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5904FC5A1ECA8C0900E631FF /* User.storyboard */; };  
19 5904FC5D1ECA8ED400E631FF /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC5C1ECA8ED400E631FF /* HomePageViewController.swift */; }; 17 5904FC5D1ECA8ED400E631FF /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC5C1ECA8ED400E631FF /* HomePageViewController.swift */; };
20 5904FC611ECA930D00E631FF /* MViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC601ECA930D00E631FF /* MViewController.swift */; }; 18 5904FC611ECA930D00E631FF /* MViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC601ECA930D00E631FF /* MViewController.swift */; };
21 - 5906A0741E349FA500D2D814 /* PassWordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5906A0731E349FA500D2D814 /* PassWordView.swift */; };  
22 - 5906A0761E349FB400D2D814 /* PassWordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5906A0751E349FB400D2D814 /* PassWordView.xib */; };  
23 5960263B1DD94D3100C6B5E8 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263A1DD94D3100C6B5E8 /* libsqlite3.tbd */; }; 19 5960263B1DD94D3100C6B5E8 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263A1DD94D3100C6B5E8 /* libsqlite3.tbd */; };
24 5960263D1DD94D5E00C6B5E8 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263C1DD94D5E00C6B5E8 /* libc++.tbd */; }; 20 5960263D1DD94D5E00C6B5E8 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263C1DD94D5E00C6B5E8 /* libc++.tbd */; };
25 5960263F1DD94D7D00C6B5E8 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263E1DD94D7D00C6B5E8 /* ImageIO.framework */; }; 21 5960263F1DD94D7D00C6B5E8 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263E1DD94D7D00C6B5E8 /* ImageIO.framework */; };
@@ -29,7 +25,6 @@ @@ -29,7 +25,6 @@
29 596026501DDD469200C6B5E8 /* RiverRunCommentManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264C1DDD469200C6B5E8 /* RiverRunCommentManager.m */; }; 25 596026501DDD469200C6B5E8 /* RiverRunCommentManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264C1DDD469200C6B5E8 /* RiverRunCommentManager.m */; };
30 596026511DDD469200C6B5E8 /* RiverRunCommentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */; }; 26 596026511DDD469200C6B5E8 /* RiverRunCommentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */; };
31 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 597185B41ECA990C00D7F478 /* Resource.storyboard */; }; 27 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 597185B41ECA990C00D7F478 /* Resource.storyboard */; };
32 - 59893BDF1E2C53E1004E7F81 /* AlivcInforViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59893BDE1E2C53E1004E7F81 /* AlivcInforViewController.swift */; };  
33 598A0E531E51941300273AB8 /* libNIMSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4D1E51941300273AB8 /* libNIMSDK.a */; }; 28 598A0E531E51941300273AB8 /* libNIMSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4D1E51941300273AB8 /* libNIMSDK.a */; };
34 598A0E541E51941300273AB8 /* libaacplus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4F1E51941300273AB8 /* libaacplus.a */; }; 29 598A0E541E51941300273AB8 /* libaacplus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4F1E51941300273AB8 /* libaacplus.a */; };
35 598A0E551E51941300273AB8 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E501E51941300273AB8 /* libcrypto.a */; }; 30 598A0E551E51941300273AB8 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E501E51941300273AB8 /* libcrypto.a */; };
@@ -52,10 +47,8 @@ @@ -52,10 +47,8 @@
52 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CCE1DE52F7E00B4F7FD /* UMShareMenuSelectionView.m */; }; 47 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CCE1DE52F7E00B4F7FD /* UMShareMenuSelectionView.m */; };
53 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */; }; 48 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */; };
54 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */; }; 49 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */; };
55 - 59A8731C1DDD9E0600BAC7FC /* CustomScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59A8731B1DDD9E0500BAC7FC /* CustomScrollView.swift */; };  
56 59BA13251E25CF2B00540DE0 /* AliyunPlayerSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; }; 50 59BA13251E25CF2B00540DE0 /* AliyunPlayerSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; };
57 59BA13271E25CF4B00540DE0 /* AliyunPlayerSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 51 59BA13271E25CF4B00540DE0 /* AliyunPlayerSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
58 - 59BA132D1E25D14F00540DE0 /* MoivePlayerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59BA132C1E25D14F00540DE0 /* MoivePlayerViewController.swift */; };  
59 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 59BA13301E25D1C000540DE0 /* Reachability.m */; }; 52 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 59BA13301E25D1C000540DE0 /* Reachability.m */; };
60 59BA13451E25D8DB00540DE0 /* movieBackward.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13321E25D8DB00540DE0 /* movieBackward.png */; }; 53 59BA13451E25D8DB00540DE0 /* movieBackward.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13321E25D8DB00540DE0 /* movieBackward.png */; };
61 59BA13471E25D8DB00540DE0 /* movieBackwardSelected.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13341E25D8DB00540DE0 /* movieBackwardSelected.png */; }; 54 59BA13471E25D8DB00540DE0 /* movieBackwardSelected.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13341E25D8DB00540DE0 /* movieBackwardSelected.png */; };
@@ -67,7 +60,6 @@ @@ -67,7 +60,6 @@
67 59BA13571E25D8DB00540DE0 /* video_num_front@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13441E25D8DB00540DE0 /* video_num_front@2x.png */; }; 60 59BA13571E25D8DB00540DE0 /* video_num_front@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13441E25D8DB00540DE0 /* video_num_front@2x.png */; };
68 59C25B491ECAD643009FF276 /* MoreTVStationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C25B481ECAD643009FF276 /* MoreTVStationViewController.swift */; }; 61 59C25B491ECAD643009FF276 /* MoreTVStationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C25B481ECAD643009FF276 /* MoreTVStationViewController.swift */; };
69 59C25B4B1ECAD84C009FF276 /* TVStationInforViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C25B4A1ECAD84C009FF276 /* TVStationInforViewController.swift */; }; 62 59C25B4B1ECAD84C009FF276 /* TVStationInforViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C25B4A1ECAD84C009FF276 /* TVStationInforViewController.swift */; };
70 - 59C25B4D1ECAFAFC009FF276 /* NavigationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C25B4C1ECAFAFC009FF276 /* NavigationViewController.swift */; };  
71 59DB1C781E792E5900EA2FC4 /* 开始直播.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C771E792E5900EA2FC4 /* 开始直播.png */; }; 63 59DB1C781E792E5900EA2FC4 /* 开始直播.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C771E792E5900EA2FC4 /* 开始直播.png */; };
72 59DB1C7A1E793DA700EA2FC4 /* 标签.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C791E793DA700EA2FC4 /* 标签.png */; }; 64 59DB1C7A1E793DA700EA2FC4 /* 标签.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C791E793DA700EA2FC4 /* 标签.png */; };
73 59DB1C7C1E793E0E00EA2FC4 /* 视窗.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C7B1E793E0E00EA2FC4 /* 视窗.png */; }; 65 59DB1C7C1E793E0E00EA2FC4 /* 视窗.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C7B1E793E0E00EA2FC4 /* 视窗.png */; };
@@ -84,11 +76,6 @@ @@ -84,11 +76,6 @@
84 59F8016E1DD2E5F1000A78B0 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F8016D1DD2E5F1000A78B0 /* SystemConfiguration.framework */; }; 76 59F8016E1DD2E5F1000A78B0 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F8016D1DD2E5F1000A78B0 /* SystemConfiguration.framework */; };
85 59F801701DD2E5FB000A78B0 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F8016F1DD2E5FB000A78B0 /* CoreTelephony.framework */; }; 77 59F801701DD2E5FB000A78B0 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F8016F1DD2E5FB000A78B0 /* CoreTelephony.framework */; };
86 59F801851DD45EDC000A78B0 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F801841DD45EDC000A78B0 /* Photos.framework */; }; 78 59F801851DD45EDC000A78B0 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F801841DD45EDC000A78B0 /* Photos.framework */; };
87 - 59F801971DD567C7000A78B0 /* AlivcLiveViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F801941DD567C7000A78B0 /* AlivcLiveViewController.m */; };  
88 - 59F801981DD567C7000A78B0 /* AlivcLiveViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 59F801951DD567C7000A78B0 /* AlivcLiveViewController.xib */; };  
89 - 59F801991DD567C7000A78B0 /* LiveVideoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59F801961DD567C7000A78B0 /* LiveVideoViewController.swift */; };  
90 - 59F801A21DD567D8000A78B0 /* MyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59F8019B1DD567D8000A78B0 /* MyViewController.swift */; };  
91 - 59F801A61DD567D8000A78B0 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59F8019F1DD567D8000A78B0 /* MainViewController.swift */; };  
92 59F801AB1DD57253000A78B0 /* ZSDSetPasswordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */; }; 79 59F801AB1DD57253000A78B0 /* ZSDSetPasswordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */; };
93 BF25DFE21DDAA36A003EC0C1 /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF25DFA01DDAA36A003EC0C1 /* AFError.swift */; }; 80 BF25DFE21DDAA36A003EC0C1 /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF25DFA01DDAA36A003EC0C1 /* AFError.swift */; };
94 BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF25DFA21DDAA36A003EC0C1 /* Alamofire.swift */; }; 81 BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF25DFA21DDAA36A003EC0C1 /* Alamofire.swift */; };
@@ -149,8 +136,6 @@ @@ -149,8 +136,6 @@
149 BF6977971E2DEC98006FA934 /* loginBackGround.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977941E2DEC98006FA934 /* loginBackGround.png */; }; 136 BF6977971E2DEC98006FA934 /* loginBackGround.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977941E2DEC98006FA934 /* loginBackGround.png */; };
150 BF6977981E2DEC98006FA934 /* userId.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977951E2DEC98006FA934 /* userId.png */; }; 137 BF6977981E2DEC98006FA934 /* userId.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977951E2DEC98006FA934 /* userId.png */; };
151 BF6977991E2DEC98006FA934 /* userPassword.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977961E2DEC98006FA934 /* userPassword.png */; }; 138 BF6977991E2DEC98006FA934 /* userPassword.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977961E2DEC98006FA934 /* userPassword.png */; };
152 - BF69779B1E2DEFCF006FA934 /* LiveListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF69779A1E2DEFCF006FA934 /* LiveListViewController.swift */; };  
153 - BF7B271E1E2F022E00BCF13D /* MyAttentionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7B271D1E2F022E00BCF13D /* MyAttentionViewController.swift */; };  
154 BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */; }; 139 BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */; };
155 BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756C1E305A6D0011D5C7 /* MJRefreshBackFooter.m */; }; 140 BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756C1E305A6D0011D5C7 /* MJRefreshBackFooter.m */; };
156 BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756E1E305A6D0011D5C7 /* MJRefreshComponent.m */; }; 141 BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756E1E305A6D0011D5C7 /* MJRefreshComponent.m */; };
@@ -171,42 +156,25 @@ @@ -171,42 +156,25 @@
171 BF7B75A71E305A6D0011D5C7 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75911E305A6D0011D5C7 /* UIScrollView+MJExtension.m */; }; 156 BF7B75A71E305A6D0011D5C7 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75911E305A6D0011D5C7 /* UIScrollView+MJExtension.m */; };
172 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */; }; 157 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */; };
173 BF7B75A91E305A6D0011D5C7 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75951E305A6D0011D5C7 /* UIView+MJExtension.m */; }; 158 BF7B75A91E305A6D0011D5C7 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75951E305A6D0011D5C7 /* UIView+MJExtension.m */; };
174 - BF7B75AE1E309F230011D5C7 /* AttentionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75AC1E309F230011D5C7 /* AttentionTableViewCell.swift */; };  
175 - BF7B75AF1E309F230011D5C7 /* AttentionTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF7B75AD1E309F230011D5C7 /* AttentionTableViewCell.xib */; };  
176 - BF7B75B11E31E3200011D5C7 /* LiveTypeListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75B01E31E3200011D5C7 /* LiveTypeListViewController.swift */; };  
177 - BF8A4C551DE02CE300F99896 /* MessageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8A4C531DE02CE300F99896 /* MessageTableViewCell.swift */; };  
178 - BF8A4C561DE02CE300F99896 /* MessageTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF8A4C541DE02CE300F99896 /* MessageTableViewCell.xib */; };  
179 - BF9D41251E29C17100719535 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9D41241E29C17100719535 /* HomeViewController.swift */; };  
180 - BF9D41271E29C20500719535 /* HomeDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF9D41261E29C20500719535 /* HomeDetailViewController.swift */; };  
181 - BFB716B51E28AF4E00C5C516 /* LiveVideoSettingShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB716B31E28AF4E00C5C516 /* LiveVideoSettingShareViewController.swift */; };  
182 - BFB716B61E28AF4E00C5C516 /* LiveVideoSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB716B41E28AF4E00C5C516 /* LiveVideoSettingViewController.swift */; };  
183 - BFB716C11E28AF8B00C5C516 /* Live.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFB716C01E28AF8B00C5C516 /* Live.storyboard */; };  
184 - BFB716C81E28B5F200C5C516 /* LiveRoomsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB716C31E28B5F200C5C516 /* LiveRoomsViewController.swift */; };  
185 - BFB716C91E28B5F200C5C516 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB716C41E28B5F200C5C516 /* LoginViewController.swift */; };  
186 - BFB716CA1E28B5F200C5C516 /* PersonalSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB716C51E28B5F200C5C516 /* PersonalSettingViewController.swift */; };  
187 - BFB716CB1E28B5F200C5C516 /* RegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB716C61E28B5F200C5C516 /* RegisterViewController.swift */; };  
188 - BFB716CC1E28B5F200C5C516 /* User.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFB716C71E28B5F200C5C516 /* User.storyboard */; };  
189 BFBB83A91ECAE35E008B404B /* LeadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83A81ECAE35E008B404B /* LeadViewController.swift */; }; 159 BFBB83A91ECAE35E008B404B /* LeadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83A81ECAE35E008B404B /* LeadViewController.swift */; };
190 BFBB83D11ECBEB4E008B404B /* JYScrollItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */; }; 160 BFBB83D11ECBEB4E008B404B /* JYScrollItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */; };
191 BFBB83D21ECBEB4E008B404B /* JYScrollItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CE1ECBEB4E008B404B /* JYScrollItemModel.m */; }; 161 BFBB83D21ECBEB4E008B404B /* JYScrollItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CE1ECBEB4E008B404B /* JYScrollItemModel.m */; };
192 BFBB83D31ECBEB4E008B404B /* JYScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83D01ECBEB4E008B404B /* JYScrollView.m */; }; 162 BFBB83D31ECBEB4E008B404B /* JYScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83D01ECBEB4E008B404B /* JYScrollView.m */; };
  163 + BFBB83D61ECC4446008B404B /* PassWordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83D41ECC4446008B404B /* PassWordView.swift */; };
  164 + BFBB83D71ECC4446008B404B /* PassWordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BFBB83D51ECC4446008B404B /* PassWordView.xib */; };
  165 + BFBB83E31ECC445D008B404B /* User.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFBB83D91ECC445D008B404B /* User.storyboard */; };
  166 + BFBB83E61ECC445D008B404B /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83DD1ECC445D008B404B /* LoginViewController.swift */; };
  167 + BFBB83E81ECC445D008B404B /* PersonalSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83DF1ECC445D008B404B /* PersonalSettingViewController.swift */; };
  168 + BFBB83E91ECC445D008B404B /* RegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83E01ECC445D008B404B /* RegisterViewController.swift */; };
  169 + BFBB83EA1ECC445D008B404B /* User.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFBB83E11ECC445D008B404B /* User.storyboard */; };
  170 + BFBB83EB1ECC445D008B404B /* UserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83E21ECC445D008B404B /* UserViewController.swift */; };
193 BFC076781E3445F3008BAC79 /* DownLoad.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC076771E3445F3008BAC79 /* DownLoad.swift */; }; 171 BFC076781E3445F3008BAC79 /* DownLoad.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC076771E3445F3008BAC79 /* DownLoad.swift */; };
194 - BFD1CB4C1E2C657B009D8A42 /* HomeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD1CB461E2C657B009D8A42 /* HomeTableViewCell.swift */; };  
195 - BFD1CB4D1E2C657B009D8A42 /* HomeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BFD1CB471E2C657B009D8A42 /* HomeTableViewCell.xib */; };  
196 - BFD1CB4E1E2C657B009D8A42 /* liveTitleCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD1CB481E2C657B009D8A42 /* liveTitleCollectionCell.swift */; };  
197 - BFD1CB4F1E2C657B009D8A42 /* liveTitleCollectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BFD1CB491E2C657B009D8A42 /* liveTitleCollectionCell.xib */; };  
198 - BFD1CB501E2C657B009D8A42 /* LiveTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD1CB4A1E2C657B009D8A42 /* LiveTitleView.swift */; };  
199 - BFD1CB511E2C657B009D8A42 /* LiveTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BFD1CB4B1E2C657B009D8A42 /* LiveTitleView.xib */; };  
200 - BFD1CB531E2C66FA009D8A42 /* MoreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD1CB521E2C66FA009D8A42 /* MoreViewController.swift */; };  
201 - BFD1CB551E2CA527009D8A42 /* HotMoreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD1CB541E2CA527009D8A42 /* HotMoreViewController.swift */; };  
202 BFDA8F331DDE88ED00F0C4E4 /* XSTLiveManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDA8F321DDE88ED00F0C4E4 /* XSTLiveManager.swift */; }; 172 BFDA8F331DDE88ED00F0C4E4 /* XSTLiveManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDA8F321DDE88ED00F0C4E4 /* XSTLiveManager.swift */; };
203 BFDFDEB01DD55B710040F102 /* AlivcLiveVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BFDFDEAF1DD55B710040F102 /* AlivcLiveVideo.framework */; }; 173 BFDFDEB01DD55B710040F102 /* AlivcLiveVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BFDFDEAF1DD55B710040F102 /* AlivcLiveVideo.framework */; };
204 BFDFDEC11DD55BC90040F102 /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDEBB1DD55BC90040F102 /* UIView+Toast.m */; }; 174 BFDFDEC11DD55BC90040F102 /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDEBB1DD55BC90040F102 /* UIView+Toast.m */; };
205 BFDFDED01DD55C0D0040F102 /* account.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDEC81DD55C0D0040F102 /* account.swift */; }; 175 BFDFDED01DD55C0D0040F102 /* account.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDEC81DD55C0D0040F102 /* account.swift */; };
206 - BFDFDED11DD55C0D0040F102 /* ClassModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDEC91DD55C0D0040F102 /* ClassModel.swift */; };  
207 BFDFDED21DD55C0D0040F102 /* network.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDECA1DD55C0D0040F102 /* network.swift */; }; 176 BFDFDED21DD55C0D0040F102 /* network.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDECA1DD55C0D0040F102 /* network.swift */; };
208 BFDFDED31DD55C0D0040F102 /* utiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDECB1DD55C0D0040F102 /* utiles.swift */; }; 177 BFDFDED31DD55C0D0040F102 /* utiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDECB1DD55C0D0040F102 /* utiles.swift */; };
209 - BFDFDF091DD56C430040F102 /* LiveRoomDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDF081DD56C430040F102 /* LiveRoomDetailViewController.swift */; };  
210 BFF5F4711DD5AA5C00D33B89 /* attach_file.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45B1DD5AA5C00D33B89 /* attach_file.png */; }; 178 BFF5F4711DD5AA5C00D33B89 /* attach_file.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45B1DD5AA5C00D33B89 /* attach_file.png */; };
211 BFF5F4721DD5AA5C00D33B89 /* defphoto.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45C1DD5AA5C00D33B89 /* defphoto.png */; }; 179 BFF5F4721DD5AA5C00D33B89 /* defphoto.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45C1DD5AA5C00D33B89 /* defphoto.png */; };
212 BFF5F4751DD5AA5C00D33B89 /* left.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45F1DD5AA5C00D33B89 /* left.png */; }; 180 BFF5F4751DD5AA5C00D33B89 /* left.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45F1DD5AA5C00D33B89 /* left.png */; };
@@ -250,12 +218,8 @@ @@ -250,12 +218,8 @@
250 5904FC4B1ECA8B8C00E631FF /* TVStationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVStationViewController.swift; sourceTree = "<group>"; }; 218 5904FC4B1ECA8B8C00E631FF /* TVStationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVStationViewController.swift; sourceTree = "<group>"; };
251 5904FC521ECA8BB500E631FF /* MicroCourse.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MicroCourse.storyboard; sourceTree = "<group>"; }; 219 5904FC521ECA8BB500E631FF /* MicroCourse.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MicroCourse.storyboard; sourceTree = "<group>"; };
252 5904FC541ECA8BCB00E631FF /* HomePage.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = HomePage.storyboard; sourceTree = "<group>"; }; 220 5904FC541ECA8BCB00E631FF /* HomePage.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = HomePage.storyboard; sourceTree = "<group>"; };
253 - 5904FC581ECA8C0000E631FF /* UserViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserViewController.swift; sourceTree = "<group>"; };  
254 - 5904FC5A1ECA8C0900E631FF /* User.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = User.storyboard; sourceTree = "<group>"; };  
255 5904FC5C1ECA8ED400E631FF /* HomePageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = "<group>"; }; 221 5904FC5C1ECA8ED400E631FF /* HomePageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = "<group>"; };
256 5904FC601ECA930D00E631FF /* MViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MViewController.swift; sourceTree = "<group>"; }; 222 5904FC601ECA930D00E631FF /* MViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MViewController.swift; sourceTree = "<group>"; };
257 - 5906A0731E349FA500D2D814 /* PassWordView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PassWordView.swift; path = ../controller/Live/PassWordView.swift; sourceTree = "<group>"; };  
258 - 5906A0751E349FB400D2D814 /* PassWordView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = PassWordView.xib; path = ../controller/Live/PassWordView.xib; sourceTree = "<group>"; };  
259 5960263A1DD94D3100C6B5E8 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; 223 5960263A1DD94D3100C6B5E8 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
260 5960263C1DD94D5E00C6B5E8 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; 224 5960263C1DD94D5E00C6B5E8 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
261 5960263E1DD94D7D00C6B5E8 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; 225 5960263E1DD94D7D00C6B5E8 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
@@ -268,7 +232,6 @@ @@ -268,7 +232,6 @@
268 5960264D1DDD469200C6B5E8 /* RiverRunCommentUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiverRunCommentUtil.h; sourceTree = "<group>"; }; 232 5960264D1DDD469200C6B5E8 /* RiverRunCommentUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiverRunCommentUtil.h; sourceTree = "<group>"; };
269 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiverRunCommentUtil.m; sourceTree = "<group>"; }; 233 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiverRunCommentUtil.m; sourceTree = "<group>"; };
270 597185B41ECA990C00D7F478 /* Resource.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Resource.storyboard; sourceTree = "<group>"; }; 234 597185B41ECA990C00D7F478 /* Resource.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Resource.storyboard; sourceTree = "<group>"; };
271 - 59893BDE1E2C53E1004E7F81 /* AlivcInforViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlivcInforViewController.swift; sourceTree = "<group>"; };  
272 598A0E121E51941300273AB8 /* NIMChatroom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroom.h; sourceTree = "<group>"; }; 235 598A0E121E51941300273AB8 /* NIMChatroom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroom.h; sourceTree = "<group>"; };
273 598A0E131E51941300273AB8 /* NIMChatroomEnterRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomEnterRequest.h; sourceTree = "<group>"; }; 236 598A0E131E51941300273AB8 /* NIMChatroomEnterRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomEnterRequest.h; sourceTree = "<group>"; };
274 598A0E141E51941300273AB8 /* NIMChatroomMember.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomMember.h; sourceTree = "<group>"; }; 237 598A0E141E51941300273AB8 /* NIMChatroomMember.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomMember.h; sourceTree = "<group>"; };
@@ -367,9 +330,7 @@ @@ -367,9 +330,7 @@
367 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialShareScrollView.m; sourceTree = "<group>"; }; 330 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialShareScrollView.m; sourceTree = "<group>"; };
368 599B2CD11DE52F7E00B4F7FD /* UMSocialUIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UMSocialUIManager.h; sourceTree = "<group>"; }; 331 599B2CD11DE52F7E00B4F7FD /* UMSocialUIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UMSocialUIManager.h; sourceTree = "<group>"; };
369 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialUIManager.m; sourceTree = "<group>"; }; 332 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialUIManager.m; sourceTree = "<group>"; };
370 - 59A8731B1DDD9E0500BAC7FC /* CustomScrollView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomScrollView.swift; sourceTree = "<group>"; };  
371 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AliyunPlayerSDK.framework; path = YouerLiveVideo/lib/AliyunPlayerSDK.framework; sourceTree = "<group>"; }; 333 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AliyunPlayerSDK.framework; path = YouerLiveVideo/lib/AliyunPlayerSDK.framework; sourceTree = "<group>"; };
372 - 59BA132C1E25D14F00540DE0 /* MoivePlayerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoivePlayerViewController.swift; sourceTree = "<group>"; };  
373 59BA132F1E25D1C000540DE0 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; }; 334 59BA132F1E25D1C000540DE0 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
374 59BA13301E25D1C000540DE0 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; }; 335 59BA13301E25D1C000540DE0 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
375 59BA13321E25D8DB00540DE0 /* movieBackward.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = movieBackward.png; sourceTree = "<group>"; }; 336 59BA13321E25D8DB00540DE0 /* movieBackward.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = movieBackward.png; sourceTree = "<group>"; };
@@ -382,7 +343,6 @@ @@ -382,7 +343,6 @@
382 59BA13441E25D8DB00540DE0 /* video_num_front@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "video_num_front@2x.png"; sourceTree = "<group>"; }; 343 59BA13441E25D8DB00540DE0 /* video_num_front@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "video_num_front@2x.png"; sourceTree = "<group>"; };
383 59C25B481ECAD643009FF276 /* MoreTVStationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreTVStationViewController.swift; sourceTree = "<group>"; }; 344 59C25B481ECAD643009FF276 /* MoreTVStationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreTVStationViewController.swift; sourceTree = "<group>"; };
384 59C25B4A1ECAD84C009FF276 /* TVStationInforViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVStationInforViewController.swift; sourceTree = "<group>"; }; 345 59C25B4A1ECAD84C009FF276 /* TVStationInforViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVStationInforViewController.swift; sourceTree = "<group>"; };
385 - 59C25B4C1ECAFAFC009FF276 /* NavigationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationViewController.swift; sourceTree = "<group>"; };  
386 59DB1C771E792E5900EA2FC4 /* 开始直播.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "开始直播.png"; sourceTree = "<group>"; }; 346 59DB1C771E792E5900EA2FC4 /* 开始直播.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "开始直播.png"; sourceTree = "<group>"; };
387 59DB1C791E793DA700EA2FC4 /* 标签.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "标签.png"; sourceTree = "<group>"; }; 347 59DB1C791E793DA700EA2FC4 /* 标签.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "标签.png"; sourceTree = "<group>"; };
388 59DB1C7B1E793E0E00EA2FC4 /* 视窗.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "视窗.png"; sourceTree = "<group>"; }; 348 59DB1C7B1E793E0E00EA2FC4 /* 视窗.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "视窗.png"; sourceTree = "<group>"; };
@@ -402,12 +362,6 @@ @@ -402,12 +362,6 @@
402 59F8016F1DD2E5FB000A78B0 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; 362 59F8016F1DD2E5FB000A78B0 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
403 59F801721DD2E6B9000A78B0 /* YouerLiveVideo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YouerLiveVideo-Bridging-Header.h"; sourceTree = "<group>"; }; 363 59F801721DD2E6B9000A78B0 /* YouerLiveVideo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YouerLiveVideo-Bridging-Header.h"; sourceTree = "<group>"; };
404 59F801841DD45EDC000A78B0 /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = System/Library/Frameworks/Photos.framework; sourceTree = SDKROOT; }; 364 59F801841DD45EDC000A78B0 /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = System/Library/Frameworks/Photos.framework; sourceTree = SDKROOT; };
405 - 59F801931DD567C7000A78B0 /* AlivcLiveViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlivcLiveViewController.h; sourceTree = "<group>"; };  
406 - 59F801941DD567C7000A78B0 /* AlivcLiveViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AlivcLiveViewController.m; sourceTree = "<group>"; };  
407 - 59F801951DD567C7000A78B0 /* AlivcLiveViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AlivcLiveViewController.xib; sourceTree = "<group>"; };  
408 - 59F801961DD567C7000A78B0 /* LiveVideoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveVideoViewController.swift; sourceTree = "<group>"; };  
409 - 59F8019B1DD567D8000A78B0 /* MyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyViewController.swift; sourceTree = "<group>"; };  
410 - 59F8019F1DD567D8000A78B0 /* MainViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };  
411 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZSDSetPasswordView.h; sourceTree = "<group>"; }; 365 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZSDSetPasswordView.h; sourceTree = "<group>"; };
412 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZSDSetPasswordView.m; sourceTree = "<group>"; }; 366 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZSDSetPasswordView.m; sourceTree = "<group>"; };
413 BF25DFA01DDAA36A003EC0C1 /* AFError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AFError.swift; sourceTree = "<group>"; }; 367 BF25DFA01DDAA36A003EC0C1 /* AFError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AFError.swift; sourceTree = "<group>"; };
@@ -497,8 +451,6 @@ @@ -497,8 +451,6 @@
497 BF6977941E2DEC98006FA934 /* loginBackGround.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = loginBackGround.png; sourceTree = "<group>"; }; 451 BF6977941E2DEC98006FA934 /* loginBackGround.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = loginBackGround.png; sourceTree = "<group>"; };
498 BF6977951E2DEC98006FA934 /* userId.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = userId.png; sourceTree = "<group>"; }; 452 BF6977951E2DEC98006FA934 /* userId.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = userId.png; sourceTree = "<group>"; };
499 BF6977961E2DEC98006FA934 /* userPassword.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = userPassword.png; sourceTree = "<group>"; }; 453 BF6977961E2DEC98006FA934 /* userPassword.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = userPassword.png; sourceTree = "<group>"; };
500 - BF69779A1E2DEFCF006FA934 /* LiveListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveListViewController.swift; sourceTree = "<group>"; };  
501 - BF7B271D1E2F022E00BCF13D /* MyAttentionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyAttentionViewController.swift; sourceTree = "<group>"; };  
502 BF7B75691E305A6D0011D5C7 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; }; 454 BF7B75691E305A6D0011D5C7 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; };
503 BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; }; 455 BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; };
504 BF7B756B1E305A6D0011D5C7 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; }; 456 BF7B756B1E305A6D0011D5C7 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; };
@@ -539,21 +491,6 @@ @@ -539,21 +491,6 @@
539 BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJRefresh.m"; sourceTree = "<group>"; }; 491 BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJRefresh.m"; sourceTree = "<group>"; };
540 BF7B75941E305A6D0011D5C7 /* UIView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+MJExtension.h"; sourceTree = "<group>"; }; 492 BF7B75941E305A6D0011D5C7 /* UIView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+MJExtension.h"; sourceTree = "<group>"; };
541 BF7B75951E305A6D0011D5C7 /* UIView+MJExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+MJExtension.m"; sourceTree = "<group>"; }; 493 BF7B75951E305A6D0011D5C7 /* UIView+MJExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+MJExtension.m"; sourceTree = "<group>"; };
542 - BF7B75AC1E309F230011D5C7 /* AttentionTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttentionTableViewCell.swift; sourceTree = "<group>"; };  
543 - BF7B75AD1E309F230011D5C7 /* AttentionTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AttentionTableViewCell.xib; sourceTree = "<group>"; };  
544 - BF7B75B01E31E3200011D5C7 /* LiveTypeListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveTypeListViewController.swift; sourceTree = "<group>"; };  
545 - BF8A4C531DE02CE300F99896 /* MessageTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageTableViewCell.swift; sourceTree = "<group>"; };  
546 - BF8A4C541DE02CE300F99896 /* MessageTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MessageTableViewCell.xib; sourceTree = "<group>"; };  
547 - BF9D41241E29C17100719535 /* HomeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };  
548 - BF9D41261E29C20500719535 /* HomeDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeDetailViewController.swift; sourceTree = "<group>"; };  
549 - BFB716B31E28AF4E00C5C516 /* LiveVideoSettingShareViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveVideoSettingShareViewController.swift; sourceTree = "<group>"; };  
550 - BFB716B41E28AF4E00C5C516 /* LiveVideoSettingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveVideoSettingViewController.swift; sourceTree = "<group>"; };  
551 - BFB716C01E28AF8B00C5C516 /* Live.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Live.storyboard; sourceTree = "<group>"; };  
552 - BFB716C31E28B5F200C5C516 /* LiveRoomsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveRoomsViewController.swift; sourceTree = "<group>"; };  
553 - BFB716C41E28B5F200C5C516 /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = "<group>"; };  
554 - BFB716C51E28B5F200C5C516 /* PersonalSettingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PersonalSettingViewController.swift; sourceTree = "<group>"; };  
555 - BFB716C61E28B5F200C5C516 /* RegisterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterViewController.swift; sourceTree = "<group>"; };  
556 - BFB716C71E28B5F200C5C516 /* User.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = User.storyboard; sourceTree = "<group>"; };  
557 BFBB83A81ECAE35E008B404B /* LeadViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeadViewController.swift; sourceTree = "<group>"; }; 494 BFBB83A81ECAE35E008B404B /* LeadViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeadViewController.swift; sourceTree = "<group>"; };
558 BFBB83CB1ECBEB4E008B404B /* JYScrollItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JYScrollItem.h; sourceTree = "<group>"; }; 495 BFBB83CB1ECBEB4E008B404B /* JYScrollItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JYScrollItem.h; sourceTree = "<group>"; };
559 BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollItem.m; sourceTree = "<group>"; }; 496 BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollItem.m; sourceTree = "<group>"; };
@@ -561,24 +498,22 @@ @@ -561,24 +498,22 @@
561 BFBB83CE1ECBEB4E008B404B /* JYScrollItemModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollItemModel.m; sourceTree = "<group>"; }; 498 BFBB83CE1ECBEB4E008B404B /* JYScrollItemModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollItemModel.m; sourceTree = "<group>"; };
562 BFBB83CF1ECBEB4E008B404B /* JYScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JYScrollView.h; sourceTree = "<group>"; }; 499 BFBB83CF1ECBEB4E008B404B /* JYScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JYScrollView.h; sourceTree = "<group>"; };
563 BFBB83D01ECBEB4E008B404B /* JYScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollView.m; sourceTree = "<group>"; }; 500 BFBB83D01ECBEB4E008B404B /* JYScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollView.m; sourceTree = "<group>"; };
  501 + BFBB83D41ECC4446008B404B /* PassWordView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PassWordView.swift; sourceTree = "<group>"; };
  502 + BFBB83D51ECC4446008B404B /* PassWordView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PassWordView.xib; sourceTree = "<group>"; };
  503 + BFBB83D91ECC445D008B404B /* User.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = User.storyboard; sourceTree = "<group>"; };
  504 + BFBB83DD1ECC445D008B404B /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = "<group>"; };
  505 + BFBB83DF1ECC445D008B404B /* PersonalSettingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PersonalSettingViewController.swift; sourceTree = "<group>"; };
  506 + BFBB83E01ECC445D008B404B /* RegisterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterViewController.swift; sourceTree = "<group>"; };
  507 + BFBB83E11ECC445D008B404B /* User.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = User.storyboard; sourceTree = "<group>"; };
  508 + BFBB83E21ECC445D008B404B /* UserViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserViewController.swift; sourceTree = "<group>"; };
564 BFC076771E3445F3008BAC79 /* DownLoad.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DownLoad.swift; sourceTree = "<group>"; }; 509 BFC076771E3445F3008BAC79 /* DownLoad.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DownLoad.swift; sourceTree = "<group>"; };
565 - BFD1CB461E2C657B009D8A42 /* HomeTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeTableViewCell.swift; sourceTree = "<group>"; };  
566 - BFD1CB471E2C657B009D8A42 /* HomeTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeTableViewCell.xib; sourceTree = "<group>"; };  
567 - BFD1CB481E2C657B009D8A42 /* liveTitleCollectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = liveTitleCollectionCell.swift; sourceTree = "<group>"; };  
568 - BFD1CB491E2C657B009D8A42 /* liveTitleCollectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = liveTitleCollectionCell.xib; sourceTree = "<group>"; };  
569 - BFD1CB4A1E2C657B009D8A42 /* LiveTitleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveTitleView.swift; sourceTree = "<group>"; };  
570 - BFD1CB4B1E2C657B009D8A42 /* LiveTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LiveTitleView.xib; sourceTree = "<group>"; };  
571 - BFD1CB521E2C66FA009D8A42 /* MoreViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreViewController.swift; sourceTree = "<group>"; };  
572 - BFD1CB541E2CA527009D8A42 /* HotMoreViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HotMoreViewController.swift; sourceTree = "<group>"; };  
573 BFDA8F321DDE88ED00F0C4E4 /* XSTLiveManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XSTLiveManager.swift; sourceTree = "<group>"; }; 510 BFDA8F321DDE88ED00F0C4E4 /* XSTLiveManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XSTLiveManager.swift; sourceTree = "<group>"; };
574 BFDFDEAF1DD55B710040F102 /* AlivcLiveVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AlivcLiveVideo.framework; sourceTree = "<group>"; }; 511 BFDFDEAF1DD55B710040F102 /* AlivcLiveVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AlivcLiveVideo.framework; sourceTree = "<group>"; };
575 BFDFDEBA1DD55BC90040F102 /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Toast.h"; sourceTree = "<group>"; }; 512 BFDFDEBA1DD55BC90040F102 /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Toast.h"; sourceTree = "<group>"; };
576 BFDFDEBB1DD55BC90040F102 /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Toast.m"; sourceTree = "<group>"; }; 513 BFDFDEBB1DD55BC90040F102 /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Toast.m"; sourceTree = "<group>"; };
577 BFDFDEC81DD55C0D0040F102 /* account.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = account.swift; sourceTree = "<group>"; }; 514 BFDFDEC81DD55C0D0040F102 /* account.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = account.swift; sourceTree = "<group>"; };
578 - BFDFDEC91DD55C0D0040F102 /* ClassModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClassModel.swift; sourceTree = "<group>"; };  
579 BFDFDECA1DD55C0D0040F102 /* network.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = network.swift; sourceTree = "<group>"; }; 515 BFDFDECA1DD55C0D0040F102 /* network.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = network.swift; sourceTree = "<group>"; };
580 BFDFDECB1DD55C0D0040F102 /* utiles.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = utiles.swift; sourceTree = "<group>"; }; 516 BFDFDECB1DD55C0D0040F102 /* utiles.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = utiles.swift; sourceTree = "<group>"; };
581 - BFDFDF081DD56C430040F102 /* LiveRoomDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveRoomDetailViewController.swift; sourceTree = "<group>"; };  
582 BFE1C7991E23686C0007B16B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = "<group>"; }; 517 BFE1C7991E23686C0007B16B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = "<group>"; };
583 BFE1C79A1E23686C0007B16B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = "<group>"; }; 518 BFE1C79A1E23686C0007B16B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = "<group>"; };
584 BFF5F45B1DD5AA5C00D33B89 /* attach_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = attach_file.png; sourceTree = "<group>"; }; 519 BFF5F45B1DD5AA5C00D33B89 /* attach_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = attach_file.png; sourceTree = "<group>"; };
@@ -646,12 +581,11 @@ @@ -646,12 +581,11 @@
646 children = ( 581 children = (
647 BFBB83A81ECAE35E008B404B /* LeadViewController.swift */, 582 BFBB83A81ECAE35E008B404B /* LeadViewController.swift */,
648 5904FC601ECA930D00E631FF /* MViewController.swift */, 583 5904FC601ECA930D00E631FF /* MViewController.swift */,
649 - 59C25B4C1ECAFAFC009FF276 /* NavigationViewController.swift */,  
650 5904FC431ECA8B8C00E631FF /* HomePage */, 584 5904FC431ECA8B8C00E631FF /* HomePage */,
651 5904FC441ECA8B8C00E631FF /* MicroCourse */, 585 5904FC441ECA8B8C00E631FF /* MicroCourse */,
652 5904FC461ECA8B8C00E631FF /* Resource */, 586 5904FC461ECA8B8C00E631FF /* Resource */,
653 5904FC481ECA8B8C00E631FF /* TVStation */, 587 5904FC481ECA8B8C00E631FF /* TVStation */,
654 - 5904FC4C1ECA8B8C00E631FF /* User */, 588 + BFBB83D81ECC445D008B404B /* User */,
655 ); 589 );
656 path = controllers; 590 path = controllers;
657 sourceTree = "<group>"; 591 sourceTree = "<group>";
@@ -695,15 +629,6 @@ @@ -695,15 +629,6 @@
695 path = TVStation; 629 path = TVStation;
696 sourceTree = "<group>"; 630 sourceTree = "<group>";
697 }; 631 };
698 - 5904FC4C1ECA8B8C00E631FF /* User */ = {  
699 - isa = PBXGroup;  
700 - children = (  
701 - 5904FC581ECA8C0000E631FF /* UserViewController.swift */,  
702 - 5904FC5A1ECA8C0900E631FF /* User.storyboard */,  
703 - );  
704 - path = User;  
705 - sourceTree = "<group>";  
706 - };  
707 596026391DD94D3100C6B5E8 /* Frameworks */ = { 632 596026391DD94D3100C6B5E8 /* Frameworks */ = {
708 isa = PBXGroup; 633 isa = PBXGroup;
709 children = ( 634 children = (
@@ -954,15 +879,6 @@ @@ -954,15 +879,6 @@
954 path = Resource; 879 path = Resource;
955 sourceTree = "<group>"; 880 sourceTree = "<group>";
956 }; 881 };
957 - 59BA132B1E25D14F00540DE0 /* AliveVideoPlayer */ = {  
958 - isa = PBXGroup;  
959 - children = (  
960 - 59BA132C1E25D14F00540DE0 /* MoivePlayerViewController.swift */,  
961 - 59893BDE1E2C53E1004E7F81 /* AlivcInforViewController.swift */,  
962 - );  
963 - path = AliveVideoPlayer;  
964 - sourceTree = "<group>";  
965 - };  
966 59BA132E1E25D1C000540DE0 /* Reach */ = { 882 59BA132E1E25D1C000540DE0 /* Reach */ = {
967 isa = PBXGroup; 883 isa = PBXGroup;
968 children = ( 884 children = (
@@ -994,11 +910,8 @@ @@ -994,11 +910,8 @@
994 children = ( 910 children = (
995 59F8014E1DD2C7AD000A78B0 /* AppDelegate.swift */, 911 59F8014E1DD2C7AD000A78B0 /* AppDelegate.swift */,
996 59F801521DD2C7AD000A78B0 /* Main.storyboard */, 912 59F801521DD2C7AD000A78B0 /* Main.storyboard */,
997 - 59F8019A1DD567D8000A78B0 /* controller */,  
998 5904FC421ECA8B8C00E631FF /* controllers */, 913 5904FC421ECA8B8C00E631FF /* controllers */,
999 BFDA8F311DDE87E800F0C4E4 /* NIM */, 914 BFDA8F311DDE87E800F0C4E4 /* NIM */,
1000 - 59F801921DD567C7000A78B0 /* Aliv */,  
1001 - 59BA132B1E25D14F00540DE0 /* AliveVideoPlayer */,  
1002 596026481DDD469200C6B5E8 /* DanmakuLib */, 915 596026481DDD469200C6B5E8 /* DanmakuLib */,
1003 BFDFDEC71DD55C0D0040F102 /* util */, 916 BFDFDEC71DD55C0D0040F102 /* util */,
1004 BFDFDEB11DD55BC90040F102 /* lib */, 917 BFDFDEB11DD55BC90040F102 /* lib */,
@@ -1013,38 +926,6 @@ @@ -1013,38 +926,6 @@
1013 path = YouerLiveVideo; 926 path = YouerLiveVideo;
1014 sourceTree = "<group>"; 927 sourceTree = "<group>";
1015 }; 928 };
1016 - 59F801921DD567C7000A78B0 /* Aliv */ = {  
1017 - isa = PBXGroup;  
1018 - children = (  
1019 - 59F801931DD567C7000A78B0 /* AlivcLiveViewController.h */,  
1020 - 59F801941DD567C7000A78B0 /* AlivcLiveViewController.m */,  
1021 - 59F801951DD567C7000A78B0 /* AlivcLiveViewController.xib */,  
1022 - 59F801961DD567C7000A78B0 /* LiveVideoViewController.swift */,  
1023 - 59A8731B1DDD9E0500BAC7FC /* CustomScrollView.swift */,  
1024 - BF8A4C531DE02CE300F99896 /* MessageTableViewCell.swift */,  
1025 - BF8A4C541DE02CE300F99896 /* MessageTableViewCell.xib */,  
1026 - );  
1027 - path = Aliv;  
1028 - sourceTree = "<group>";  
1029 - };  
1030 - 59F8019A1DD567D8000A78B0 /* controller */ = {  
1031 - isa = PBXGroup;  
1032 - children = (  
1033 - 59F8019F1DD567D8000A78B0 /* MainViewController.swift */,  
1034 - BF9D41241E29C17100719535 /* HomeViewController.swift */,  
1035 - BF9D41261E29C20500719535 /* HomeDetailViewController.swift */,  
1036 - BFD1CB521E2C66FA009D8A42 /* MoreViewController.swift */,  
1037 - BFD1CB541E2CA527009D8A42 /* HotMoreViewController.swift */,  
1038 - BF7B75B01E31E3200011D5C7 /* LiveTypeListViewController.swift */,  
1039 - 59F8019B1DD567D8000A78B0 /* MyViewController.swift */,  
1040 - BFDFDF081DD56C430040F102 /* LiveRoomDetailViewController.swift */,  
1041 - BFD1CB451E2C657B009D8A42 /* HomeCellAndTitleView */,  
1042 - BFB716B21E28AF4E00C5C516 /* Live */,  
1043 - BFB716C21E28B5F200C5C516 /* UserCenter */,  
1044 - );  
1045 - path = controller;  
1046 - sourceTree = "<group>";  
1047 - };  
1048 BF25DF9F1DDAA36A003EC0C1 /* Alamofire */ = { 929 BF25DF9F1DDAA36A003EC0C1 /* Alamofire */ = {
1049 isa = PBXGroup; 930 isa = PBXGroup;
1050 children = ( 931 children = (
@@ -1249,30 +1130,6 @@ @@ -1249,30 +1130,6 @@
1249 path = Header; 1130 path = Header;
1250 sourceTree = "<group>"; 1131 sourceTree = "<group>";
1251 }; 1132 };
1252 - BFB716B21E28AF4E00C5C516 /* Live */ = {  
1253 - isa = PBXGroup;  
1254 - children = (  
1255 - BFB716B31E28AF4E00C5C516 /* LiveVideoSettingShareViewController.swift */,  
1256 - BFB716B41E28AF4E00C5C516 /* LiveVideoSettingViewController.swift */,  
1257 - BFB716C01E28AF8B00C5C516 /* Live.storyboard */,  
1258 - );  
1259 - path = Live;  
1260 - sourceTree = "<group>";  
1261 - };  
1262 - BFB716C21E28B5F200C5C516 /* UserCenter */ = {  
1263 - isa = PBXGroup;  
1264 - children = (  
1265 - BF69779A1E2DEFCF006FA934 /* LiveListViewController.swift */,  
1266 - BF7B271D1E2F022E00BCF13D /* MyAttentionViewController.swift */,  
1267 - BFB716C41E28B5F200C5C516 /* LoginViewController.swift */,  
1268 - BFB716C51E28B5F200C5C516 /* PersonalSettingViewController.swift */,  
1269 - BFB716C61E28B5F200C5C516 /* RegisterViewController.swift */,  
1270 - BFB716C71E28B5F200C5C516 /* User.storyboard */,  
1271 - BFB716C31E28B5F200C5C516 /* LiveRoomsViewController.swift */,  
1272 - );  
1273 - path = UserCenter;  
1274 - sourceTree = "<group>";  
1275 - };  
1276 BFBB83C91ECBEB4E008B404B /* Carousel */ = { 1133 BFBB83C91ECBEB4E008B404B /* Carousel */ = {
1277 isa = PBXGroup; 1134 isa = PBXGroup;
1278 children = ( 1135 children = (
@@ -1294,19 +1151,25 @@ @@ -1294,19 +1151,25 @@
1294 path = JYScrollBanner; 1151 path = JYScrollBanner;
1295 sourceTree = "<group>"; 1152 sourceTree = "<group>";
1296 }; 1153 };
1297 - BFD1CB451E2C657B009D8A42 /* HomeCellAndTitleView */ = { 1154 + BFBB83D81ECC445D008B404B /* User */ = {
1298 isa = PBXGroup; 1155 isa = PBXGroup;
1299 children = ( 1156 children = (
1300 - BFD1CB461E2C657B009D8A42 /* HomeTableViewCell.swift */,  
1301 - BFD1CB471E2C657B009D8A42 /* HomeTableViewCell.xib */,  
1302 - BFD1CB481E2C657B009D8A42 /* liveTitleCollectionCell.swift */,  
1303 - BFD1CB491E2C657B009D8A42 /* liveTitleCollectionCell.xib */,  
1304 - BFD1CB4A1E2C657B009D8A42 /* LiveTitleView.swift */,  
1305 - BFD1CB4B1E2C657B009D8A42 /* LiveTitleView.xib */,  
1306 - BF7B75AC1E309F230011D5C7 /* AttentionTableViewCell.swift */,  
1307 - BF7B75AD1E309F230011D5C7 /* AttentionTableViewCell.xib */,  
1308 - );  
1309 - path = HomeCellAndTitleView; 1157 + BFBB83D91ECC445D008B404B /* User.storyboard */,
  1158 + BFBB83E21ECC445D008B404B /* UserViewController.swift */,
  1159 + BFBB83DA1ECC445D008B404B /* UserCenter */,
  1160 + );
  1161 + path = User;
  1162 + sourceTree = "<group>";
  1163 + };
  1164 + BFBB83DA1ECC445D008B404B /* UserCenter */ = {
  1165 + isa = PBXGroup;
  1166 + children = (
  1167 + BFBB83DD1ECC445D008B404B /* LoginViewController.swift */,
  1168 + BFBB83DF1ECC445D008B404B /* PersonalSettingViewController.swift */,
  1169 + BFBB83E01ECC445D008B404B /* RegisterViewController.swift */,
  1170 + BFBB83E11ECC445D008B404B /* User.storyboard */,
  1171 + );
  1172 + path = UserCenter;
1310 sourceTree = "<group>"; 1173 sourceTree = "<group>";
1311 }; 1174 };
1312 BFDA8F311DDE87E800F0C4E4 /* NIM */ = { 1175 BFDA8F311DDE87E800F0C4E4 /* NIM */ = {
@@ -1362,12 +1225,11 @@ @@ -1362,12 +1225,11 @@
1362 BFDFDEC71DD55C0D0040F102 /* util */ = { 1225 BFDFDEC71DD55C0D0040F102 /* util */ = {
1363 isa = PBXGroup; 1226 isa = PBXGroup;
1364 children = ( 1227 children = (
1365 - 5906A0731E349FA500D2D814 /* PassWordView.swift */,  
1366 - 5906A0751E349FB400D2D814 /* PassWordView.xib */, 1228 + BFBB83D41ECC4446008B404B /* PassWordView.swift */,
  1229 + BFBB83D51ECC4446008B404B /* PassWordView.xib */,
1367 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */, 1230 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */,
1368 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */, 1231 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */,
1369 BFDFDEC81DD55C0D0040F102 /* account.swift */, 1232 BFDFDEC81DD55C0D0040F102 /* account.swift */,
1370 - BFDFDEC91DD55C0D0040F102 /* ClassModel.swift */,  
1371 BFDFDECA1DD55C0D0040F102 /* network.swift */, 1233 BFDFDECA1DD55C0D0040F102 /* network.swift */,
1372 BFDFDECB1DD55C0D0040F102 /* utiles.swift */, 1234 BFDFDECB1DD55C0D0040F102 /* utiles.swift */,
1373 BFC076771E3445F3008BAC79 /* DownLoad.swift */, 1235 BFC076771E3445F3008BAC79 /* DownLoad.swift */,
@@ -1504,14 +1366,11 @@ @@ -1504,14 +1366,11 @@
1504 BF6977921E2DEAF1006FA934 /* arrow.png in Resources */, 1366 BF6977921E2DEAF1006FA934 /* arrow.png in Resources */,
1505 59BA13571E25D8DB00540DE0 /* video_num_front@2x.png in Resources */, 1367 59BA13571E25D8DB00540DE0 /* video_num_front@2x.png in Resources */,
1506 BF6977971E2DEC98006FA934 /* loginBackGround.png in Resources */, 1368 BF6977971E2DEC98006FA934 /* loginBackGround.png in Resources */,
1507 - BFD1CB4F1E2C657B009D8A42 /* liveTitleCollectionCell.xib in Resources */,  
1508 BFF5F4791DD5AA5C00D33B89 /* 分享.png in Resources */, 1369 BFF5F4791DD5AA5C00D33B89 /* 分享.png in Resources */,
1509 BFF5F47C1DD5AA5C00D33B89 /* 收拢.png in Resources */, 1370 BFF5F47C1DD5AA5C00D33B89 /* 收拢.png in Resources */,
1510 - BFB716C11E28AF8B00C5C516 /* Live.storyboard in Resources */,  
1511 BFF5F4721DD5AA5C00D33B89 /* defphoto.png in Resources */, 1371 BFF5F4721DD5AA5C00D33B89 /* defphoto.png in Resources */,
1512 5904FC531ECA8BB500E631FF /* MicroCourse.storyboard in Resources */, 1372 5904FC531ECA8BB500E631FF /* MicroCourse.storyboard in Resources */,
1513 BFF5F4751DD5AA5C00D33B89 /* left.png in Resources */, 1373 BFF5F4751DD5AA5C00D33B89 /* left.png in Resources */,
1514 - BFD1CB511E2C657B009D8A42 /* LiveTitleView.xib in Resources */,  
1515 BFF5F48E1DD5B7CA00D33B89 /* Info-iOS.plist in Resources */, 1374 BFF5F48E1DD5B7CA00D33B89 /* Info-iOS.plist in Resources */,
1516 BFF5F47A1DD5AA5C00D33B89 /* 封面上传.png in Resources */, 1375 BFF5F47A1DD5AA5C00D33B89 /* 封面上传.png in Resources */,
1517 BF7B75A41E305A6D0011D5C7 /* MJRefresh.bundle in Resources */, 1376 BF7B75A41E305A6D0011D5C7 /* MJRefresh.bundle in Resources */,
@@ -1520,7 +1379,6 @@ @@ -1520,7 +1379,6 @@
1520 BF6977991E2DEC98006FA934 /* userPassword.png in Resources */, 1379 BF6977991E2DEC98006FA934 /* userPassword.png in Resources */,
1521 59F8015C1DD2C7AE000A78B0 /* LaunchScreen.storyboard in Resources */, 1380 59F8015C1DD2C7AE000A78B0 /* LaunchScreen.storyboard in Resources */,
1522 BF3E4A7A1E2F30B700D90659 /* 直播-最热.png in Resources */, 1381 BF3E4A7A1E2F30B700D90659 /* 直播-最热.png in Resources */,
1523 - 5906A0761E349FB400D2D814 /* PassWordView.xib in Resources */,  
1524 59BA13471E25D8DB00540DE0 /* movieBackwardSelected.png in Resources */, 1382 59BA13471E25D8DB00540DE0 /* movieBackwardSelected.png in Resources */,
1525 BFF5F47D1DD5AA5C00D33B89 /* 暂停.png in Resources */, 1383 BFF5F47D1DD5AA5C00D33B89 /* 暂停.png in Resources */,
1526 BFF5F4781DD5AA5C00D33B89 /* 全屏.png in Resources */, 1384 BFF5F4781DD5AA5C00D33B89 /* 全屏.png in Resources */,
@@ -1539,32 +1397,29 @@ @@ -1539,32 +1397,29 @@
1539 BFF5F4761DD5AA5C00D33B89 /* psb.jpg in Resources */, 1397 BFF5F4761DD5AA5C00D33B89 /* psb.jpg in Resources */,
1540 59BA13451E25D8DB00540DE0 /* movieBackward.png in Resources */, 1398 59BA13451E25D8DB00540DE0 /* movieBackward.png in Resources */,
1541 BF25DFE51DDAA36A003EC0C1 /* Info-tvOS.plist in Resources */, 1399 BF25DFE51DDAA36A003EC0C1 /* Info-tvOS.plist in Resources */,
1542 - BFD1CB4D1E2C657B009D8A42 /* HomeTableViewCell.xib in Resources */,  
1543 BF6977881E2DC264006FA934 /* 我的关注.png in Resources */, 1400 BF6977881E2DC264006FA934 /* 我的关注.png in Resources */,
1544 599B2CD51DE52F7E00B4F7FD /* TencentOpenApi_IOS_Bundle.bundle in Resources */, 1401 599B2CD51DE52F7E00B4F7FD /* TencentOpenApi_IOS_Bundle.bundle in Resources */,
  1402 + BFBB83EA1ECC445D008B404B /* User.storyboard in Resources */,
1545 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */, 1403 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */,
1546 BF25DFE61DDAA36A003EC0C1 /* Info.plist in Resources */, 1404 BF25DFE61DDAA36A003EC0C1 /* Info.plist in Resources */,
1547 BFF5F4771DD5AA5C00D33B89 /* 上传头像.png in Resources */, 1405 BFF5F4771DD5AA5C00D33B89 /* 上传头像.png in Resources */,
1548 5904FC501ECA8B8C00E631FF /* TVStation.storyboard in Resources */, 1406 5904FC501ECA8B8C00E631FF /* TVStation.storyboard in Resources */,
1549 BF3E4A771E2F30B700D90659 /* 观看人数.png in Resources */, 1407 BF3E4A771E2F30B700D90659 /* 观看人数.png in Resources */,
1550 599B2CDF1DE52F7E00B4F7FD /* UMSocialSDKResources.bundle in Resources */, 1408 599B2CDF1DE52F7E00B4F7FD /* UMSocialSDKResources.bundle in Resources */,
1551 - 5904FC5B1ECA8C0900E631FF /* User.storyboard in Resources */,  
1552 BFF5F4901DD5B7CA00D33B89 /* Info-tvOS.plist in Resources */, 1409 BFF5F4901DD5B7CA00D33B89 /* Info-tvOS.plist in Resources */,
1553 - BFB716CC1E28B5F200C5C516 /* User.storyboard in Resources */,  
1554 BFF5F4711DD5AA5C00D33B89 /* attach_file.png in Resources */, 1410 BFF5F4711DD5AA5C00D33B89 /* attach_file.png in Resources */,
1555 599B2CD81DE52F7E00B4F7FD /* WeiboSDK.bundle in Resources */, 1411 599B2CD81DE52F7E00B4F7FD /* WeiboSDK.bundle in Resources */,
1556 BF3E4A791E2F30B700D90659 /* 上传封面.png in Resources */, 1412 BF3E4A791E2F30B700D90659 /* 上传封面.png in Resources */,
1557 59DB1C781E792E5900EA2FC4 /* 开始直播.png in Resources */, 1413 59DB1C781E792E5900EA2FC4 /* 开始直播.png in Resources */,
1558 - 59F801981DD567C7000A78B0 /* AlivcLiveViewController.xib in Resources */,  
1559 - BF7B75AF1E309F230011D5C7 /* AttentionTableViewCell.xib in Resources */,  
1560 - BF8A4C561DE02CE300F99896 /* MessageTableViewCell.xib in Resources */,  
1561 BF69778A1E2DC264006FA934 /* 直播历史.png in Resources */, 1414 BF69778A1E2DC264006FA934 /* 直播历史.png in Resources */,
1562 BF25E0171DDAAF73003EC0C1 /* SVProgressHUD.bundle in Resources */, 1415 BF25E0171DDAAF73003EC0C1 /* SVProgressHUD.bundle in Resources */,
1563 59F801541DD2C7AD000A78B0 /* Main.storyboard in Resources */, 1416 59F801541DD2C7AD000A78B0 /* Main.storyboard in Resources */,
  1417 + BFBB83E31ECC445D008B404B /* User.storyboard in Resources */,
1564 BFF5F47B1DD5AA5C00D33B89 /* 摄像头翻转.png in Resources */, 1418 BFF5F47B1DD5AA5C00D33B89 /* 摄像头翻转.png in Resources */,
1565 5904FC551ECA8BCB00E631FF /* HomePage.storyboard in Resources */, 1419 5904FC551ECA8BCB00E631FF /* HomePage.storyboard in Resources */,
1566 BFF5F47E1DD5AA5C00D33B89 /* 横屏.png in Resources */, 1420 BFF5F47E1DD5AA5C00D33B89 /* 横屏.png in Resources */,
1567 59BA13561E25D8DB00540DE0 /* video_num_bg@2x.png in Resources */, 1421 59BA13561E25D8DB00540DE0 /* video_num_bg@2x.png in Resources */,
  1422 + BFBB83D71ECC4446008B404B /* PassWordView.xib in Resources */,
1568 59DB1C7E1E793E6A00EA2FC4 /* 首页.png in Resources */, 1423 59DB1C7E1E793E6A00EA2FC4 /* 首页.png in Resources */,
1569 BF6977871E2DC264006FA934 /* 我的充值.png in Resources */, 1424 BF6977871E2DC264006FA934 /* 我的充值.png in Resources */,
1570 BF69778B1E2DC264006FA934 /* 直播列表.png in Resources */, 1425 BF69778B1E2DC264006FA934 /* 直播列表.png in Resources */,
@@ -1599,17 +1454,16 @@ @@ -1599,17 +1454,16 @@
1599 buildActionMask = 2147483647; 1454 buildActionMask = 2147483647;
1600 files = ( 1455 files = (
1601 BF7B75A21E305A6D0011D5C7 /* MJRefreshNormalHeader.m in Sources */, 1456 BF7B75A21E305A6D0011D5C7 /* MJRefreshNormalHeader.m in Sources */,
1602 - 59F801991DD567C7000A78B0 /* LiveVideoViewController.swift in Sources */,  
1603 BF7B75991E305A6D0011D5C7 /* MJRefreshFooter.m in Sources */, 1457 BF7B75991E305A6D0011D5C7 /* MJRefreshFooter.m in Sources */,
1604 59F801571DD2C7AE000A78B0 /* YouerLiveVideo.xcdatamodeld in Sources */, 1458 59F801571DD2C7AE000A78B0 /* YouerLiveVideo.xcdatamodeld in Sources */,
1605 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */, 1459 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */,
  1460 + BFBB83EB1ECC445D008B404B /* UserViewController.swift in Sources */,
1606 5904FC4E1ECA8B8C00E631FF /* ResourceViewController.swift in Sources */, 1461 5904FC4E1ECA8B8C00E631FF /* ResourceViewController.swift in Sources */,
1607 BFBB83D11ECBEB4E008B404B /* JYScrollItem.m in Sources */, 1462 BFBB83D11ECBEB4E008B404B /* JYScrollItem.m in Sources */,
1608 BF25DFEB1DDAA36A003EC0C1 /* Request.swift in Sources */, 1463 BF25DFEB1DDAA36A003EC0C1 /* Request.swift in Sources */,
1609 BF7B759F1E305A6D0011D5C7 /* MJRefreshBackNormalFooter.m in Sources */, 1464 BF7B759F1E305A6D0011D5C7 /* MJRefreshBackNormalFooter.m in Sources */,
1610 BFBB83D21ECBEB4E008B404B /* JYScrollItemModel.m in Sources */, 1465 BFBB83D21ECBEB4E008B404B /* JYScrollItemModel.m in Sources */,
1611 599B2CE01DE52F7E00B4F7FD /* UMShareMenuItem.m in Sources */, 1466 599B2CE01DE52F7E00B4F7FD /* UMShareMenuItem.m in Sources */,
1612 - BFD1CB531E2C66FA009D8A42 /* MoreViewController.swift in Sources */,  
1613 BF7B75A31E305A6D0011D5C7 /* MJRefreshStateHeader.m in Sources */, 1467 BF7B75A31E305A6D0011D5C7 /* MJRefreshStateHeader.m in Sources */,
1614 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */, 1468 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */,
1615 BF25E0161DDAAF73003EC0C1 /* SVProgressAnimatedView.m in Sources */, 1469 BF25E0161DDAAF73003EC0C1 /* SVProgressAnimatedView.m in Sources */,
@@ -1624,35 +1478,26 @@ @@ -1624,35 +1478,26 @@
1624 59C25B491ECAD643009FF276 /* MoreTVStationViewController.swift in Sources */, 1478 59C25B491ECAD643009FF276 /* MoreTVStationViewController.swift in Sources */,
1625 5904FC511ECA8B8C00E631FF /* TVStationViewController.swift in Sources */, 1479 5904FC511ECA8B8C00E631FF /* TVStationViewController.swift in Sources */,
1626 BFBB83D31ECBEB4E008B404B /* JYScrollView.m in Sources */, 1480 BFBB83D31ECBEB4E008B404B /* JYScrollView.m in Sources */,
  1481 + BFBB83E81ECC445D008B404B /* PersonalSettingViewController.swift in Sources */,
1627 BF25E0081DDAA36A003EC0C1 /* UIView+WebCache.m in Sources */, 1482 BF25E0081DDAA36A003EC0C1 /* UIView+WebCache.m in Sources */,
1628 5904FC5D1ECA8ED400E631FF /* HomePageViewController.swift in Sources */, 1483 5904FC5D1ECA8ED400E631FF /* HomePageViewController.swift in Sources */,
1629 BFBB83A91ECAE35E008B404B /* LeadViewController.swift in Sources */, 1484 BFBB83A91ECAE35E008B404B /* LeadViewController.swift in Sources */,
1630 - BF8A4C551DE02CE300F99896 /* MessageTableViewCell.swift in Sources */,  
1631 - BFD1CB4C1E2C657B009D8A42 /* HomeTableViewCell.swift in Sources */,  
1632 BF7B759C1E305A6D0011D5C7 /* MJRefreshAutoNormalFooter.m in Sources */, 1485 BF7B759C1E305A6D0011D5C7 /* MJRefreshAutoNormalFooter.m in Sources */,
1633 5904FC4F1ECA8B8C00E631FF /* SearchTVStationListViewController.swift in Sources */, 1486 5904FC4F1ECA8B8C00E631FF /* SearchTVStationListViewController.swift in Sources */,
1634 - BF7B75AE1E309F230011D5C7 /* AttentionTableViewCell.swift in Sources */,  
1635 BFC076781E3445F3008BAC79 /* DownLoad.swift in Sources */, 1487 BFC076781E3445F3008BAC79 /* DownLoad.swift in Sources */,
1636 BF25DFE71DDAA36A003EC0C1 /* MultipartFormData.swift in Sources */, 1488 BF25DFE71DDAA36A003EC0C1 /* MultipartFormData.swift in Sources */,
1637 BF25DFF71DDAA36A003EC0C1 /* MKAnnotationView+WebCache.m in Sources */, 1489 BF25DFF71DDAA36A003EC0C1 /* MKAnnotationView+WebCache.m in Sources */,
1638 BF25DFFB1DDAA36A003EC0C1 /* SDImageCacheConfig.m in Sources */, 1490 BF25DFFB1DDAA36A003EC0C1 /* SDImageCacheConfig.m in Sources */,
1639 - BFB716B61E28AF4E00C5C516 /* LiveVideoSettingViewController.swift in Sources */,  
1640 - BFB716B51E28AF4E00C5C516 /* LiveVideoSettingShareViewController.swift in Sources */,  
1641 - BFDFDF091DD56C430040F102 /* LiveRoomDetailViewController.swift in Sources */,  
1642 5904FC4D1ECA8B8C00E631FF /* MicroCourseViewController.swift in Sources */, 1491 5904FC4D1ECA8B8C00E631FF /* MicroCourseViewController.swift in Sources */,
1643 - 59A8731C1DDD9E0600BAC7FC /* CustomScrollView.swift in Sources */, 1492 + BFBB83E61ECC445D008B404B /* LoginViewController.swift in Sources */,
1644 BF25DFE21DDAA36A003EC0C1 /* AFError.swift in Sources */, 1493 BF25DFE21DDAA36A003EC0C1 /* AFError.swift in Sources */,
1645 BF25DFEF1DDAA36A003EC0C1 /* ServerTrustPolicy.swift in Sources */, 1494 BF25DFEF1DDAA36A003EC0C1 /* ServerTrustPolicy.swift in Sources */,
1646 BF25E0061DDAA36A003EC0C1 /* UIImageView+HighlightedWebCache.m in Sources */, 1495 BF25E0061DDAA36A003EC0C1 /* UIImageView+HighlightedWebCache.m in Sources */,
1647 BF25DFE41DDAA36A003EC0C1 /* DispatchQueue+Alamofire.swift in Sources */, 1496 BF25DFE41DDAA36A003EC0C1 /* DispatchQueue+Alamofire.swift in Sources */,
1648 BF25DFE81DDAA36A003EC0C1 /* NetworkReachabilityManager.swift in Sources */, 1497 BF25DFE81DDAA36A003EC0C1 /* NetworkReachabilityManager.swift in Sources */,
1649 BF25DFF31DDAA36A003EC0C1 /* Timeline.swift in Sources */, 1498 BF25DFF31DDAA36A003EC0C1 /* Timeline.swift in Sources */,
1650 - 59893BDF1E2C53E1004E7F81 /* AlivcInforViewController.swift in Sources */,  
1651 - BFB716C91E28B5F200C5C516 /* LoginViewController.swift in Sources */,  
1652 - 59F801971DD567C7000A78B0 /* AlivcLiveViewController.m in Sources */,  
1653 BF25DFFE1DDAA36A003EC0C1 /* SDWebImageDownloader.m in Sources */, 1499 BF25DFFE1DDAA36A003EC0C1 /* SDWebImageDownloader.m in Sources */,
1654 BF7B75A51E305A6D0011D5C7 /* MJRefreshConst.m in Sources */, 1500 BF7B75A51E305A6D0011D5C7 /* MJRefreshConst.m in Sources */,
1655 - BF9D41271E29C20500719535 /* HomeDetailViewController.swift in Sources */,  
1656 BF7B759B1E305A6D0011D5C7 /* MJRefreshAutoGifFooter.m in Sources */, 1501 BF7B759B1E305A6D0011D5C7 /* MJRefreshAutoGifFooter.m in Sources */,
1657 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */, 1502 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */,
1658 BF25E0021DDAA36A003EC0C1 /* UIButton+WebCache.m in Sources */, 1503 BF25E0021DDAA36A003EC0C1 /* UIButton+WebCache.m in Sources */,
@@ -1660,15 +1505,10 @@ @@ -1660,15 +1505,10 @@
1660 BF25DFF81DDAA36A003EC0C1 /* NSData+ImageContentType.m in Sources */, 1505 BF25DFF81DDAA36A003EC0C1 /* NSData+ImageContentType.m in Sources */,
1661 BF25E0151DDAAF73003EC0C1 /* SVIndefiniteAnimatedView.m in Sources */, 1506 BF25E0151DDAAF73003EC0C1 /* SVIndefiniteAnimatedView.m in Sources */,
1662 BFF5F4921DD5B7CA00D33B89 /* SwiftyJSON.swift in Sources */, 1507 BFF5F4921DD5B7CA00D33B89 /* SwiftyJSON.swift in Sources */,
1663 - BFDFDED11DD55C0D0040F102 /* ClassModel.swift in Sources */,  
1664 BF7B75A91E305A6D0011D5C7 /* UIView+MJExtension.m in Sources */, 1508 BF7B75A91E305A6D0011D5C7 /* UIView+MJExtension.m in Sources */,
1665 - BF7B271E1E2F022E00BCF13D /* MyAttentionViewController.swift in Sources */,  
1666 - 59F801A61DD567D8000A78B0 /* MainViewController.swift in Sources */,  
1667 BF25DFEE1DDAA36A003EC0C1 /* Result.swift in Sources */, 1509 BF25DFEE1DDAA36A003EC0C1 /* Result.swift in Sources */,
1668 - BF7B75B11E31E3200011D5C7 /* LiveTypeListViewController.swift in Sources */,  
1669 BFDFDED21DD55C0D0040F102 /* network.swift in Sources */, 1510 BFDFDED21DD55C0D0040F102 /* network.swift in Sources */,
1670 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */, 1511 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */,
1671 - 59C25B4D1ECAFAFC009FF276 /* NavigationViewController.swift in Sources */,  
1672 BF25DFFF1DDAA36A003EC0C1 /* SDWebImageDownloaderOperation.m in Sources */, 1512 BF25DFFF1DDAA36A003EC0C1 /* SDWebImageDownloaderOperation.m in Sources */,
1673 BF25DFF01DDAA36A003EC0C1 /* SessionDelegate.swift in Sources */, 1513 BF25DFF01DDAA36A003EC0C1 /* SessionDelegate.swift in Sources */,
1674 BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */, 1514 BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */,
@@ -1678,20 +1518,15 @@ @@ -1678,20 +1518,15 @@
1678 596026501DDD469200C6B5E8 /* RiverRunCommentManager.m in Sources */, 1518 596026501DDD469200C6B5E8 /* RiverRunCommentManager.m in Sources */,
1679 BF7B759A1E305A6D0011D5C7 /* MJRefreshHeader.m in Sources */, 1519 BF7B759A1E305A6D0011D5C7 /* MJRefreshHeader.m in Sources */,
1680 BF7B75A61E305A6D0011D5C7 /* NSBundle+MJRefresh.m in Sources */, 1520 BF7B75A61E305A6D0011D5C7 /* NSBundle+MJRefresh.m in Sources */,
1681 - 59BA132D1E25D14F00540DE0 /* MoivePlayerViewController.swift in Sources */,  
1682 5960264F1DDD469200C6B5E8 /* CommentTextLayer.m in Sources */, 1521 5960264F1DDD469200C6B5E8 /* CommentTextLayer.m in Sources */,
1683 BFDFDED01DD55C0D0040F102 /* account.swift in Sources */, 1522 BFDFDED01DD55C0D0040F102 /* account.swift in Sources */,
1684 - 5904FC591ECA8C0000E631FF /* UserViewController.swift in Sources */,  
1685 - BF9D41251E29C17100719535 /* HomeViewController.swift in Sources */,  
1686 - BFD1CB551E2CA527009D8A42 /* HotMoreViewController.swift in Sources */,  
1687 - BF69779B1E2DEFCF006FA934 /* LiveListViewController.swift in Sources */,  
1688 59C25B4B1ECAD84C009FF276 /* TVStationInforViewController.swift in Sources */, 1523 59C25B4B1ECAD84C009FF276 /* TVStationInforViewController.swift in Sources */,
1689 BF25DFF51DDAA36A003EC0C1 /* MBProgressHUD.m in Sources */, 1524 BF25DFF51DDAA36A003EC0C1 /* MBProgressHUD.m in Sources */,
1690 - BFD1CB501E2C657B009D8A42 /* LiveTitleView.swift in Sources */,  
1691 BF25E0191DDAAF73003EC0C1 /* SVRadialGradientLayer.m in Sources */, 1525 BF25E0191DDAAF73003EC0C1 /* SVRadialGradientLayer.m in Sources */,
1692 BF25E0001DDAA36A003EC0C1 /* SDWebImageManager.m in Sources */, 1526 BF25E0001DDAA36A003EC0C1 /* SDWebImageManager.m in Sources */,
1693 BF25E0011DDAA36A003EC0C1 /* SDWebImagePrefetcher.m in Sources */, 1527 BF25E0011DDAA36A003EC0C1 /* SDWebImagePrefetcher.m in Sources */,
1694 BF7B75A71E305A6D0011D5C7 /* UIScrollView+MJExtension.m in Sources */, 1528 BF7B75A71E305A6D0011D5C7 /* UIScrollView+MJExtension.m in Sources */,
  1529 + BFBB83D61ECC4446008B404B /* PassWordView.swift in Sources */,
1695 BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */, 1530 BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */,
1696 BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */, 1531 BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */,
1697 BF25DFEA1DDAA36A003EC0C1 /* ParameterEncoding.swift in Sources */, 1532 BF25DFEA1DDAA36A003EC0C1 /* ParameterEncoding.swift in Sources */,
@@ -1702,22 +1537,17 @@ @@ -1702,22 +1537,17 @@
1702 5904FC611ECA930D00E631FF /* MViewController.swift in Sources */, 1537 5904FC611ECA930D00E631FF /* MViewController.swift in Sources */,
1703 BF25DFF61DDAA36A003EC0C1 /* FLAnimatedImageView+WebCache.m in Sources */, 1538 BF25DFF61DDAA36A003EC0C1 /* FLAnimatedImageView+WebCache.m in Sources */,
1704 BF7B759D1E305A6D0011D5C7 /* MJRefreshAutoStateFooter.m in Sources */, 1539 BF7B759D1E305A6D0011D5C7 /* MJRefreshAutoStateFooter.m in Sources */,
1705 - 5906A0741E349FA500D2D814 /* PassWordView.swift in Sources */,  
1706 BF25E0071DDAA36A003EC0C1 /* UIImageView+WebCache.m in Sources */, 1540 BF25E0071DDAA36A003EC0C1 /* UIImageView+WebCache.m in Sources */,
1707 BF25DFE91DDAA36A003EC0C1 /* Notifications.swift in Sources */, 1541 BF25DFE91DDAA36A003EC0C1 /* Notifications.swift in Sources */,
1708 BF25DFF21DDAA36A003EC0C1 /* TaskDelegate.swift in Sources */, 1542 BF25DFF21DDAA36A003EC0C1 /* TaskDelegate.swift in Sources */,
1709 - BFB716C81E28B5F200C5C516 /* LiveRoomsViewController.swift in Sources */,  
1710 BF7B75A11E305A6D0011D5C7 /* MJRefreshGifHeader.m in Sources */, 1543 BF7B75A11E305A6D0011D5C7 /* MJRefreshGifHeader.m in Sources */,
1711 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */, 1544 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */,
1712 - BFB716CB1E28B5F200C5C516 /* RegisterViewController.swift in Sources */,  
1713 BF25DFF91DDAA36A003EC0C1 /* NSImage+WebCache.m in Sources */, 1545 BF25DFF91DDAA36A003EC0C1 /* NSImage+WebCache.m in Sources */,
1714 - BFB716CA1E28B5F200C5C516 /* PersonalSettingViewController.swift in Sources */,  
1715 59F8014F1DD2C7AD000A78B0 /* AppDelegate.swift in Sources */, 1546 59F8014F1DD2C7AD000A78B0 /* AppDelegate.swift in Sources */,
1716 BF25DFED1DDAA36A003EC0C1 /* ResponseSerialization.swift in Sources */, 1547 BF25DFED1DDAA36A003EC0C1 /* ResponseSerialization.swift in Sources */,
1717 BF25E0031DDAA36A003EC0C1 /* UIImage+GIF.m in Sources */, 1548 BF25E0031DDAA36A003EC0C1 /* UIImage+GIF.m in Sources */,
1718 - 59F801A21DD567D8000A78B0 /* MyViewController.swift in Sources */, 1549 + BFBB83E91ECC445D008B404B /* RegisterViewController.swift in Sources */,
1719 596026511DDD469200C6B5E8 /* RiverRunCommentUtil.m in Sources */, 1550 596026511DDD469200C6B5E8 /* RiverRunCommentUtil.m in Sources */,
1720 - BFD1CB4E1E2C657B009D8A42 /* liveTitleCollectionCell.swift in Sources */,  
1721 BF25DFF11DDAA36A003EC0C1 /* SessionManager.swift in Sources */, 1551 BF25DFF11DDAA36A003EC0C1 /* SessionManager.swift in Sources */,
1722 ); 1552 );
1723 runOnlyForDeploymentPostprocessing = 0; 1553 runOnlyForDeploymentPostprocessing = 0;
YouerLiveVideo/YouerLiveVideo.xcodeproj/project.xcworkspace/xcuserdata/jun.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
YouerLiveVideo/YouerLiveVideo/Aliv/AlivcLiveViewController.h
@@ -1,21 +0,0 @@ @@ -1,21 +0,0 @@
1 -//  
2 -// AlivcLiveViewController.h  
3 -// DevAlivcLiveVideo  
4 -//  
5 -// Created by lyz on 16/3/21.  
6 -// Copyright © 2016年 Alivc. All rights reserved.  
7 -//  
8 -  
9 -#import <UIKit/UIKit.h>  
10 -@interface AlivcLiveViewController : UIViewController  
11 -  
12 -@property (weak, nonatomic) IBOutlet UITextView *textView;  
13 -@property (nonatomic, assign) BOOL isScreenHorizontal;  
14 -@property (strong,nonatomic) id liveDetail;  
15 -@property (strong,nonatomic) NSString * userNameString;  
16 -@property (assign, nonatomic) NSInteger definition;  
17 -@property (assign, nonatomic) BOOL isApplyChat;  
18 -@property (assign, nonatomic) NSTimeInterval endTimer;  
19 -- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil url:(NSString *)url;  
20 -  
21 -@end  
YouerLiveVideo/YouerLiveVideo/Aliv/AlivcLiveViewController.m
@@ -1,733 +0,0 @@ @@ -1,733 +0,0 @@
1 -//  
2 -// AlivcLiveViewController.m  
3 -// DevAlivcLiveVideo  
4 -//  
5 -// Created by yly on 16/3/21.  
6 -// Copyright © 2016年 Alivc. All rights reserved.  
7 -//  
8 -  
9 -#import "AlivcLiveViewController.h"  
10 -#import <AlivcLiveVideo/AlivcLiveVideo.h>  
11 -#import <CoreTelephony/CTCallCenter.h>  
12 -#import <CoreTelephony/CTCall.h>  
13 -#import "RiverRunCommentUtil.h"  
14 -#import "RiverRunCommentManager.h"  
15 -#import "YouerLiveVideo-Swift.h"  
16 -  
17 -@interface AlivcLiveViewController ()<AlivcLiveSessionDelegate,UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate,RiverRunCommentManagerDelegate,NIMChatManagerDelegate>  
18 -@property (weak, nonatomic) IBOutlet UIView *definitionView;  
19 -@property (weak, nonatomic) IBOutlet UIView *sendWordView;  
20 -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *sendWordBottomSpace;  
21 -  
22 -@property (weak, nonatomic) IBOutlet UITextField *messageStrText;  
23 -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *userPhotoHeight;  
24 -@property (weak, nonatomic) IBOutlet UIButton *skinBtn;  
25 -@property (nonatomic, strong) CTCallCenter *callCenter;  
26 -@property (weak, nonatomic) IBOutlet UIButton *setCaptureBtn;  
27 -@property (weak, nonatomic) IBOutlet UITableView *chatTableView;  
28 -@property (weak, nonatomic) IBOutlet UIView *subtitleLocationView;  
29 -@property (weak, nonatomic) IBOutlet UIButton *subTitleStart;  
30 -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *shareBtnHeight;  
31 -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *shareBtnTopSpace;  
32 -  
33 -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *chatTableViewHeight;  
34 -  
35 -@property (strong, nonatomic) NSMutableArray *commentArray;  
36 -@property (strong, nonatomic) NSTimer *commentTimer;  
37 -@property (strong, nonatomic) NSTimer *stopTimer;  
38 -@property (strong, nonatomic) RiverRunCommentManager *manager;  
39 -@property CGFloat commentNUM;  
40 -@property (weak, nonatomic) IBOutlet UILabel *userName;  
41 -@property (weak, nonatomic) IBOutlet UILabel *roomActivePersonNumber;  
42 -@property (weak, nonatomic) IBOutlet UILabel *roomName;  
43 -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *sendWordHeight;  
44 -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *fullScreenBtnHeight;  
45 -  
46 -@property (strong, nonatomic) NSMutableArray * messageArr;  
47 -@property (assign, nonatomic) NSInteger activeNum;  
48 -@property (assign, nonatomic) CGAffineTransform transFront;  
49 -@property (assign, nonatomic) CGAffineTransform transBack;  
50 -  
51 -@end  
52 -  
53 -@implementation AlivcLiveViewController{  
54 - AlivcLiveSession *_liveSession;  
55 - NSString *_url;  
56 - NSTimer *_timer;  
57 - UITableView * actionTableView;  
58 - NSFileHandle *_handle;  
59 - AVCaptureDevicePosition _currentPosition;  
60 - NSUInteger _last;  
61 - NSMutableArray *_logArray;  
62 -  
63 - CGFloat _lastPinchDistance;  
64 -  
65 - BOOL _isCTCallStateDisconnected;  
66 - NSArray * definitionArr;  
67 - LiveDetail * infor;  
68 -}  
69 -  
70 -// 返回状态栏的样式  
71 -- (UIStatusBarStyle)preferredStatusBarStyle  
72 -{  
73 - return UIStatusBarStyleLightContent;  
74 -}  
75 -  
76 -- (BOOL)prefersStatusBarHidden  
77 -{  
78 - return YES; // 返回NO表示要显示,返回YES将hiden  
79 -}  
80 -  
81 -- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil url:(NSString *)url{  
82 - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
83 - _url = url;  
84 - return self;  
85 -}  
86 -  
87 -- (void)viewDidLoad {  
88 - [super viewDidLoad];  
89 - [[[NIMSDK sharedSDK] chatManager] addDelegate:self];  
90 - [[XSTLiveManager shareXSTLiveManager] enterLiveWithRoomId:[_liveDetail f_RoomId] completion:^( BOOL succ, NIMChatroom * room, NIMChatroomMember * member) {  
91 - if (!succ) {  
92 - [self dismissViewControllerAnimated:YES completion:nil];  
93 - }  
94 - }];  
95 - if (!_isApplyChat) {  
96 - _chatTableView.hidden = YES;  
97 - _sendWordView.hidden = YES;  
98 - _sendWordHeight.constant = 0;  
99 - }  
100 -  
101 - AppDelegate * appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];  
102 - appdelegate.blockRotation = YES;  
103 - _shareBtnTopSpace.constant = 0;  
104 - _shareBtnHeight.constant = 0;  
105 - infor = (LiveDetail *)_liveDetail;  
106 - _roomName.text = infor.f_LiveName;  
107 - _userName.text = _userNameString;  
108 - _messageArr = [[NSMutableArray alloc] init];  
109 - self.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1.00f];  
110 -  
111 - [_chatTableView setBackgroundColor:[[UIColor groupTableViewBackgroundColor] colorWithAlphaComponent:1]];  
112 - [self.view sendSubviewToBack:_subtitleLocationView];  
113 -  
114 - _commentTimer = [NSTimer timerWithTimeInterval:0.1f  
115 - target:self selector:@selector(commentTimerFired)  
116 - userInfo:nil repeats:YES];  
117 - _commentNUM = 0;  
118 - _stopTimer = [NSTimer timerWithTimeInterval:60  
119 - target:self selector:@selector(isStopPlay)  
120 - userInfo:nil repeats:YES];  
121 - [[NSRunLoop currentRunLoop] addTimer:_commentTimer forMode:NSRunLoopCommonModes];  
122 - [[NSRunLoop currentRunLoop] addTimer:_stopTimer forMode:NSRunLoopCommonModes];  
123 - _commentArray = [[NSMutableArray alloc] init];  
124 - _manager = [[RiverRunCommentManager alloc]initWithComments:_commentArray delegate:self andPresentView:self.view videoSize:_subtitleLocationView.bounds.size screenSize:_subtitleLocationView.bounds.size isLandscape:[[UIApplication sharedApplication] statusBarOrientation]];  
125 -  
126 - if (_isScreenHorizontal) {  
127 - _chatTableViewHeight.constant = 0;  
128 - CGSize size = CGSizeMake([[UIScreen mainScreen] bounds].size.height, _subtitleLocationView.bounds.size.width-100);  
129 - _manager = [[RiverRunCommentManager alloc]initWithComments:_commentArray delegate:self andPresentView:self.view videoSize:size screenSize:size isLandscape:[[UIApplication sharedApplication] statusBarOrientation]];  
130 - }  
131 -  
132 -  
133 - [_manager start];  
134 -  
135 -  
136 - _sendWordView.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.5];  
137 - _logArray = [NSMutableArray array];  
138 -  
139 - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appResignActive) name:UIApplicationWillResignActiveNotification object:nil];  
140 - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];  
141 - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];  
142 - UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];  
143 - [self.view addGestureRecognizer:gesture];  
144 -  
145 - UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)];  
146 - [self.view addGestureRecognizer:pinch];  
147 -  
148 - // _timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeUpdate) userInfo:nil repeats:YES];  
149 -  
150 - [self testPushCapture];  
151 - // NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"log.txt"];  
152 - // [[NSFileManager defaultManager] removeItemAtPath:path error:nil];  
153 - // [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];  
154 - // _handle = [NSFileHandle fileHandleForWritingAtPath:path];  
155 - //  
156 -}  
157 -  
158 --(void)isStopPlay{  
159 - NSTimeInterval date = [[[NSDate alloc] init] timeIntervalSince1970];  
160 - if (_endTimer - date < 60) {  
161 - if (date >= _endTimer) {  
162 - [self closePlayer];  
163 - }else{  
164 - [self.view makeToast:@"直播时间即将结束,请您做好准备" duration:5 position:CSToastPositionCenter];  
165 - }  
166 - }  
167 -}  
168 -  
169 --(void)viewWillAppear:(BOOL)animated{  
170 - [super viewWillAppear:animated];  
171 - // [self.navigationController setNavigationBarHidden:NO];  
172 - [[XSTLiveManager shareXSTLiveManager] fetchLiveInfoWithRoomId:[_liveDetail f_RoomId] completion:^(BOOL suc, NIMChatroom * room) {  
173 - if (suc) {  
174 - self.activeNum = [room onlineUserCount];  
175 - self.roomActivePersonNumber.text = [NSString stringWithFormat:@"在线人数:%ld",self.activeNum];  
176 - }  
177 - }];  
178 -  
179 - // CGAffineTransform transform;  
180 - // if (_isScreenHorizontal && _liveSession.devicePosition == AVCaptureDevicePositionFront){  
181 - // transform = CGAffineTransformMakeRotation(-M_PI_2);  
182 - // }else{  
183 - // transform = CGAffineTransformMakeRotation(0);  
184 - // }  
185 - // [_liveSession previewView].transform = transform;  
186 - // [[_liveSession previewView] layoutSubviews];  
187 -  
188 - // if (_isScreenHorizontal){  
189 - // [self.navigationController setNavigationBarHidden:YES];  
190 - // CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);  
191 - // self.view.transform = transform;  
192 - // self.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width);  
193 - // [self.view layoutSubviews];  
194 - // CGAffineTransform transforms = CGAffineTransformMakeRotation(-M_PI/2);  
195 - // [_liveSession previewView].transform = transforms;  
196 - // [_liveSession previewView].frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width);  
197 - //  
198 - // [[_liveSession previewView] layoutSubviews];  
199 - // }  
200 -}  
201 -  
202 -- (CGFloat)willShowComments:(BOOL)seek {  
203 - return _commentNUM;  
204 -}  
205 -  
206 --(void)commentTimerFired  
207 -{  
208 - _commentNUM+=0.1;  
209 -}  
210 -  
211 -- (NSArray*)createVideoComment:(NIMMessage *)message {  
212 - NSMutableArray *videoComments = [NSMutableArray array];  
213 - NSInteger vpos = 200;  
214 -  
215 - NSDictionary *commentInfo = @{  
216 - @"vpos": @(vpos),  
217 - @"body": [message text],  
218 - @"position": @([RiverRunCommentUtil commentPosition:[RiverRunCommentUtil getRandomPosition]]),  
219 - @"fontSize": @([RiverRunCommentUtil commentSize:[RiverRunCommentUtil getRandomFontSize]]),  
220 - @"color": @"0xffffff",  
221 - @"duration":@(3.f),  
222 - };  
223 - [videoComments addObject:commentInfo];  
224 - return videoComments;  
225 -}  
226 -  
227 --(void)onRecvMessages:(NSArray<NIMMessage *> *)messages{  
228 - BOOL isScroll = NO;  
229 - if ([_chatTableView cellForRowAtIndexPath:[NSIndexPath indexPathForItem:_messageArr.count-1 inSection:0]]){  
230 - isScroll = YES;  
231 - }  
232 - for (NIMMessage * message in messages) {  
233 - if (message.messageType == NIMMessageTypeNotification){  
234 - if ([((NIMChatroomNotificationContent *)((NIMNotificationObject *)message.messageObject).content).notifyExt containsString:@"name"]){  
235 - self.activeNum = self.activeNum+1;  
236 - }else{  
237 - self.activeNum = self.activeNum-1;  
238 - }  
239 - self.roomActivePersonNumber.text = [NSString stringWithFormat:@"在线人数:%ld",self.activeNum];  
240 - }  
241 - if ([[[message session] sessionId] isEqualToString:[_liveDetail f_RoomId]]&&message.text != nil){  
242 - [_messageArr addObject:message];  
243 - if (!_subTitleStart.isSelected){  
244 - [_manager.comments addObjectsFromArray:[self createVideoComment:message]] ;  
245 - }  
246 - }  
247 - }  
248 - [_chatTableView reloadData];  
249 - if (isScroll) {  
250 - [_chatTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForItem:_messageArr.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];  
251 - }  
252 -  
253 -  
254 -}  
255 -  
256 --(void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error{  
257 - if (error == nil){  
258 - if (!_subTitleStart.isSelected){  
259 - [_manager.comments addObjectsFromArray:[self createVideoComment:message]] ;  
260 - }  
261 - [_messageArr addObject:message];  
262 - [_chatTableView reloadData];  
263 - _messageStrText.text = @"";  
264 - [_chatTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForItem:_messageArr.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];  
265 - }else{  
266 -  
267 - }  
268 -}  
269 -  
270 -- (IBAction)sendMessage:(id)sender {  
271 - [[XSTLiveManager shareXSTLiveManager] sendMessageWithStr:_messageStrText.text roomId:[_liveDetail f_RoomId] completion:^(BOOL suc) {  
272 - }];  
273 -}  
274 -/*  
275 --(void)previewViewTrans{  
276 - if (_setCaptureBtn.isSelected){  
277 - [_liveSession previewView].transform = _transFront;  
278 - }else{  
279 - [_liveSession previewView].transform = _transBack;  
280 - }  
281 -}  
282 -*/  
283 --(void)keyBoardWillChangeFrame:(NSNotification*)noti{  
284 - NSDictionary * dic = noti.userInfo;  
285 - CGRect rect = [[dic objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];  
286 - [UIView animateWithDuration:0.25 animations:^{  
287 - self.sendWordBottomSpace.constant = [UIScreen mainScreen].bounds.size.height - rect.origin.y;  
288 - [self.sendWordView layoutIfNeeded];  
289 - }];  
290 -}  
291 -- (IBAction)expressionBtnClickAction:(UIButton*)sender {  
292 - if (sender.isSelected){  
293 - [UIView animateWithDuration:0.25 animations:^{  
294 - self.sendWordBottomSpace.constant = 216;  
295 - [self.sendWordView layoutIfNeeded];  
296 - }];  
297 - }else{  
298 - [UIView animateWithDuration:0.25 animations:^{  
299 - self.sendWordBottomSpace.constant = 0;  
300 - [self.sendWordView layoutIfNeeded];  
301 - }];  
302 - }  
303 -}  
304 -  
305 --(BOOL)textFieldShouldReturn:(UITextField *)textField{  
306 - [textField resignFirstResponder];  
307 - return YES;  
308 -}  
309 -  
310 -- (void)timeUpdate{  
311 - AlivcLDebugInfo *i = [_liveSession dumpDebugInfo];  
312 - NSDate *date = [NSDate dateWithTimeIntervalSince1970:i.connectStatusChangeTime];  
313 -  
314 - NSMutableString *msg = [[NSMutableString alloc] init];  
315 - [msg appendFormat:@"周期性延迟(%0.2fms)\n",i.cycleDelay];  
316 - [msg appendFormat:@"bitrate(%zd) 当前buffer视频帧数(%zd)\n",[_liveSession alivcLiveVideoBitRate] ,_liveSession.dumpDebugInfo.localBufferVideoCount];  
317 - [msg appendFormat:@" 所有编码帧数(%zd) 所有发送帧数(%zd)\n",i.encodeFrameCount, i.pushFrameCount];  
318 - [msg appendFormat:@"编码帧数%0.2f 编码速度%0.2fKB/s 当前上传速度%0.2fKB/s\n", i.fps,i.encodeSpeed, i.speed/1024];  
319 - [msg appendFormat:@"本地buffer大小%lluB 当前上传数据大小(%lluB) status(%zd) %@",i.localBufferSize, i.pushSize, i.connectStatus, date];  
320 - [msg appendFormat:@" 编码耗时%0.2fms\n",i.localDelay];  
321 - [msg appendFormat:@"当前输出流Video:%zd\n当前输出流audio pts:%zd\n", i.currentVideoPTS,i.currentAudioPTS];  
322 -  
323 - // NSLog(@"%@", msg);  
324 -  
325 - // _textView.text = msg;  
326 - // _textView.text = @"正在直播";  
327 - [_logArray addObject:msg];  
328 -  
329 - // NSLog(@"%@", i.eventArray);  
330 -}  
331 -  
332 -- (void)tapGesture:(UITapGestureRecognizer *)gesture{  
333 - CGPoint point = [gesture locationInView:self.view];  
334 - CGPoint percentPoint = CGPointZero;  
335 - percentPoint.x = point.x / CGRectGetWidth(self.view.bounds);  
336 - percentPoint.y = point.y / CGRectGetHeight(self.view.bounds);  
337 - [_liveSession alivcLiveVideoFocusAtAdjustedPoint:percentPoint autoFocus:YES];  
338 -  
339 -}  
340 -  
341 -- (void)pinchGesture:(UIPinchGestureRecognizer *)gesture {  
342 -  
343 - if (_currentPosition == AVCaptureDevicePositionFront) {  
344 - return;  
345 - }  
346 -  
347 - if (gesture.numberOfTouches != 2) {  
348 - return;  
349 - }  
350 - CGPoint p1 = [gesture locationOfTouch:0 inView:self.view];  
351 - CGPoint p2 = [gesture locationOfTouch:1 inView:self.view];  
352 - CGFloat dx = (p2.x - p1.x);  
353 - CGFloat dy = (p2.y - p1.y);  
354 - CGFloat dist = sqrt(dx*dx + dy*dy);  
355 - if (gesture.state == UIGestureRecognizerStateBegan) {  
356 - _lastPinchDistance = dist;  
357 - }  
358 -  
359 - CGFloat change = dist - _lastPinchDistance;  
360 - // change = change / (CGRectGetWidth(self.view.bounds) * 0.5) * 2.0;  
361 - //  
362 - [_liveSession alivcLiveVideoZoomCamera:(change / 1000 )];  
363 -  
364 -}  
365 -  
366 -- (void)viewDidAppear:(BOOL)animated{  
367 - [super viewDidAppear:animated];  
368 -}  
369 -  
370 --(void)viewWillDisappear:(BOOL)animated{  
371 - [self destroySession];  
372 - [[[NIMSDK sharedSDK] chatManager] removeDelegate:self];  
373 - [[XSTLiveManager shareXSTLiveManager] removeLiveWithRoomId:[_liveDetail f_RoomId] completion:^(BOOL suc) {  
374 - if (suc) {  
375 -  
376 - }  
377 - }];  
378 -}  
379 -  
380 -- (void)appResignActive{  
381 - [self destroySession];  
382 -  
383 - // 监听电话  
384 - _callCenter = [[CTCallCenter alloc] init];  
385 - _isCTCallStateDisconnected = NO;  
386 - _callCenter.callEventHandler = ^(CTCall* call) {  
387 - if ([call.callState isEqualToString:CTCallStateDisconnected])  
388 - {  
389 - _isCTCallStateDisconnected = YES;  
390 - }  
391 - else if([call.callState isEqualToString:CTCallStateConnected])  
392 -  
393 - {  
394 - _callCenter = nil;  
395 - }  
396 - };  
397 -  
398 -}  
399 -  
400 -- (void)appBecomeActive{  
401 -  
402 - if (_isCTCallStateDisconnected) {  
403 - sleep(2);  
404 - }  
405 -  
406 - [self testPushCapture];  
407 - [self supportedInterfaceOrientations];  
408 -}  
409 -  
410 -- (void)testPushCapture{  
411 -  
412 - AlivcLConfiguration *configuration = [[AlivcLConfiguration alloc] init];  
413 - configuration.url = [NSString stringWithFormat:@"rtmp://video-center.alivecdn.com/LiveVod/S%@?vhost=live.on168.com.cn",_url];  
414 - if (_definition == 0) {  
415 - configuration.videoSize = CGSizeMake(360, 640);// 横屏状态宽高不需要互换  
416 - configuration.videoBitRate = 400 * 1000;  
417 - }else if (_definition == 1){  
418 - configuration.videoSize = CGSizeMake(480, 640*4/3);// 横屏状态宽高不需要互换  
419 - configuration.videoBitRate = 800 * 1000;  
420 - }else if (_definition == 2){  
421 - configuration.videoSize = CGSizeMake(720, 1280);// 横屏状态宽高不需要互换  
422 - configuration.videoBitRate = 1500 * 1000;  
423 - }  
424 - configuration.videoMaxBitRate = 1500 * 1000;  
425 - configuration.videoMinBitRate = 400 * 1000;  
426 - configuration.audioBitRate = 96 * 1000;  
427 - configuration.fps = 20;  
428 - configuration.preset = AVCaptureSessionPresetiFrame1280x720;  
429 - configuration.screenOrientation = _isScreenHorizontal;  
430 - configuration.reconnectTimeout = 5;  
431 - if (_currentPosition) {  
432 - configuration.position = _currentPosition;  
433 - } else {  
434 - configuration.position = AVCaptureDevicePositionBack;  
435 - _currentPosition = AVCaptureDevicePositionBack;  
436 - }  
437 -// if (_isScreenHorizontal){  
438 -// _setCaptureBtn.hidden = YES;  
439 -//  
440 -// }  
441 -  
442 - _liveSession = [[AlivcLiveSession alloc] initWithConfiguration:configuration];  
443 - _liveSession.delegate = self;  
444 - [_liveSession setEnableSkin:YES];  
445 - [_liveSession alivcLiveVideoStartPreview];  
446 - _liveSession.devicePosition = _currentPosition;  
447 - [_liveSession alivcLiveVideoUpdateConfiguration:^(AlivcLConfiguration *configuration) {  
448 - configuration.videoMaxBitRate = 1500 * 1000;  
449 - configuration.videoBitRate = 600 * 1000;  
450 - configuration.videoMinBitRate = 400 * 1000;  
451 - configuration.audioBitRate = 64 * 1000;  
452 - configuration.fps = 20;  
453 - }];  
454 - [_liveSession alivcLiveVideoConnectServer];  
455 -  
456 - dispatch_async(dispatch_get_main_queue(), ^{  
457 - [self.view insertSubview:[_liveSession previewView] atIndex:0];  
458 - });  
459 -  
460 -}  
461 -  
462 --(BOOL)shouldAutorotate{  
463 - return YES;  
464 -}  
465 -  
466 --(UIInterfaceOrientationMask)supportedInterfaceOrientations{  
467 - if (_isScreenHorizontal){  
468 - CGAffineTransform transform = CGAffineTransformMakeRotation(-M_PI/2);  
469 - [_liveSession previewView].transform = transform;  
470 - // CGRect rect = [_liveSession previewView].frame;  
471 - CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;  
472 - CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;  
473 - CGFloat width = screenWidth>screenHeight?screenWidth:screenHeight;  
474 - CGFloat height = screenWidth<screenHeight?screenWidth:screenHeight;  
475 - [_liveSession previewView].frame = CGRectMake(0, 0, width, height);  
476 -  
477 - [[_liveSession previewView] layoutSubviews];  
478 -  
479 - return UIInterfaceOrientationMaskLandscapeRight;  
480 - }else{  
481 - return UIInterfaceOrientationMaskPortrait;  
482 - }  
483 -}  
484 -  
485 -  
486 -- (void)destroySession{  
487 -  
488 - [_liveSession alivcLiveVideoDisconnectServer];  
489 - [_liveSession alivcLiveVideoStopPreview];  
490 - [_liveSession.previewView removeFromSuperview];  
491 -  
492 - _liveSession = nil;  
493 -}  
494 -  
495 -  
496 -- (void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session error:(NSError *)error{  
497 - dispatch_async(dispatch_get_main_queue(), ^{  
498 - NSString *msg = [NSString stringWithFormat:@"%zd %@",error.code, error.localizedDescription];  
499 - UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"Live Error" message:msg preferredStyle:UIAlertControllerStyleAlert];  
500 - [alertVC addAction:[UIAlertAction actionWithTitle:@"重新连接" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {  
501 - [_liveSession alivcLiveVideoConnectServer];  
502 - _textView.text = @"";  
503 - }]];  
504 - [alertVC addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:nil]];  
505 - [self presentViewController:alertVC animated:YES completion:nil];  
506 - });  
507 -}  
508 -  
509 -- (void)alivcLiveVideoLiveSessionConnectSuccess:(AlivcLiveSession *)session {  
510 -  
511 - NSLog(@"connect success!");  
512 -}  
513 -  
514 -- (void)alivcLiveVideoLiveSessionNetworkSlow:(AlivcLiveSession *)session{  
515 - dispatch_async(dispatch_get_main_queue(), ^{  
516 - _textView.text = @"\n\n\n网络很差,不建议直播";  
517 - });  
518 -}  
519 -  
520 -- (void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session OpenAudioError:(NSError *)error {  
521 - dispatch_async(dispatch_get_main_queue(), ^{  
522 - UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"Error" message:@"麦克风获取失败" preferredStyle:UIAlertControllerStyleAlert];  
523 - [alertVC addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];  
524 - [self presentViewController:alertVC animated:YES completion:nil];  
525 - });  
526 -}  
527 -  
528 -- (void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session OpenVideoError:(NSError *)error {  
529 -  
530 - dispatch_async(dispatch_get_main_queue(), ^{  
531 - UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"Error" message:@"摄像头获取失败" preferredStyle:UIAlertControllerStyleAlert];  
532 - [alertVC addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];  
533 - [self presentViewController:alertVC animated:YES completion:nil];  
534 - });  
535 -}  
536 -  
537 -- (void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session EncodeAudioError:(NSError *)error {  
538 - dispatch_async(dispatch_get_main_queue(), ^{  
539 - UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"Error" message:@"音频编码初始化失败" preferredStyle:UIAlertControllerStyleAlert];  
540 - [alertVC addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];  
541 - [self presentViewController:alertVC animated:YES completion:nil];  
542 - });  
543 -  
544 -}  
545 -  
546 -- (void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session EncodeVideoError:(NSError *)error {  
547 - dispatch_async(dispatch_get_main_queue(), ^{  
548 - UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"Error" message:@"视频编码初始化失败" preferredStyle:UIAlertControllerStyleAlert];  
549 - [alertVC addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];  
550 - [self presentViewController:alertVC animated:YES completion:nil];  
551 - });  
552 -}  
553 -  
554 -- (IBAction)buttonCloseClick:(id)sender {  
555 - UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"" message:@"您即将离开直播,你舍得吗?" preferredStyle:UIAlertControllerStyleAlert];  
556 - [alertVC addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {  
557 - [self closePlayer];  
558 - // [self.navigationController popViewControllerAnimated:YES];  
559 - }]];  
560 - [alertVC addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:nil]];  
561 - [self presentViewController:alertVC animated:YES completion:nil];  
562 -}  
563 -  
564 --(void)closePlayer{  
565 - AppDelegate * appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];  
566 - appdelegate.blockRotation = NO;  
567 - _isScreenHorizontal = false;  
568 - [self destroySession];  
569 - [_timer invalidate];  
570 - _timer = nil;  
571 - [self dismissViewControllerAnimated:true completion:nil];  
572 -}  
573 -  
574 -- (void)didReceiveMemoryWarning {  
575 - [super didReceiveMemoryWarning];  
576 - // Dispose of any resources that can be recreated.  
577 -}  
578 -  
579 -  
580 -- (IBAction)cameraButtonClick:(UIButton *)button {  
581 - button.selected = !button.isSelected;  
582 - _liveSession.devicePosition = button.isSelected ? AVCaptureDevicePositionFront : AVCaptureDevicePositionBack;  
583 - _currentPosition = _liveSession.devicePosition;  
584 -  
585 -  
586 -// [_liveSession previewView].transform = CGAffineTransformScale([_liveSession previewView].transform , 1.0, -1.0);  
587 -  
588 - // CGAffineTransform transform;  
589 - // if (_isScreenHorizontal && _liveSession.devicePosition == AVCaptureDevicePositionFront){  
590 - // transform = CGAffineTransformMakeRotation(-M_PI_2);  
591 - // }else{  
592 - // transform = CGAffineTransformMakeRotation(0);  
593 - // }  
594 - // [_liveSession previewView].transform = transform;  
595 - // [[_liveSession previewView] layoutSubviews];  
596 -  
597 -}  
598 -  
599 -- (IBAction)skinButtonClick:(UIButton *)button {  
600 - button.selected = !button.isSelected;  
601 - [_liveSession setEnableSkin:button.isSelected];  
602 -}  
603 -  
604 -- (IBAction)flashButtonClick:(UIButton *)button {  
605 - button.selected = !button.isSelected;  
606 - _liveSession.torchMode = button.isSelected ? AVCaptureTorchModeOn : AVCaptureTorchModeOff;  
607 -}  
608 -  
609 -  
610 -- (IBAction)disconnectButtonClick:(id)sender {  
611 - UIButton * btn = (UIButton *)sender;  
612 - btn.selected = !btn.selected;  
613 - if (btn.selected) {  
614 - [btn setBackgroundImage:[UIImage imageNamed:@"starLive"] forState:UIControlStateNormal];  
615 - [_liveSession alivcLiveVideoStopPreview];  
616 - [_liveSession alivcLiveVideoDisconnectServer];  
617 - }else{  
618 - [btn setBackgroundImage:[UIImage imageNamed:@"暂停"] forState:UIControlStateNormal];  
619 - [_liveSession alivcLiveVideoStartPreview];  
620 - [_liveSession alivcLiveVideoConnectServer];  
621 - }  
622 -}  
623 -- (IBAction)muteClickAction:(UIButton *)button {  
624 - button.selected = !button.isSelected;  
625 - if (button.selected) {  
626 - [button setBackgroundImage:[UIImage imageNamed:@"静音"] forState:UIControlStateNormal];  
627 - [_liveSession setEnableMute:YES];  
628 - }else{  
629 - [button setBackgroundImage:[UIImage imageNamed:@"unMute"] forState:UIControlStateNormal];  
630 - [_liveSession setEnableMute:NO];  
631 - }  
632 -}  
633 -  
634 -- (IBAction)subtitleClickAction:(UIButton *)sender {  
635 - sender.selected = !sender.selected;  
636 - if (!sender.selected) {  
637 - [_manager start];  
638 - [_subTitleStart setBackgroundImage:[UIImage imageNamed:@"subTitle_on"] forState:UIControlStateNormal];  
639 - }else{  
640 - [_manager stop];  
641 - [_manager deleteAllCommentLayer];  
642 - [self.commentTimer invalidate];  
643 - [_subTitleStart setBackgroundImage:[UIImage imageNamed:@"subTitle_off"] forState:UIControlStateNormal];  
644 -  
645 - }  
646 -}  
647 -  
648 -- (IBAction)fullScreenClickAction:(UIButton *)sender {  
649 - if (_isScreenHorizontal) {  
650 - // [self buttonCloseClick:sender];  
651 - return ;  
652 - }  
653 - sender.selected = !sender.selected;  
654 - // [self.navigationController setNavigationBarHidden:NO];  
655 - if (sender.selected) {  
656 - if (_isScreenHorizontal){  
657 - CGAffineTransform transform = CGAffineTransformMakeRotation(0);  
658 - self.view.transform = transform;  
659 - [self.view layoutSubviews];  
660 - CGAffineTransform transforms = CGAffineTransformMakeRotation(0);  
661 - [_liveSession previewView].transform = transforms;  
662 - [_liveSession previewView].frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 200);  
663 - [[_liveSession previewView] layoutSubviews];  
664 - }else{  
665 - [_liveSession previewView].frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 200);  
666 - [[_liveSession previewView] layoutSubviews];  
667 -  
668 - }  
669 - _chatTableView.hidden = false;  
670 - }else{  
671 - if (_isScreenHorizontal){  
672 - //[self.navigationController setNavigationBarHidden:YES];  
673 - CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);  
674 - self.view.transform = transform;  
675 - [self.view layoutSubviews];  
676 - CGAffineTransform transforms = CGAffineTransformMakeRotation(-M_PI/2);  
677 - [_liveSession previewView].transform = transforms;  
678 - [_liveSession previewView].frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width);  
679 - }else{  
680 - [_liveSession previewView].frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);  
681 - }  
682 - [[_liveSession previewView] layoutSubviews];  
683 - _chatTableView.hidden = true;  
684 - }  
685 -}  
686 -  
687 -  
688 -  
689 -- (IBAction)shareLiveCClickAction:(id)sender {  
690 -  
691 -}  
692 -  
693 -  
694 -- (void)dealloc{  
695 - [[NSNotificationCenter defaultCenter] removeObserver:self];  
696 - [_handle closeFile];  
697 -}  
698 -  
699 --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
700 - UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];  
701 - if (cell == nil){  
702 - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];  
703 - }  
704 - [cell setBackgroundColor:[UIColor clearColor]];  
705 - // cell.imageView.image = [UIImage imageNamed:@"表情"];  
706 -  
707 - cell.textLabel.text = [NSString stringWithFormat:@"%@ : %@",[((NIMMessage *)_messageArr[indexPath.row]) remoteExt][@"name"],[((NIMMessage *)_messageArr[indexPath.row]) text]];  
708 - cell.textLabel.numberOfLines = 0;  
709 - [cell.textLabel sizeToFit];  
710 - cell.textLabel.font = [UIFont systemFontOfSize:15];  
711 -  
712 - return cell;  
713 -}  
714 -  
715 --(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
716 - return _messageArr.count;  
717 -}  
718 -  
719 --(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
720 - [_liveSession alivcLiveVideoDisconnectServer];  
721 - [_liveSession alivcLiveVideoUpdateConfiguration:^(AlivcLConfiguration *configuration) {  
722 - }];  
723 -}  
724 -  
725 -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{  
726 - NSMutableString *str;  
727 - str=[NSMutableString stringWithFormat:@"%@ : %@",[((NIMMessage *)_messageArr[indexPath.row]) remoteExt][@"name"],[((NIMMessage *)_messageArr[indexPath.row]) text]];  
728 - return [str boundingRectWithSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width-50, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:15.f],NSFontAttributeName, nil] context:nil].size.height+11;  
729 -}  
730 -  
731 -@end  
732 -  
733 -  
YouerLiveVideo/YouerLiveVideo/Aliv/AlivcLiveViewController.xib
@@ -1,325 +0,0 @@ @@ -1,325 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11542" systemVersion="15G31" 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="11524"/>  
8 - <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>  
9 - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>  
10 - </dependencies>  
11 - <objects>  
12 - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AlivcLiveViewController">  
13 - <connections>  
14 - <outlet property="chatTableView" destination="IaS-fs-RRM" id="Z8G-B6-LCc"/>  
15 - <outlet property="chatTableViewHeight" destination="mip-eN-Syh" id="r7Y-qo-KUh"/>  
16 - <outlet property="messageStrText" destination="8OC-d9-HgV" id="5Mv-Xk-5qt"/>  
17 - <outlet property="roomActivePersonNumber" destination="6XQ-lm-mx1" id="npS-GQ-VeI"/>  
18 - <outlet property="roomName" destination="JBk-3B-IbF" id="XPa-te-nLY"/>  
19 - <outlet property="sendWordBottomSpace" destination="MpV-GC-2zm" id="6wu-ch-9kE"/>  
20 - <outlet property="sendWordHeight" destination="2k1-OD-xil" id="kkp-uc-xol"/>  
21 - <outlet property="sendWordView" destination="OCh-5v-nqi" id="nbd-eZ-sbH"/>  
22 - <outlet property="setCaptureBtn" destination="Mzf-sk-O3F" id="zAU-GG-qzY"/>  
23 - <outlet property="shareBtnHeight" destination="vAA-GU-Nw7" id="w43-ku-jbF"/>  
24 - <outlet property="shareBtnTopSpace" destination="aNH-KX-ayZ" id="wKu-L8-gt7"/>  
25 - <outlet property="subTitleStart" destination="3zW-eV-kuq" id="pu9-Vp-q7s"/>  
26 - <outlet property="subtitleLocationView" destination="4IZ-TQ-99k" id="akN-lg-MtV"/>  
27 - <outlet property="textView" destination="pHN-RD-dZj" id="e4v-Ab-N7c"/>  
28 - <outlet property="userName" destination="aAd-UM-ced" id="ZTJ-8T-KDm"/>  
29 - <outlet property="userPhotoHeight" destination="XOB-ET-YgN" id="VfO-bJ-f2b"/>  
30 - <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>  
31 - </connections>  
32 - </placeholder>  
33 - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>  
34 - <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">  
35 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
36 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
37 - <subviews>  
38 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VJK-mp-TsX">  
39 - <rect key="frame" x="329" y="118" width="30" height="30"/>  
40 - <constraints>  
41 - <constraint firstAttribute="height" constant="30" id="DUm-NC-hMI"/>  
42 - </constraints>  
43 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
44 - <state key="normal" backgroundImage="暂停.png"/>  
45 - <connections>  
46 - <action selector="disconnectButtonClick:" destination="-1" eventType="touchUpInside" id="lra-Un-vRW"/>  
47 - </connections>  
48 - </button>  
49 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dtl-qB-O1a">  
50 - <rect key="frame" x="329" y="156" width="30" height="30"/>  
51 - <constraints>  
52 - <constraint firstAttribute="height" constant="30" id="vAA-GU-Nw7"/>  
53 - </constraints>  
54 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
55 - <state key="normal" backgroundImage="分享.png"/>  
56 - <connections>  
57 - <action selector="shareLiveCClickAction:" destination="-1" eventType="touchUpInside" id="WoJ-gQ-zPe"/>  
58 - </connections>  
59 - </button>  
60 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JoJ-cq-Rki">  
61 - <rect key="frame" x="327" y="42" width="30" height="30"/>  
62 - <constraints>  
63 - <constraint firstAttribute="width" secondItem="JoJ-cq-Rki" secondAttribute="height" multiplier="1:1" id="pev-Wl-ClD"/>  
64 - <constraint firstAttribute="height" constant="30" id="xeD-Tr-GE0"/>  
65 - </constraints>  
66 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
67 - <state key="normal" backgroundImage="全屏.png"/>  
68 - <connections>  
69 - <action selector="fullScreenClickAction:" destination="-1" eventType="touchUpInside" id="Xzm-P8-4Cp"/>  
70 - </connections>  
71 - </button>  
72 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="aHo-qz-PfW">  
73 - <rect key="frame" x="330" y="4" width="30" height="30"/>  
74 - <constraints>  
75 - <constraint firstAttribute="width" secondItem="aHo-qz-PfW" secondAttribute="height" multiplier="1:1" id="Nfq-t2-2Iq"/>  
76 - <constraint firstAttribute="height" constant="30" id="zPD-zb-Sr2"/>  
77 - </constraints>  
78 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
79 - <state key="normal" backgroundImage="closeAlive"/>  
80 - <connections>  
81 - <action selector="buttonCloseClick:" destination="-1" eventType="touchUpInside" id="FfZ-UX-cJ5"/>  
82 - </connections>  
83 - </button>  
84 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="AOl-sF-ffX">  
85 - <rect key="frame" x="329" y="80" width="30" height="30"/>  
86 - <constraints>  
87 - <constraint firstAttribute="height" constant="30" id="ocE-xy-hhj"/>  
88 - </constraints>  
89 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
90 - <state key="normal" backgroundImage="unMute"/>  
91 - <connections>  
92 - <action selector="muteClickAction:" destination="-1" eventType="touchUpInside" id="N8Q-tr-0YL"/>  
93 - </connections>  
94 - </button>  
95 - <textView clipsSubviews="YES" multipleTouchEnabled="YES" userInteractionEnabled="NO" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="pHN-RD-dZj">  
96 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
97 - <color key="textColor" red="0.98823529409999999" green="0.52941176469999995" blue="0.15686274510000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
98 - <fontDescription key="fontDescription" type="system" pointSize="16"/>  
99 - <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>  
100 - </textView>  
101 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Mzf-sk-O3F">  
102 - <rect key="frame" x="289" y="4" width="30" height="30"/>  
103 - <constraints>  
104 - <constraint firstAttribute="height" constant="30" id="lu0-J5-5tk"/>  
105 - </constraints>  
106 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
107 - <state key="normal" backgroundImage="摄像头翻转.png"/>  
108 - <connections>  
109 - <action selector="cameraButtonClick:" destination="-1" eventType="touchUpInside" id="sQz-M2-2o3"/>  
110 - </connections>  
111 - </button>  
112 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FDb-6v-daQ">  
113 - <rect key="frame" x="16" y="4" width="85" height="35"/>  
114 - <subviews>  
115 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="o0l-Du-LeS">  
116 - <rect key="frame" x="6" y="3" width="30" height="30"/>  
117 - <color key="backgroundColor" red="0.50980392159999999" green="0.81176470590000005" blue="0.44705882349999998" alpha="1" colorSpace="calibratedRGB"/>  
118 - <constraints>  
119 - <constraint firstAttribute="height" constant="30" id="XOB-ET-YgN"/>  
120 - </constraints>  
121 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
122 - <state key="normal" backgroundImage="default_userRoom"/>  
123 - <userDefinedRuntimeAttributes>  
124 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
125 - <integer key="value" value="15"/>  
126 - </userDefinedRuntimeAttribute>  
127 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
128 - </userDefinedRuntimeAttributes>  
129 - <connections>  
130 - <action selector="cameraButtonClick:" destination="-1" eventType="touchUpInside" id="jPA-zk-h9g"/>  
131 - </connections>  
132 - </button>  
133 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aAd-UM-ced">  
134 - <rect key="frame" x="38" y="4" width="41" height="12"/>  
135 - <fontDescription key="fontDescription" type="system" pointSize="10"/>  
136 - <nil key="textColor"/>  
137 - <nil key="highlightedColor"/>  
138 - </label>  
139 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="在线人数" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6XQ-lm-mx1">  
140 - <rect key="frame" x="38" y="19" width="41" height="12"/>  
141 - <fontDescription key="fontDescription" type="system" pointSize="10"/>  
142 - <nil key="textColor"/>  
143 - <nil key="highlightedColor"/>  
144 - </label>  
145 - </subviews>  
146 - <color key="backgroundColor" white="1" alpha="0.70373205236486491" colorSpace="calibratedWhite"/>  
147 - <constraints>  
148 - <constraint firstItem="aAd-UM-ced" firstAttribute="top" secondItem="FDb-6v-daQ" secondAttribute="top" constant="4" id="3y3-OA-Nzs"/>  
149 - <constraint firstAttribute="trailing" secondItem="6XQ-lm-mx1" secondAttribute="trailing" constant="6" id="MBU-Kl-L0W"/>  
150 - <constraint firstItem="o0l-Du-LeS" firstAttribute="centerY" secondItem="FDb-6v-daQ" secondAttribute="centerY" id="QV7-29-LUE"/>  
151 - <constraint firstItem="o0l-Du-LeS" firstAttribute="width" secondItem="o0l-Du-LeS" secondAttribute="height" multiplier="1:1" id="cyi-DA-vQe"/>  
152 - <constraint firstAttribute="height" constant="35" id="fGy-fi-zn8"/>  
153 - <constraint firstItem="aAd-UM-ced" firstAttribute="leading" secondItem="o0l-Du-LeS" secondAttribute="trailing" constant="2" id="fkZ-37-IKK"/>  
154 - <constraint firstAttribute="bottom" secondItem="6XQ-lm-mx1" secondAttribute="bottom" constant="4" id="hAK-05-vuf"/>  
155 - <constraint firstAttribute="trailing" secondItem="aAd-UM-ced" secondAttribute="trailing" constant="6" id="ob8-f3-qMz"/>  
156 - <constraint firstItem="6XQ-lm-mx1" firstAttribute="leading" secondItem="o0l-Du-LeS" secondAttribute="trailing" constant="2" id="pBM-sh-jeX"/>  
157 - <constraint firstItem="o0l-Du-LeS" firstAttribute="leading" secondItem="FDb-6v-daQ" secondAttribute="leading" constant="6" id="u7t-4f-QBC"/>  
158 - </constraints>  
159 - <userDefinedRuntimeAttributes>  
160 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
161 - <integer key="value" value="17"/>  
162 - </userDefinedRuntimeAttribute>  
163 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
164 - </userDefinedRuntimeAttributes>  
165 - </view>  
166 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OCh-5v-nqi">  
167 - <rect key="frame" x="0.0" y="627" width="375" height="40"/>  
168 - <subviews>  
169 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2on-1g-It0">  
170 - <rect key="frame" x="0.0" y="0.0" width="375" height="1"/>  
171 - <color key="backgroundColor" red="0.87843137250000003" green="0.87843137250000003" blue="0.87843137250000003" alpha="1" colorSpace="calibratedRGB"/>  
172 - <constraints>  
173 - <constraint firstAttribute="height" constant="1" id="Q4K-n7-bhw"/>  
174 - </constraints>  
175 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
176 - <nil key="textColor"/>  
177 - <nil key="highlightedColor"/>  
178 - </label>  
179 - <button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kwG-Rd-5fk">  
180 - <rect key="frame" x="15" y="5" width="30" height="30"/>  
181 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
182 - <state key="normal" backgroundImage="表情.png"/>  
183 - <connections>  
184 - <action selector="expressionBtnClickAction:" destination="-1" eventType="touchUpInside" id="kFV-C2-rCv"/>  
185 - </connections>  
186 - </button>  
187 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OzC-wX-kls">  
188 - <rect key="frame" x="300" y="5" width="60" height="30"/>  
189 - <color key="backgroundColor" red="0.92549019607843142" green="0.25882352941176473" blue="0.29803921568627451" alpha="1" colorSpace="calibratedRGB"/>  
190 - <constraints>  
191 - <constraint firstAttribute="width" constant="60" id="B2u-vw-abx"/>  
192 - </constraints>  
193 - <state key="normal" title="发送">  
194 - <color key="titleColor" red="0.99607843139999996" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>  
195 - </state>  
196 - <connections>  
197 - <action selector="sendMessage:" destination="-1" eventType="touchUpInside" id="wco-UN-0o1"/>  
198 - </connections>  
199 - </button>  
200 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="a38-YW-LDt">  
201 - <rect key="frame" x="0.0" y="8" width="1" height="24"/>  
202 - <color key="backgroundColor" red="0.87843137250000003" green="0.87843137250000003" blue="0.87843137250000003" alpha="1" colorSpace="calibratedRGB"/>  
203 - <constraints>  
204 - <constraint firstAttribute="width" constant="1" id="ag4-6H-jxV"/>  
205 - </constraints>  
206 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
207 - <nil key="textColor"/>  
208 - <nil key="highlightedColor"/>  
209 - </label>  
210 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="和大家说点什么" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="8OC-d9-HgV">  
211 - <rect key="frame" x="9" y="11" width="283" height="18"/>  
212 - <nil key="textColor"/>  
213 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
214 - <textInputTraits key="textInputTraits"/>  
215 - <connections>  
216 - <outlet property="delegate" destination="-1" id="IeI-fO-4jp"/>  
217 - </connections>  
218 - </textField>  
219 - </subviews>  
220 - <constraints>  
221 - <constraint firstAttribute="height" constant="40" id="2k1-OD-xil"/>  
222 - <constraint firstAttribute="trailing" secondItem="OzC-wX-kls" secondAttribute="trailing" constant="15" id="Nds-EI-ft7"/>  
223 - <constraint firstItem="8OC-d9-HgV" firstAttribute="leading" secondItem="a38-YW-LDt" secondAttribute="trailing" constant="8" id="PK4-L5-4BR"/>  
224 - <constraint firstItem="a38-YW-LDt" firstAttribute="leading" secondItem="OCh-5v-nqi" secondAttribute="leading" id="Qtp-Cz-Ski"/>  
225 - <constraint firstItem="OzC-wX-kls" firstAttribute="leading" secondItem="8OC-d9-HgV" secondAttribute="trailing" constant="8" id="S0k-eM-bBy"/>  
226 - <constraint firstItem="a38-YW-LDt" firstAttribute="centerY" secondItem="OCh-5v-nqi" secondAttribute="centerY" id="Tym-ZG-fj1"/>  
227 - <constraint firstItem="2on-1g-It0" firstAttribute="top" secondItem="OCh-5v-nqi" secondAttribute="top" id="b1f-2i-mKj"/>  
228 - <constraint firstItem="a38-YW-LDt" firstAttribute="top" secondItem="OCh-5v-nqi" secondAttribute="top" constant="8" id="fd8-8G-LZU"/>  
229 - <constraint firstItem="8OC-d9-HgV" firstAttribute="centerY" secondItem="OCh-5v-nqi" secondAttribute="centerY" id="gP0-2d-Gze"/>  
230 - <constraint firstItem="OzC-wX-kls" firstAttribute="centerY" secondItem="OCh-5v-nqi" secondAttribute="centerY" id="oIo-Z0-yaa"/>  
231 - <constraint firstAttribute="trailing" secondItem="2on-1g-It0" secondAttribute="trailing" id="wH5-Wi-aSO"/>  
232 - <constraint firstItem="2on-1g-It0" firstAttribute="leading" secondItem="OCh-5v-nqi" secondAttribute="leading" id="xX0-y9-NV3"/>  
233 - </constraints>  
234 - </view>  
235 - <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" keyboardDismissMode="onDrag" style="plain" separatorStyle="none" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="IaS-fs-RRM">  
236 - <rect key="frame" x="0.0" y="467" width="375" height="160"/>  
237 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
238 - <constraints>  
239 - <constraint firstAttribute="height" constant="160" id="mip-eN-Syh"/>  
240 - </constraints>  
241 - <connections>  
242 - <outlet property="dataSource" destination="-1" id="UeO-Gn-2dT"/>  
243 - <outlet property="delegate" destination="-1" id="kZf-RQ-YLw"/>  
244 - </connections>  
245 - </tableView>  
246 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3zW-eV-kuq">  
247 - <rect key="frame" x="330" y="194" width="30" height="30"/>  
248 - <constraints>  
249 - <constraint firstAttribute="height" constant="30" id="bot-0i-Opx"/>  
250 - </constraints>  
251 - <color key="tintColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
252 - <state key="normal" backgroundImage="subTitle_on"/>  
253 - <connections>  
254 - <action selector="subtitleClickAction:" destination="-1" eventType="touchUpInside" id="LOI-ZE-z1D"/>  
255 - </connections>  
256 - </button>  
257 - <view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4IZ-TQ-99k">  
258 - <rect key="frame" x="0.0" y="50" width="375" height="417"/>  
259 - </view>  
260 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JBk-3B-IbF">  
261 - <rect key="frame" x="109" y="8" width="172" height="15"/>  
262 - <constraints>  
263 - <constraint firstAttribute="height" constant="15" id="74k-Qv-BIP"/>  
264 - </constraints>  
265 - <fontDescription key="fontDescription" type="system" pointSize="11"/>  
266 - <nil key="textColor"/>  
267 - <nil key="highlightedColor"/>  
268 - </label>  
269 - </subviews>  
270 - <constraints>  
271 - <constraint firstAttribute="trailing" secondItem="4IZ-TQ-99k" secondAttribute="trailing" id="1EK-3K-Gkr"/>  
272 - <constraint firstItem="Mzf-sk-O3F" firstAttribute="leading" secondItem="JBk-3B-IbF" secondAttribute="trailing" constant="8" id="6tM-gq-SkV"/>  
273 - <constraint firstItem="OCh-5v-nqi" firstAttribute="top" secondItem="IaS-fs-RRM" secondAttribute="bottom" id="9us-dv-6UX"/>  
274 - <constraint firstAttribute="trailing" secondItem="pHN-RD-dZj" secondAttribute="trailing" id="Aap-AA-RIE"/>  
275 - <constraint firstItem="dtl-qB-O1a" firstAttribute="width" secondItem="dtl-qB-O1a" secondAttribute="height" multiplier="1:1" id="BiI-IQ-9aE"/>  
276 - <constraint firstItem="4IZ-TQ-99k" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="DJy-BN-sa6"/>  
277 - <constraint firstItem="FDb-6v-daQ" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="4" id="EaC-mT-bnh"/>  
278 - <constraint firstItem="4IZ-TQ-99k" firstAttribute="top" secondItem="pHN-RD-dZj" secondAttribute="top" constant="50" id="Efq-E1-lCC"/>  
279 - <constraint firstItem="pHN-RD-dZj" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="GwV-dC-rDS"/>  
280 - <constraint firstAttribute="trailing" secondItem="3zW-eV-kuq" secondAttribute="trailing" constant="15" id="HX6-SN-TgO"/>  
281 - <constraint firstItem="3zW-eV-kuq" firstAttribute="top" secondItem="dtl-qB-O1a" secondAttribute="bottom" constant="8" id="Iit-8I-cJS"/>  
282 - <constraint firstAttribute="trailing" secondItem="dtl-qB-O1a" secondAttribute="trailing" constant="16" id="KbQ-pG-rNg"/>  
283 - <constraint firstItem="IaS-fs-RRM" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="KrE-gy-IoK"/>  
284 - <constraint firstAttribute="trailing" secondItem="IaS-fs-RRM" secondAttribute="trailing" id="LFS-Xw-dr0"/>  
285 - <constraint firstItem="JBk-3B-IbF" firstAttribute="leading" secondItem="FDb-6v-daQ" secondAttribute="trailing" constant="8" id="M8K-dZ-vtD"/>  
286 - <constraint firstAttribute="trailing" secondItem="AOl-sF-ffX" secondAttribute="trailing" constant="16" id="Mcd-PZ-dBc"/>  
287 - <constraint firstAttribute="bottom" secondItem="OCh-5v-nqi" secondAttribute="bottom" id="MpV-GC-2zm"/>  
288 - <constraint firstItem="3zW-eV-kuq" firstAttribute="width" secondItem="3zW-eV-kuq" secondAttribute="height" multiplier="1:1" id="PDX-o1-AvL"/>  
289 - <constraint firstAttribute="trailing" secondItem="VJK-mp-TsX" secondAttribute="trailing" constant="16" id="R3f-J7-cbg"/>  
290 - <constraint firstItem="pHN-RD-dZj" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="ROo-ht-HE4"/>  
291 - <constraint firstAttribute="trailing" secondItem="JoJ-cq-Rki" secondAttribute="trailing" constant="18" id="SzR-mv-rWg"/>  
292 - <constraint firstItem="JBk-3B-IbF" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="8" id="Ths-5c-ax3"/>  
293 - <constraint firstItem="JoJ-cq-Rki" firstAttribute="leading" secondItem="Mzf-sk-O3F" secondAttribute="trailing" constant="8" id="UuQ-AT-oUm"/>  
294 - <constraint firstAttribute="trailing" secondItem="OCh-5v-nqi" secondAttribute="trailing" id="Vyn-53-IhQ"/>  
295 - <constraint firstItem="VJK-mp-TsX" firstAttribute="width" secondItem="VJK-mp-TsX" secondAttribute="height" multiplier="1:1" id="WIj-DH-07b"/>  
296 - <constraint firstItem="aHo-qz-PfW" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="4" id="XPT-iZ-Ifd"/>  
297 - <constraint firstItem="dtl-qB-O1a" firstAttribute="top" secondItem="VJK-mp-TsX" secondAttribute="bottom" constant="8" id="aNH-KX-ayZ"/>  
298 - <constraint firstItem="Mzf-sk-O3F" firstAttribute="width" secondItem="Mzf-sk-O3F" secondAttribute="height" multiplier="1:1" id="b0q-Uu-5Mc"/>  
299 - <constraint firstAttribute="trailing" secondItem="aHo-qz-PfW" secondAttribute="trailing" constant="15" id="fEI-gd-Vu9"/>  
300 - <constraint firstItem="JoJ-cq-Rki" firstAttribute="top" secondItem="aHo-qz-PfW" secondAttribute="bottom" constant="8" id="gEO-D1-COW"/>  
301 - <constraint firstAttribute="bottom" secondItem="pHN-RD-dZj" secondAttribute="bottom" id="j1Z-b8-Tgc"/>  
302 - <constraint firstItem="VJK-mp-TsX" firstAttribute="top" secondItem="AOl-sF-ffX" secondAttribute="bottom" constant="8" id="lVL-4i-hTA"/>  
303 - <constraint firstItem="IaS-fs-RRM" firstAttribute="top" secondItem="4IZ-TQ-99k" secondAttribute="bottom" id="oam-wx-G2u"/>  
304 - <constraint firstItem="AOl-sF-ffX" firstAttribute="top" secondItem="JoJ-cq-Rki" secondAttribute="bottom" constant="8" id="qa8-yq-arL"/>  
305 - <constraint firstItem="Mzf-sk-O3F" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="4" id="vcA-mk-eAS"/>  
306 - <constraint firstItem="FDb-6v-daQ" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="wlW-VM-Vp2"/>  
307 - <constraint firstItem="OCh-5v-nqi" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="yEC-fi-9y2"/>  
308 - <constraint firstItem="AOl-sF-ffX" firstAttribute="width" secondItem="AOl-sF-ffX" secondAttribute="height" multiplier="1:1" id="ztH-wq-okv"/>  
309 - </constraints>  
310 - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>  
311 - <point key="canvasLocation" x="-7" y="-45"/>  
312 - </view>  
313 - </objects>  
314 - <resources>  
315 - <image name="closeAlive" width="33" height="33"/>  
316 - <image name="default_userRoom" width="19" height="17"/>  
317 - <image name="subTitle_on" width="33" height="33"/>  
318 - <image name="unMute" width="22" height="22"/>  
319 - <image name="全屏.png" width="45" height="45"/>  
320 - <image name="分享.png" width="45" height="45"/>  
321 - <image name="摄像头翻转.png" width="45" height="45"/>  
322 - <image name="暂停.png" width="45" height="45"/>  
323 - <image name="表情.png" width="50" height="47"/>  
324 - </resources>  
325 -</document>  
YouerLiveVideo/YouerLiveVideo/Aliv/CustomScrollView.swift
@@ -1,150 +0,0 @@ @@ -1,150 +0,0 @@
1 -//  
2 -// CustomScrollView.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 16/11/17.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class CustomScrollView:UIView,UIScrollViewDelegate{  
12 - var expressionScrollView: UIScrollView!  
13 - var expressionPage: UIPageControl!  
14 - var EXPRESSION_SCROLL_VIEW_TAG:Int = 1000  
15 - var MOREFUCTION_SCROLL_VIEW_TAG:Int = 1001  
16 - ///pragma mark - UIScrollViewDelegate  
17 - override init(frame: CGRect) {  
18 - super.init(frame: frame)  
19 - expressionScrollView = UIScrollView(frame: CGRect(x:0, y:0, width:frame.size.width, height:180))  
20 - expressionScrollView.showsHorizontalScrollIndicator = false  
21 - expressionScrollView.isPagingEnabled = true  
22 - expressionScrollView.delegate = self  
23 - expressionPage = UIPageControl(frame: CGRect(x:0, y:180, width:frame.size.width, height:frame.size.height - 180))  
24 - expressionPage.center = CGPoint(x:getScreenWidth()/2, y:180 + (216 - 180)/2)  
25 - expressionPage.addTarget(self, action: #selector(CustomScrollView.pageTurn(_:)), for: UIControlEvents.touchUpInside)  
26 - expressionPage.currentPageIndicatorTintColor = Theme.topBarColor()  
27 - expressionPage.pageIndicatorTintColor = UIColor.black  
28 - expressionPage.numberOfPages = 0  
29 - self.backgroundColor = UIColor.white  
30 - self.addSubview(expressionScrollView)  
31 - self.addSubview(expressionPage)  
32 - }  
33 -  
34 - required init(coder aDecoder: NSCoder) {  
35 - fatalError("init(coder:) has not been implemented")  
36 - }  
37 -  
38 - func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {  
39 -  
40 - if scrollView.tag == EXPRESSION_SCROLL_VIEW_TAG || scrollView.tag == MOREFUCTION_SCROLL_VIEW_TAG {  
41 - //更新UIPageControl的当前页  
42 - let offset = scrollView.contentOffset;  
43 - let bounds = scrollView.frame;  
44 - expressionPage.currentPage = Int(offset.x/bounds.size.width)  
45 - }  
46 - }  
47 -  
48 - @IBAction func pageTurn(_ sender: AnyObject) {  
49 - //令UIScrollView做出相应的滑动显示  
50 -  
51 - let viewSize = expressionPage.frame.size  
52 - expressionScrollView.setContentOffset(CGPoint(x:CGFloat(sender.currentPage) * viewSize.width, y:0), animated: true)  
53 - }  
54 -}  
55 -  
56 -  
57 -class ExpressionView: CustomScrollView,UIPageViewControllerDelegate {  
58 - var delegate:ExpressionViewDelegate!  
59 - var pageNumber:Int = 7  
60 - var expressionArray:[String]!  
61 - override init(frame: CGRect) {  
62 - super.init(frame: frame)  
63 - initExpressins()  
64 - }  
65 - required init(coder aDecoder: NSCoder) {  
66 - fatalError("init(coder:) has not been implemented")  
67 - }  
68 -  
69 -  
70 - func initExpressins(){  
71 - let row:Int = 4  
72 - let column = 7  
73 - var number = 0  
74 - expressionArray = ["😄","😊","😃","☺","😏","😍","😘","😚","😳","😌","😆","😁","😉","😜","😝","😀","😙","😛","😴","😟","😬","😒","😅","😓","😥","😔","😞","😖","😨","😰","😣","😢","😭","😂","😲","😱","😠","😡","😤","😪","😋","😷","😎","😵","😈","👿","😇","👽","❤","💔","💕","💞","💘","💖","✨","🌟","💫","💥","💢","❗","❓","❕","❔","💤","💨","💦","🎵","🔥","👍","👎","👌","👊","✊","✌","👋","👇","👈","👉","🙌","🙏","👆","👏","💪","🏃","👫","👪","👬","👭","🙆","🙅","💁","🙋","👰","🙎","🙍","🙇","💏","💑","👶","👦","👧","👨","👩","👴","👵","👱","🙈","🙉","🙊","💋","💧","👂","👀","👃","👅","💌","☕","🍵","🍶","🍼","🍺","🍸","🍷","🍴","🍕","🍔","🍟","🍗","🍖","🍚","🍜","🍲","🍢","🍡","🍳","🍞","🍩","🍮","🍦","🍨","🍧","🎂","🍪","🍫","🍬","🍭","🍯","🍎","🍏","🍊","🍋","🍒","🍇","🍉","🍓","🍑","🍈","🍌","🍐","🍍","🍠","🍆","🍅","🌽","1⃣","2⃣","3⃣","4⃣","5⃣","6⃣","7⃣","8⃣","9⃣","0⃣","🔟","#⃣","◀","▶","🔼","↩","⬆","⬇","⬅","➡","↗","↖","↘","↙","⏫","⏬","🔤"]  
75 - pageNumber = (expressionArray.count-1)/row/column + 1  
76 - expressionPage.numberOfPages = pageNumber  
77 - expressionScrollView.tag = EXPRESSION_SCROLL_VIEW_TAG  
78 - expressionScrollView.contentSize = CGSize(width: expressionScrollView.frame.size.width*CGFloat(pageNumber), height: 0)  
79 -  
80 - let width:CGFloat = (UIScreen.main.bounds.width - 40)/7  
81 - for p:Int in 0 ..< pageNumber {  
82 - let pageOrginX = CGFloat(p)*expressionScrollView.frame.size.width  
83 - for j:Int in 0 ..< row {  
84 - let row_y = 15 + 40 * CGFloat(j)  
85 - for i:Int in 0 ..< column {  
86 - let column_x = 20 + width * CGFloat(i)  
87 - if number > expressionArray.count{  
88 - break  
89 - }  
90 - if j != row - 1 || i != column - 1 {  
91 - let btn = UIButton(frame: CGRect(x: pageOrginX+column_x, y: row_y, width: width, height: 30))  
92 - btn.tag = number  
93 - btn.backgroundColor = UIColor.clear  
94 - btn.titleLabel?.font = UIFont.systemFont(ofSize: 30)  
95 - btn.setTitle(expressionArray[number], for: .normal)  
96 - btn.addTarget(self, action: #selector(ExpressionView.putExpress(_:)), for: UIControlEvents.touchUpInside)  
97 - expressionScrollView.addSubview(btn)  
98 - number += 1  
99 - }  
100 - }  
101 - }  
102 - let delBtn = UIButton(frame: CGRect(x:pageOrginX+UIScreen.main.bounds.width - 20 - width, y:137, width:width, height:35))  
103 - delBtn.setImage(UIImage(named: "emoji_delete"), for: UIControlState.normal)  
104 - delBtn.addTarget(self, action: #selector(ExpressionView.backspaceText(_:)), for: UIControlEvents.touchUpInside)  
105 - expressionScrollView.addSubview(delBtn)  
106 - }  
107 - let sendBtn = UIButton()  
108 - sendBtn.frame = CGRect(x:self.frame.size.width-width*2, y:self.frame.size.height-40, width:60, height:30)  
109 - sendBtn.backgroundColor = Theme.topBarColor()  
110 - sendBtn.setTitle("发送", for: UIControlState.normal)  
111 - sendBtn.layer.cornerRadius = 5  
112 - sendBtn.titleLabel?.font = UIFont.systemFont(ofSize: 13)  
113 - sendBtn.addTarget(self, action: #selector(ExpressionView.emojiSendBtn(_:)), for: UIControlEvents.touchUpInside)  
114 - self.addSubview(sendBtn)  
115 - }  
116 -  
117 - func initMoreFudation(){  
118 -  
119 - }  
120 -  
121 - func putExpress(_ sender:AnyObject){  
122 - let button_tag = sender as! UIButton  
123 - if delegate != nil {  
124 - // delegate.emojiBtnInput(button_tag.tag)  
125 - delegate.emojiBtnInput(emoji: expressionArray[button_tag.tag])  
126 - }  
127 - }  
128 -  
129 - func backspaceText(_ sender:AnyObject){  
130 - if delegate != nil {  
131 - delegate.backSpaceText()  
132 - }  
133 - }  
134 -  
135 - func emojiSendBtn(_ sender:AnyObject){  
136 - if delegate != nil {  
137 - delegate.sendMessage()  
138 - }  
139 - }  
140 -}  
141 -  
142 -///MARK: - 表情的协议  
143 -protocol ExpressionViewDelegate : NSObjectProtocol {  
144 - // func emojiBtnInput(emojiTag:Int)  
145 - func emojiBtnInput(emoji:String)  
146 -  
147 - func backSpaceText()  
148 - func sendMessage()  
149 -}  
150 -  
YouerLiveVideo/YouerLiveVideo/Aliv/LiveVideoViewController.swift
@@ -1,56 +0,0 @@ @@ -1,56 +0,0 @@
1 -//  
2 -// LiveVideoViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 16/11/9.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -import CoreTelephony  
11 -class LiveVideoViewController: UIViewController {  
12 -  
13 - var callCenter:CTCallCenter!  
14 - var liveSession:AlivcLiveSession!  
15 - var url:String!  
16 - var timer:Timer!  
17 - var handle:FileHandle!  
18 - var currentPosition:AVCaptureDevicePosition!  
19 - var last:Int!  
20 - var logArray:NSMutableArray!  
21 - var lastPinchDistance:CGFloat!  
22 - var isCTCallStateDisconnected:Bool!  
23 -  
24 - override var preferredStatusBarStyle : UIStatusBarStyle {  
25 - return .default  
26 - }  
27 -  
28 - override var prefersStatusBarHidden:Bool{  
29 - return true  
30 - }  
31 -  
32 - override func viewDidLoad() {  
33 - super.viewDidLoad()  
34 - logArray = NSMutableArray()  
35 -  
36 - // Do any additional setup after loading the view.  
37 - }  
38 -  
39 - override func didReceiveMemoryWarning() {  
40 - super.didReceiveMemoryWarning()  
41 - // Dispose of any resources that can be recreated.  
42 - }  
43 -  
44 -  
45 - /*  
46 - // MARK: - Navigation  
47 -  
48 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
49 - override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {  
50 - // Get the new view controller using segue.destinationViewController.  
51 - // Pass the selected object to the new view controller.  
52 - }  
53 - */  
54 -  
55 -}  
56 -  
YouerLiveVideo/YouerLiveVideo/Aliv/MessageTableViewCell.swift
@@ -1,27 +0,0 @@ @@ -1,27 +0,0 @@
1 -//  
2 -// MessageTableViewCell.swift  
3 -// TableViewCellTest  
4 -//  
5 -// Created by 葛建军 on 16/11/19.  
6 -// Copyright © 2016年 HANGZHOUTEAM. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class MessageTableViewCell: UITableViewCell {  
12 - @IBOutlet var personImageView: UIImageView!  
13 - @IBOutlet var contentLabel: UILabel!  
14 - @IBOutlet var contentHeight: NSLayoutConstraint!  
15 - @IBOutlet var contentWidth: NSLayoutConstraint!  
16 - override func awakeFromNib() {  
17 - super.awakeFromNib()  
18 - // Initialization code  
19 - }  
20 -  
21 - override func setSelected(_ selected: Bool, animated: Bool) {  
22 - super.setSelected(selected, animated: animated)  
23 -  
24 - // Configure the view for the selected state  
25 - }  
26 -  
27 -}  
YouerLiveVideo/YouerLiveVideo/Aliv/MessageTableViewCell.xib
@@ -1,52 +0,0 @@ @@ -1,52 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">  
3 - <dependencies>  
4 - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>  
5 - <capability name="Constraints to layout margins" minToolsVersion="6.0"/>  
6 - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>  
7 - </dependencies>  
8 - <objects>  
9 - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>  
10 - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>  
11 - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="28" id="KGk-i7-Jjw" customClass="MessageTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target">  
12 - <rect key="frame" x="0.0" y="0.0" width="320" height="28"/>  
13 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
14 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" restorationIdentifier="MessageTableViewCell" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">  
15 - <frame key="frameInset" width="320" height="27"/>  
16 - <autoresizingMask key="autoresizingMask"/>  
17 - <subviews>  
18 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="x2S-y4-nB8">  
19 - <constraints>  
20 - <constraint firstAttribute="height" constant="20" id="Sev-X4-7BV"/>  
21 - <constraint firstAttribute="width" constant="20" id="sbk-4c-kjT"/>  
22 - </constraints>  
23 - </imageView>  
24 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bH7-1c-xjC">  
25 - <color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>  
26 - <constraints>  
27 - <constraint firstAttribute="height" constant="17" id="pVR-q3-0t8"/>  
28 - <constraint firstAttribute="width" constant="35.5" id="wO5-f6-3GH"/>  
29 - </constraints>  
30 - <fontDescription key="fontDescription" type="system" pointSize="14"/>  
31 - <nil key="textColor"/>  
32 - <nil key="highlightedColor"/>  
33 - </label>  
34 - </subviews>  
35 - <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="calibratedRGB"/>  
36 - <constraints>  
37 - <constraint firstItem="bH7-1c-xjC" firstAttribute="leading" secondItem="x2S-y4-nB8" secondAttribute="trailing" constant="8" id="5ck-CI-g4R"/>  
38 - <constraint firstAttribute="topMargin" secondItem="x2S-y4-nB8" secondAttribute="top" id="8Fk-kd-Yaj"/>  
39 - <constraint firstAttribute="leadingMargin" secondItem="x2S-y4-nB8" secondAttribute="leading" id="Mls-bw-OUb"/>  
40 - <constraint firstItem="bH7-1c-xjC" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="3" id="iSK-8C-cgN"/>  
41 - </constraints>  
42 - </tableViewCellContentView>  
43 - <connections>  
44 - <outlet property="contentHeight" destination="pVR-q3-0t8" id="MCG-ob-6KF"/>  
45 - <outlet property="contentLabel" destination="bH7-1c-xjC" id="L0L-sE-RWm"/>  
46 - <outlet property="contentWidth" destination="wO5-f6-3GH" id="xYt-kD-dbG"/>  
47 - <outlet property="personImageView" destination="x2S-y4-nB8" id="Hem-Nb-QBh"/>  
48 - </connections>  
49 - <point key="canvasLocation" x="26" y="44"/>  
50 - </tableViewCell>  
51 - </objects>  
52 -</document>  
YouerLiveVideo/YouerLiveVideo/AliveVideoPlayer/AlivcInforViewController.swift
@@ -1,150 +0,0 @@ @@ -1,150 +0,0 @@
1 -//  
2 -// AlivcInforViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 17/1/16.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class AlivcInforViewController: UIViewController {  
12 -  
13 -  
14 - @IBOutlet weak var contentView: UIView!  
15 - @IBOutlet weak var scrollView: UIScrollView!  
16 - @IBOutlet weak var alivcInfor: UILabel!  
17 - @IBOutlet weak var remainBtn: UIButton!  
18 - @IBOutlet weak var userNum: UILabel!  
19 - @IBOutlet weak var nickName: UILabel!  
20 - @IBOutlet weak var image: UIImageView!  
21 -  
22 - @IBOutlet weak var contentheight: NSLayoutConstraint!  
23 - @IBOutlet weak var fileLine: UILabel!//直播上方的一条线  
24 - @IBOutlet weak var alivcAccessories: UIView!  
25 - var liveDetail:LiveDetail!  
26 - var fileArr:[FileInfor] = []  
27 - override func viewDidLoad() {  
28 - super.viewDidLoad()  
29 - if liveDetail.f_IsAttention == 1{  
30 - remainBtn.setTitle("已关注", for: .normal)  
31 - }  
32 - nickName.text = "昵称 : " + liveDetail.f_RealName  
33 - alivcInfor.text = JSON.fromString(jsonString: liveDetail.f_Description)!.dictionaryValue["announcement"]!.stringValue  
34 - userNum.text = "帐号 : " + liveDetail.f_Account  
35 - image.sd_setImage(with: URL(string: liveDetail.f_HeadIcon), placeholderImage: #imageLiteral(resourceName: "default_userRoom"))  
36 - image.layer.cornerRadius = image.frame.size.width/2  
37 - image.layer.masksToBounds = true  
38 - creatAlivcAccessoriesView()  
39 -// image  
40 -  
41 - // Do any additional setup after loading the view.  
42 - }  
43 - @IBAction func isActionClick(_ sender: UIButton) {  
44 - if !NIMSDK.shared().loginManager.isLogined(){  
45 - AppDelegate.instance().window?.makeToast("请您先登录!")  
46 - return  
47 - }  
48 - var isAttention = 0  
49 - var str = "是否确认取消关注"  
50 - if liveDetail.f_IsAttention == 0{  
51 - isAttention = 1  
52 - str = "是否确认关注"  
53 - }  
54 -  
55 - let alert = UIAlertController(title: nil, message: str, preferredStyle: .alert)  
56 - alert.addAction(UIAlertAction(title: "确定", style: .default, handler: { (action) in  
57 - AppDelegate.instance().httpServer.setIsAction(parameters: ["F_OrganizeId":self.liveDetail.f_OrganizeId as AnyObject,"F_Action":isAttention as AnyObject]) { (str, error) in  
58 - if error == nil {  
59 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
60 - if isAttention == 1{  
61 - self.remainBtn.setTitle("已关注", for: .normal)  
62 - }else{  
63 - self.remainBtn.setTitle("+ 关注", for: .normal)  
64 - }  
65 - self.liveDetail.f_IsAttention = isAttention  
66 - }else{  
67 - self.view.makeToast("关注失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
68 - }  
69 - }  
70 - else{  
71 - self.view.makeToast("关注失败:\(error?.localizedFailureReason)")  
72 - }  
73 - }  
74 - }))  
75 - alert.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))  
76 - self.present(alert, animated: false, completion: nil)  
77 -  
78 - }  
79 -  
80 - override func viewWillAppear(_ animated: Bool) {  
81 - super.viewWillAppear(animated)  
82 - }  
83 -  
84 - func creatAlivcAccessoriesView(){  
85 - let des = JSON.fromString(jsonString: liveDetail.f_Description)!["attachFiles"].arrayValue  
86 - for item in des{  
87 - fileArr.append(FileInfor(json: item))  
88 - }  
89 - if fileArr.count == 0{  
90 - fileLine.isHidden = true  
91 - alivcAccessories.isHidden = true  
92 - }else{  
93 - fileLine.isHidden = false  
94 - alivcAccessories.isHidden = false  
95 - for i in 0..<fileArr.count{  
96 - let views = UIView(frame: CGRect(x: 0, y: alivcAccessories.frame.maxY+(20+8)*CGFloat(i)+4, width: getScreenWidth(), height: 28))  
97 - let image = UIImageView(frame: CGRect(x: alivcAccessories.frame.origin.x, y: 4, width: 20, height: 20))  
98 - let imageName = selectImageFromString(string: fileArr[i].name)  
99 - image.image = UIImage(named: imageName)  
100 - views.addSubview(image)  
101 - let label = UILabel(frame: CGRect(x: image.frame.maxX+8, y: image.frame.origin.y, width: self.view.frame.size.width - image.frame.maxX+8 - 20, height: 20))  
102 - label.font = UIFont.systemFont(ofSize: 13)  
103 - label.textAlignment = .left  
104 - label.textColor = UIColor.black  
105 - label.text = fileArr[i].name  
106 - views.addSubview(label)  
107 - views.tag = i+10000  
108 - views.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(AlivcInforViewController.tapGestureClickAction(tap:))))  
109 - contentView.addSubview(views)  
110 - }  
111 - contentheight.constant = contentView.viewWithTag(10000+fileArr.count-1)!.frame.maxY  
112 - }  
113 - }  
114 -  
115 - func tapGestureClickAction(tap:UIGestureRecognizer){  
116 - let num = tap.view!.tag - 10000  
117 - let down=DownLoad.share  
118 - down.superVC=self  
119 - down.downLoadWithUrl(url: fileArr[num].url)  
120 -  
121 - }  
122 -  
123 - override func didReceiveMemoryWarning() {  
124 - super.didReceiveMemoryWarning()  
125 - // Dispose of any resources that can be recreated.  
126 - }  
127 -  
128 -  
129 - /*  
130 - // MARK: - Navigation  
131 -  
132 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
133 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {  
134 - // Get the new view controller using segue.destinationViewController.  
135 - // Pass the selected object to the new view controller.  
136 - }  
137 - */  
138 -  
139 -}  
140 -  
141 -class FileInfor {  
142 - var name:String!  
143 - var url:String!  
144 - var fileSize:NSNumber!  
145 - init(json:JSON){  
146 - name = json["fileName"].stringValue  
147 - url = json["fileUrl"].stringValue  
148 - fileSize = json["fileSize"].numberValue  
149 - }  
150 -}  
YouerLiveVideo/YouerLiveVideo/AliveVideoPlayer/MoivePlayerViewController.swift
@@ -1,966 +0,0 @@ @@ -1,966 +0,0 @@
1 -//  
2 -// MoivePlayerViewController.swift  
3 -// XSTVideoPalyer  
4 -//  
5 -// Created by 左丞 on 16/11/23.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -import Foundation  
11 -  
12 -class MoivePlayerViewController: UIViewController,AliVcAccessKeyProtocol,RiverRunCommentManagerDelegate,NIMChatManagerDelegate,UITextFieldDelegate,UITableViewDelegate,UITableViewDataSource,UIScrollViewDelegate {  
13 -  
14 -  
15 - @IBOutlet weak var shareView: UIView!  
16 - @IBOutlet weak var shareViewBottom: NSLayoutConstraint!  
17 -  
18 - @IBOutlet weak var scrollHeight: NSLayoutConstraint!  
19 - @IBOutlet weak var scrollBottom: NSLayoutConstraint!  
20 - @IBOutlet weak var scrollView: UIScrollView!  
21 - @IBOutlet weak var scrollviewLocalView: UIView!  
22 - @IBOutlet weak var scrollViewContanctWidth: NSLayoutConstraint!  
23 -  
24 - @IBOutlet weak var userImage: UIImageView!  
25 -  
26 - @IBOutlet weak var activeNum: UILabel!  
27 - @IBOutlet weak var userName: UILabel!  
28 - @IBOutlet weak var screenHorizontalBtn: UIButton!  
29 - @IBOutlet weak var chatTableView: UITableView!  
30 - @IBOutlet weak var leaveMessageTableView: UITableView!  
31 - @IBOutlet weak var sunTitleView: UIView!  
32 - var sendWord: UITextField!  
33 - var sendWordView: UIView!  
34 -// var recharge:UIButton!  
35 -// var presentView:UIButton!  
36 - var sendWordBtn:UIButton!  
37 -  
38 - var mPlayerView:UIView!  
39 - var activityBackgroundView:UIView!  
40 - var activityIndicator:UIActivityIndicatorView!  
41 - var mPlayer:AliVcMediaPlayer!  
42 - @IBOutlet weak var chatLocalView: UIView!  
43 - @IBOutlet weak var leaveMessageLocalView: UIView!  
44 - var systemBrightness:CGFloat!//屏幕亮度  
45 - var conn:Reachability!  
46 - var isReplay:Bool = false  
47 - var mPaused:Bool = false  
48 - var mSourceURL:URL!  
49 -  
50 -  
51 - var accessKeyID = "LTAIDOJoPQejwtoF"  
52 - var accessKeySecret = "rCRMo1TFvBWIkKASB59DRmRJxm9GyK"  
53 - var commentTimer:Timer!  
54 - var manager:RiverRunCommentManager!  
55 - var commentNUM:CGFloat!  
56 - var commentArray:[Any] = []  
57 - var liveDetail:LiveDetail!//当前没有传发送消息会闪退  
58 - var messageArr:[NIMMessage] = []  
59 - var leaveMessageArr:[Comment] = []  
60 - var timer:Timer!  
61 - var isSendChatMessage:Int = 0//0聊天,1简介,2留言板  
62 - var activePersonNum:NSInteger = 0  
63 - func getAccessKeyIDSecret() -> AliVcAccesskey! {  
64 - let accessKey = AliVcAccesskey()  
65 - accessKey.accessKeyId = accessKeyID  
66 - accessKey.accessKeySecret = accessKeySecret  
67 - return accessKey  
68 - }  
69 - override func viewDidLoad() {  
70 - super.viewDidLoad()  
71 - mSourceURL = URL(string:creatAlivcURLString(sid: liveDetail.f_Sid))  
72 - userName.text = liveDetail.f_RealName  
73 - userImage.sd_setImage(with: URL(string: liveDetail.f_HeadIcon), placeholderImage: #imageLiteral(resourceName: "default_userRoom"))  
74 - NIMSDK.shared().chatManager.add(self)  
75 - scrollHeight.constant = 100  
76 - btnFlagLabel.frame = CGRect(x: 0, y: 28, width: (getScreenWidth()-2)/3, height: 4)  
77 - scrollViewContanctWidth.constant = getScreenWidth()*3  
78 - scrollView.isPagingEnabled = true  
79 - scrollView.showsHorizontalScrollIndicator = false  
80 - scrollView.showsVerticalScrollIndicator = false  
81 -  
82 - AliVcMediaPlayer.setAccessKeyDelegate(self)  
83 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.becomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)  
84 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.resignActive), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)  
85 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.keyboardFrrameChange(noti:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)  
86 -  
87 - playMoive()  
88 - changeMPlayFrame()  
89 - mPlayer.scalingMode = scalingModeAspectFit  
90 - commentTimer = Timer(timeInterval: 0.1, target: self, selector: #selector(MoivePlayerViewController.commentTimerFired), userInfo: nil, repeats: true)  
91 - commentNUM = 0  
92 - RunLoop.current.add(commentTimer, forMode: .commonModes)  
93 - manager = RiverRunCommentManager(comments: commentArray, delegate: self, andPresent: sunTitleView)  
94 - manager.start()  
95 - self.view.sendSubview(toBack: sunTitleView)  
96 -  
97 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.networkStateChange), name: NSNotification.Name.reachabilityChanged, object: nil)  
98 - conn = Reachability.forInternetConnection()  
99 - conn.startNotifier()  
100 - toolsCreat()  
101 - let parameters:Dictionary<String,AnyObject>=["LiveId":liveDetail.f_Id as AnyObject]  
102 - AppDelegate.instance().httpServer.postLiveComment(parameters: parameters) { (str, error) in  
103 - if error==nil {  
104 -  
105 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
106 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
107 - for item in json.contentData().arrayValue{  
108 - self.leaveMessageArr.append(Comment(json: item))  
109 - }  
110 - self.leaveMessageArr.sort(by: { (l1, l2) -> Bool in  
111 - return l1.f_CreatorTime < l2.f_CreatorTime  
112 - })  
113 - self.leaveMessageTableView.reloadData()  
114 - if self.leaveMessageArr.count > 0{  
115 - self.leaveMessageTableView.scrollToRow(at: IndexPath(row: self.leaveMessageArr.count-1, section: 0), at: .bottom, animated: false)  
116 - }  
117 - }, failHandler: { (error) in  
118 - self.view.makeToast("获取留言失败:\(error.localizedDescription)")  
119 - })  
120 - }  
121 - }  
122 - }  
123 -  
124 - XSTLiveManager.shareXSTLiveManager().enterLive(roomId: liveDetail.f_RoomId, completion: {  
125 - succ,room,member in  
126 - if !succ{  
127 - self.sendWord.placeholder = "请您先登录,在发送消息"  
128 - self.sendWord.isUserInteractionEnabled = false  
129 -  
130 - }else{  
131 - self.activePersonNum = room!.onlineUserCount  
132 - self.activeNum.text = "\(room!.onlineUserCount)"  
133 - }  
134 - })  
135 - XSTLiveManager.shareXSTLiveManager().fetchLiveInfo(roomId: liveDetail.f_RoomId, completion: { suc , room in  
136 - if suc {  
137 - }  
138 - })  
139 - sendWordView.frame = CGRect(x: 0, y: getScreenHeight()-50, width: getScreenWidth(), height: 50)  
140 -  
141 -  
142 - // Do any additional setup after loading the view.  
143 - }  
144 -  
145 - func toolsCreat(){  
146 - sendWordView = UIView(frame: CGRect(x: 0, y: getScreenHeight()-50, width: getScreenWidth(), height: 50))  
147 - sendWordView.backgroundColor = UIColor.lightGray.withAlphaComponent(0.7)  
148 - self.view.insertSubview(sendWordView, belowSubview: shareView)  
149 -// presentView = UIButton(frame: CGRect(x: sendWordView.frame.size.width-42, y: 8, width: 34, height: 34))  
150 -// presentView.setImage(#imageLiteral(resourceName: "礼物数量.png").withRenderingMode(.alwaysTemplate), for: .normal)  
151 -// presentView.tintColor = Theme.topBarColor()  
152 -//  
153 -// presentView.backgroundColor = UIColor.white  
154 -// presentView.layer.cornerRadius = 5  
155 -// presentView.layer.masksToBounds = true  
156 -// presentView.addTarget(self, action: #selector(MoivePlayerViewController.presentBtnClick), for: .touchUpInside)  
157 -// sendWordView.addSubview(presentView)  
158 -  
159 -// recharge = UIButton(frame: CGRect(x: presentView.frame.origin.x - 58, y: 8, width: 50, height: 34))  
160 -// recharge.backgroundColor = UIColor.white  
161 -// recharge.setTitle("充值", for: .normal)  
162 -// recharge.titleLabel?.font = UIFont.systemFont(ofSize: 15)  
163 -// recharge.setTitleColor(Theme.topBarColor(), for: .normal)  
164 -//  
165 -// recharge.layer.cornerRadius = 5  
166 -// recharge.layer.masksToBounds = true  
167 -//  
168 -// recharge.addTarget(self, action: #selector(MoivePlayerViewController.rechargeBtnClick), for: .touchUpInside)  
169 -// sendWordView.addSubview(recharge)  
170 -//  
171 -// sendWord = UITextField(frame: CGRect(x: 8, y: 8, width: recharge.frame.origin.x - 16, height: 34))  
172 - sendWord = UITextField(frame: CGRect(x: 8, y: 8, width: getScreenWidth() - 16 - 76, height: 34))  
173 -  
174 - sendWord.delegate = self  
175 - sendWord.returnKeyType = .send  
176 - sendWord.layer.cornerRadius = 5  
177 - sendWord.placeholder = "请输入聊天内容"  
178 - sendWord.backgroundColor = UIColor.white  
179 - sendWord.font = UIFont.systemFont(ofSize: 15)  
180 - sendWord.layer.masksToBounds = true  
181 - sendWord.layer.borderColor = UIColor.lightGray.cgColor  
182 - sendWord.layer.borderWidth = 1  
183 - sendWordView.addSubview(sendWord)  
184 -  
185 - sendWordBtn = UIButton(frame: CGRect(x: sendWord.frame.maxX + 8, y: 8, width: 60, height: 34))  
186 - sendWordBtn.backgroundColor = Theme.topBarColor()  
187 - sendWordBtn.setTitle("发 送", for: .normal)  
188 - sendWordBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15)  
189 - sendWordBtn.setTitleColor(UIColor.white, for: .normal)  
190 -  
191 - sendWordBtn.layer.cornerRadius = 5  
192 - sendWordBtn.layer.masksToBounds = true  
193 -  
194 - sendWordBtn.addTarget(self, action: #selector(MoivePlayerViewController.sendmessage(_:)), for: .touchUpInside)  
195 - sendWordView.addSubview(sendWordBtn)  
196 -  
197 -  
198 - }  
199 - // 返回状态栏的样式  
200 - override var preferredStatusBarStyle: UIStatusBarStyle{  
201 - return UIStatusBarStyle.lightContent  
202 - }  
203 -  
204 - func rechargeBtnClick(){  
205 - AppDelegate.instance().window?.makeToast("敬请期待...")  
206 - }  
207 -  
208 - func presentBtnClick(){  
209 - AppDelegate.instance().window?.makeToast("敬请期待...")  
210 - }  
211 -  
212 - override func viewWillDisappear(_ animated: Bool) {  
213 - super.viewWillDisappear(animated)  
214 - if timer != nil{  
215 - timer.invalidate()  
216 - timer = nil  
217 - }  
218 - XSTLiveManager.shareXSTLiveManager().removeLive(roomId: liveDetail.f_RoomId, completion: {  
219 - succ in  
220 -  
221 - })  
222 - }  
223 -  
224 - override func viewDidAppear(_ animated: Bool) {  
225 - super.viewDidAppear(animated)  
226 - AppDelegate.instance().blockRotation = true  
227 - systemBrightness = UIScreen.main.brightness  
228 - }  
229 -  
230 - override func viewDidDisappear(_ animated: Bool) {  
231 - super.viewDidDisappear(animated)  
232 - UIScreen.main.brightness = systemBrightness  
233 - }  
234 -  
235 - func keyboardFrrameChange(noti:NSNotification){  
236 - self.view.insertSubview(sendWordView, belowSubview: shareView)  
237 - sendWordView.frame.origin.x = 0  
238 - sendWordView.frame.origin.y = getScreenHeight() - 50  
239 - let userinfor = noti.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue  
240 - let rect = userinfor!.cgRectValue  
241 - UIView.animate(withDuration: 0.25, animations: {  
242 - self.sendWordView.frame.origin.y = getScreenHeight() - rect.size.height - 50  
243 - }, completion: { finsh in  
244 - if rect.origin.y != getScreenHeight(){  
245 - self.displayAllBtn()  
246 - }  
247 - })  
248 - }  
249 -  
250 - func becomeActive(){  
251 - EnterForeGroundPlayVideo()  
252 -  
253 - }  
254 -  
255 - func resignActive(){  
256 - EnterBackGroundPauseVideo()  
257 - }  
258 -  
259 - func EnterBackGroundPauseVideo(){  
260 - if mPlayer != nil && !mPaused {  
261 - mPlayer.pause()  
262 - }  
263 - UIScreen.main.brightness = systemBrightness  
264 - }  
265 -  
266 - func EnterForeGroundPlayVideo(){  
267 - if mPlayer != nil && !mPaused {  
268 - mPlayer.play()  
269 -  
270 - }  
271 - UIScreen.main.brightness = systemBrightness  
272 - }  
273 -  
274 - func networkStateChange(){  
275 - if mSourceURL != nil && mSourceURL.isFileURL{  
276 - checkNetworkState()  
277 - }  
278 - }  
279 -  
280 - func checkNetworkState(){  
281 - let wifi = Reachability.forLocalWiFi()  
282 - conn = Reachability.forInternetConnection()  
283 - if wifi?.currentReachabilityStatus() != NotReachable{  
284 - NSLog("有wifi")  
285 - }else if conn.currentReachabilityStatus() != NotReachable{  
286 - NSLog("使用手机自带网络进行上网")  
287 - }else{  
288 - NSLog("没有网络")  
289 - }  
290 - }  
291 - func displayAllBtn(){  
292 - for i in 0...4{  
293 - self.view.viewWithTag(200+i)?.isHidden = false  
294 - }  
295 - sendWordView.isHidden = false  
296 - if timer != nil{  
297 - timer.invalidate()  
298 - timer = nil  
299 - }  
300 - if self.sendWordView.frame.origin.y == getScreenHeight()-50{  
301 - timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(MoivePlayerViewController.hiddenAllBtn), userInfo: nil, repeats: false)  
302 - }  
303 - }  
304 -  
305 - func hiddenAllBtn(){  
306 - for i in 0...4{  
307 - self.view.viewWithTag(200+i)?.isHidden = true  
308 - }  
309 - if screenHorizontalBtn.isSelected{  
310 - sendWordView.isHidden = true  
311 - }  
312 - }  
313 -  
314 - func setupControls(){  
315 - mPlayerView = UIView(frame: CGRect(x: 0, y: 0, width: getScreenWidth(), height: getScreenHeight()))  
316 - mPlayerView.backgroundColor = UIColor.clear  
317 - self.view.insertSubview(mPlayerView, at: 0)  
318 - //缓冲指示  
319 - activityBackgroundView = UIView()  
320 - activityBackgroundView.backgroundColor = UIColor.black.withAlphaComponent(0.5)  
321 - activityBackgroundView.alpha = 0  
322 - activityBackgroundView.center = mPlayerView.center  
323 - activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)  
324 - activityIndicator.hidesWhenStopped = true  
325 - activityIndicator.center = mPlayerView.center  
326 - activityIndicator.alpha = 0  
327 -  
328 - }  
329 -  
330 - func playMoive(){  
331 - if mSourceURL == nil{  
332 - return  
333 - }  
334 - setupControls()  
335 - mPlayer = AliVcMediaPlayer()  
336 - mPlayer.create(mPlayerView)  
337 - mPlayer.view.isUserInteractionEnabled = true  
338 - addPlayerObserver()  
339 - mPlayer.mediaType = MediaType_AUTO  
340 - mPlayer.timeout = 25000  
341 - mPlayer.dropBufferDuration = 8000  
342 - mPlayer.scalingMode = scalingModeAspectFitWithCropping  
343 - isReplay = false  
344 -  
345 - var err = mPlayer.prepare(toPlay: mSourceURL)  
346 - if err != ALIVC_SUCCESS{  
347 - activityBackgroundView.removeFromSuperview()  
348 - activityIndicator.removeFromSuperview()  
349 - return  
350 - }  
351 - err = mPlayer.play()  
352 - if err != ALIVC_SUCCESS{  
353 - return  
354 - }  
355 - showLoadingIndicators()  
356 -  
357 - }  
358 -  
359 - func replayMoive(){  
360 - mPlayer.prepare(toPlay: mSourceURL)  
361 - isReplay = false  
362 - mPlayer.play()  
363 - }  
364 -  
365 - var scroolPage:CGFloat=0  
366 - @IBAction func isHorScreenClickAction(_ sender: UIButton) {  
367 - sendWord.resignFirstResponder()  
368 - screenHorizontalBtn.isSelected = !screenHorizontalBtn.isSelected  
369 - scrollviewLocalView.isHidden = screenHorizontalBtn.isSelected  
370 - if screenHorizontalBtn.isSelected{  
371 - scroolPage = scrollView.contentOffset.x  
372 - screenHorizontalBtn.setBackgroundImage(#imageLiteral(resourceName: "screen_part"), for: .normal)  
373 - displayAllBtn()  
374 - UIApplication.shared.statusBarOrientation = .landscapeRight  
375 - UIApplication.shared.keyWindow?.transform = CGAffineTransform(rotationAngle: CGFloat(M_PI_2))  
376 - UIApplication.shared.keyWindow?.frame = CGRect(x: 0, y: 0, width: getScreenHeight(), height: getScreenWidth())  
377 - }else{  
378 - screenHorizontalBtn.setBackgroundImage(#imageLiteral(resourceName: "screen_full"), for: .normal)  
379 - UIApplication.shared.statusBarOrientation = .portrait  
380 - UIApplication.shared.keyWindow?.transform = CGAffineTransform(rotationAngle: 0)  
381 - UIApplication.shared.keyWindow?.frame = CGRect(x: 0, y: 0, width: getScreenWidth(), height: getScreenHeight())  
382 - scrollView.contentOffset.x = scroolPage  
383 - }  
384 - changeMPlayFrame()  
385 - sendWordView.frame = CGRect(x: 0, y: getScreenHeight()-50, width: getScreenWidth(), height: 50)  
386 -// presentView.frame.origin.x = sendWordView.frame.size.width - 42  
387 -// recharge.frame.origin.x = presentView.frame.origin.x - 58  
388 -// sendWord.frame.size.width = recharge.frame.origin.x - 16  
389 - sendWord.frame.size.width = getScreenWidth() - 76  
390 - sendWordBtn.frame.origin.x = sendWord.frame.maxX + 8  
391 -  
392 - if isSendChatMessage != 1{  
393 - self.view.insertSubview(sendWordView, belowSubview: shareView)  
394 - }  
395 - }  
396 -  
397 - override var shouldAutorotate: Bool{  
398 - return false  
399 - }  
400 -  
401 - @IBAction func subTitleCloseClickAction(_ sender: UIButton) {  
402 - displayAllBtn()  
403 - sender.isSelected = !sender.isSelected  
404 - subtitleOff = sender.isSelected  
405 - if !sender.isSelected{  
406 - sender.setBackgroundImage(#imageLiteral(resourceName: "subTitle_on"), for: .normal)  
407 - }else{  
408 - sender.setBackgroundImage(#imageLiteral(resourceName: "subTitle_off"), for: .normal)  
409 - }  
410 - subTitleClickAction(isOff: sender.isSelected)  
411 - }  
412 -  
413 - @IBAction func cancleKeyboaed(_ sender: Any) {  
414 - self.view.endEditing(true)  
415 - self.sendWordView.frame.origin.y = getScreenHeight() - (self.sendWordView.superview!.frame.size.height - self.sendWordView.frame.maxY) - 50  
416 - if isSendChatMessage != 1{  
417 - self.view.insertSubview(sendWordView, belowSubview: shareView)  
418 - }  
419 - UIView.animate(withDuration: 0.25, animations: {  
420 - self.sendWordView.frame.origin.y = getScreenHeight() - 50  
421 - self.shareViewBottom.constant = -120  
422 - self.view.layer.layoutIfNeeded()  
423 - }, completion: { finsh in  
424 - self.displayAllBtn()  
425 - })  
426 - }  
427 -  
428 - @IBAction func subTitleTapClickAction(_ sender: Any) {  
429 - cancleKeyboaed(sender)  
430 - }  
431 -  
432 - @IBAction func backBtnClickAction(_ sender: UIButton) {  
433 - if screenHorizontalBtn.isSelected{  
434 - isHorScreenClickAction(screenHorizontalBtn)  
435 - displayAllBtn()  
436 - }else{  
437 - UIApplication.shared.statusBarOrientation = .portrait  
438 - UIApplication.shared.keyWindow?.transform = CGAffineTransform(rotationAngle: 0)  
439 - UIApplication.shared.keyWindow?.frame = CGRect(x: 0, y: 0, width: getScreenWidth(), height: getScreenHeight())  
440 -  
441 - AppDelegate.instance().blockRotation = false  
442 - if mPlayer != nil{  
443 - mPlayer.destroy()  
444 - }  
445 - removePlayerObserver()  
446 - mPlayer = nil  
447 - mSourceURL = nil  
448 - self.dismiss(animated: true, completion: nil)  
449 - }  
450 - }  
451 -  
452 - var subtitleOff:Bool = false  
453 - @IBAction func playPauseClickAction(_ sender: UIButton) {  
454 - displayAllBtn()  
455 - if sender.isSelected{  
456 - sender.setBackgroundImage(#imageLiteral(resourceName: "starLive"), for: .normal)  
457 - if isReplay {  
458 - mPlayer.prepare(toPlay: mSourceURL)  
459 - isReplay = false  
460 - }  
461 - subTitleClickAction(isOff: subtitleOff);  
462 - mPlayer.play()  
463 - mPaused = false  
464 - mPlayer.muteMode = false  
465 - }else{  
466 - sender.setBackgroundImage(#imageLiteral(resourceName: "暂停.png"), for: .normal)  
467 - subTitleClickAction(isOff: true);  
468 - mPlayer.pause()  
469 - mPaused = true  
470 - }  
471 - sender.isSelected = !sender.isSelected  
472 - // self.perform(#selector(MoivePlayerViewController.hideControls(com)), with: nil, afterDelay: fadeDelay)  
473 -  
474 - }  
475 -  
476 - @IBAction func shareBtnClick(_ sender: UIButton) {  
477 - displayAllBtn()  
478 - UIView.animate(withDuration: 0.25, animations: {  
479 - self.shareViewBottom.constant = 0  
480 - self.view.layer.layoutIfNeeded()  
481 - })  
482 - }  
483 -  
484 - @IBAction func shareTapGestrueClick(_ sender: UITapGestureRecognizer) {  
485 - var platformType:UMSocialPlatformType!  
486 - var text:String = "大家快来观看,\(AppDelegate.instance().accountManager.name())正在直播"  
487 - switch sender.view!.tag {  
488 - case 300://微信朋友圈  
489 - platformType=UMSocialPlatformType.wechatTimeLine  
490 - break  
491 - case 301://微信  
492 - platformType=UMSocialPlatformType.wechatSession  
493 - text = "\(AppDelegate.instance().accountManager.name())给您分享了一个直播,快来看啊"  
494 - break  
495 - case 302://QQ空间  
496 - platformType=UMSocialPlatformType.qzone  
497 -  
498 - break  
499 - case 303://新浪微博  
500 - platformType=UMSocialPlatformType.sina  
501 - //要求text加url  
502 - break  
503 - case 304://QQ  
504 - platformType=UMSocialPlatformType.QQ  
505 - text = "\(AppDelegate.instance().accountManager.name())给您分享了一个直播,快来看啊"  
506 - break  
507 - default:  
508 - break  
509 - }  
510 - var title:String = liveDetail.f_LiveName  
511 - if liveDetail.f_LiveName.characters.count > 8{  
512 - title = (liveDetail.f_LiveName as NSString).substring(to: 7)+"..."  
513 - }  
514 - shareUrl(text: text, url: "http://www.sxspy.net/MZhiBo/Index?LiveId="+liveDetail.f_Id, VC: self, image: #imageLiteral(resourceName: "subTitle_on"), platformType: platformType,title:title)  
515 - }  
516 -  
517 -  
518 -  
519 - func textFieldShouldReturn(_ textField: UITextField) -> Bool {  
520 - textField.resignFirstResponder()  
521 - UIView.animate(withDuration: 0.25, animations: {  
522 - self.sendWordView.frame.origin.y = getScreenHeight() - 50  
523 - }, completion: { finsh in  
524 - self.displayAllBtn()  
525 - })  
526 - sendMessage()  
527 - return false  
528 - }  
529 -  
530 - func sendMessage(){  
531 - if sendWord.text != ""&&sendWord.text?.replacingOccurrences(of:" " , with: "") != ""{  
532 - if isSendChatMessage == 0{  
533 - XSTLiveManager.shareXSTLiveManager().sendMessage(str: sendWord.text!, roomId: liveDetail.f_RoomId, completion: {succ in  
534 - if !succ{  
535 - AppDelegate.instance().window?.makeToast("消息发送失败")  
536 - }  
537 - })  
538 - }else{//发送留言  
539 - AppDelegate.instance().httpServer.getLiveUserComment(parameters: ["LiveId":liveDetail.f_Id as AnyObject,"CommentDetail":sendWord.text! as AnyObject], completionHandler: { (str, error) in  
540 - if error == nil && JSON.fromString(jsonString: str)!["status"].intValue == 1{  
541 - AppDelegate.instance().window?.makeToast("留言成功")  
542 - let com = Comment()  
543 - com.f_RealName = AppDelegate.instance().accountManager.name()  
544 - com.f_HeadIcon = AppDelegate.instance().accountManager.photo()  
545 - com.f_CreatorUserId = AppDelegate.instance().accountManager.userid  
546 - com.f_CreatorTime = currentTime()  
547 - com.liveId = self.liveDetail.f_Id  
548 - com.commentDetail = self.sendWord.text!  
549 - self.leaveMessageArr.append(com)  
550 - self.sendWord.text = ""  
551 - self.leaveMessageTableView.insertRows(at: [IndexPath(item: self.leaveMessageArr.count - 1, section: 0)], with: .bottom)  
552 - self.leaveMessageTableView.scrollToRow(at: IndexPath(item: self.leaveMessageArr.count-1, section: 0), at: .bottom, animated: true)  
553 -  
554 - }else{  
555 - AppDelegate.instance().window?.makeToast("留言失败:\(error?.localizedDescription)")  
556 - }  
557 - })  
558 - }  
559 - }else{  
560 - if isSendChatMessage == 0{  
561 - AppDelegate.instance().window?.makeToast("不能发送内容为空消息")  
562 - }else{  
563 - AppDelegate.instance().window?.makeToast("不能发送内容为空留言")  
564 - }  
565 - }  
566 - }  
567 -  
568 - @IBAction func sendmessage(_ sender: UIButton) {  
569 - sendMessage()  
570 - }  
571 -  
572 - @IBAction func sendLeavemessagemessage(_ sender: UIButton) {  
573 -  
574 - }  
575 -  
576 - func onRecvMessages(_ messages: [NIMMessage]) {  
577 - for message in messages {  
578 - if message.messageType == NIMMessageType.notification{  
579 - if message.messageType == NIMMessageType.notification{  
580 -  
581 - if let name = ((message.messageObject as! NIMNotificationObject).content as! NIMChatroomNotificationContent).notifyExt {  
582 - if name != "name"+AppDelegate.instance().accountManager.name(){  
583 - self.activePersonNum = self.activePersonNum+1  
584 - }  
585 - }else{  
586 - self.activePersonNum = self.activePersonNum-1  
587 - }  
588 - self.activeNum.text = "在线人数:\(self.activePersonNum)"  
589 - }  
590 - }  
591 -  
592 - if message.session?.sessionId == liveDetail.f_RoomId && message.text != nil{  
593 - messageArr.append(message)  
594 - chatTableView.insertRows(at: [IndexPath(row: messageArr.count-1, section: 0)], with: .middle)  
595 - chatTableView.scrollToRow(at: IndexPath(item: messageArr.count-1, section: 0), at: .bottom, animated: true)  
596 - if !subtitleOff{  
597 - manager.comments.addObjects(from: self.createVideoComment(message: message))  
598 - }  
599 - }  
600 - }  
601 - }  
602 -  
603 - func send(_ message: NIMMessage, didCompleteWithError error: Error?) {  
604 - if error == nil{  
605 - if !subtitleOff{  
606 - manager.comments.addObjects(from: self.createVideoComment(message: message))  
607 - }  
608 - messageArr.append(message)  
609 - chatTableView.insertRows(at: [IndexPath(row: messageArr.count-1, section: 0)], with: .bottom)  
610 - sendWord.text = ""  
611 - chatTableView.scrollToRow(at: IndexPath(item: messageArr.count-1, section: 0), at: .bottom, animated: true)  
612 - }else{  
613 -  
614 - }  
615 - }  
616 -  
617 - func showLoadingIndicators(){  
618 - self.view.addSubview(activityBackgroundView)  
619 - self.view.addSubview(activityIndicator)  
620 - activityIndicator.startAnimating()  
621 - UIView.animate(withDuration: 0.2, animations: {  
622 - self.activityBackgroundView.alpha = 1  
623 - self.activityIndicator.alpha = 1  
624 - })  
625 - }  
626 -  
627 - func hideLoadingIndicators(){  
628 - UIView.animate(withDuration: 0.2, delay: 0, options: .layoutSubviews, animations: {  
629 - self.activityBackgroundView.alpha = 0  
630 - self.activityIndicator.alpha = 0  
631 -  
632 - }) { (finish) in  
633 - self.activityBackgroundView.removeFromSuperview()  
634 - self.activityIndicator.removeFromSuperview()  
635 -  
636 - }  
637 - }  
638 -  
639 - func changeMPlayFrame(){  
640 - if mPlayer != nil && mPlayer.videoWidth != 0{  
641 - let widthbi = CGFloat(mPlayer.videoWidth)/getScreenWidth()  
642 - let heightBi = CGFloat(mPlayer.videoHeight)/getScreenHeight()  
643 - if widthbi < heightBi || getScreenWidth()>getScreenHeight(){  
644 - mPlayerView.frame = CGRect(x: 0, y: 0, width: getScreenWidth(), height: getScreenHeight())  
645 - }else{  
646 - mPlayerView.frame = CGRect(x: 0, y: 0, width: getScreenWidth(), height: CGFloat(ceil(CGFloat(mPlayer.videoHeight)/widthbi)))  
647 - }  
648 -  
649 - let height = getScreenHeight() - mPlayerView.frame.size.height  
650 - if height > 100{  
651 - scrollHeight.constant = height  
652 - }else{  
653 - scrollHeight.constant = 50  
654 - }  
655 - }else{  
656 - mPlayerView.frame = CGRect(x: 0, y: 0, width: getScreenWidth(), height: getScreenWidth()/5*3)  
657 - let height = getScreenHeight() - mPlayerView.frame.size.height  
658 - if height > 100{  
659 - scrollHeight.constant = height  
660 - }else{  
661 - scrollHeight.constant = 50  
662 - }  
663 - }  
664 - mPlayer.view = mPlayerView  
665 - activityIndicator.center = mPlayerView.center  
666 - activityBackgroundView.center = mPlayerView.center  
667 - }  
668 -  
669 - func OnVideoPrepared(noti:Notification){  
670 - timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(MoivePlayerViewController.hiddenAllBtn), userInfo: nil, repeats: false)  
671 - changeMPlayFrame()  
672 - hideLoadingIndicators()  
673 - }  
674 -  
675 - func OnVideoError(noti:Notification){  
676 - isReplay = true  
677 - var error_msg = "未知的错误"  
678 - let error_code:AliVcMovieErrorCode = mPlayer.errorCode  
679 - switch error_code {  
680 - case ALIVC_ERR_FUNCTION_DENIED:  
681 - error_msg = "未授权"  
682 - case ALIVC_ERR_ILLEGALSTATUS:  
683 - error_msg = "非法的播放流程"  
684 - case ALIVC_ERR_INVALID_INPUTFILE:  
685 - error_msg = " 主播还未开播..."  
686 - hideLoadingIndicators()  
687 - case ALIVC_ERR_NO_INPUTFILE:  
688 - error_msg = "无输入文件"  
689 - hideLoadingIndicators()  
690 - case ALIVC_ERR_NO_NETWORK:  
691 - error_msg = "网络连接失败"  
692 - case ALIVC_ERR_NO_SUPPORT_CODEC:  
693 - error_msg = "不支持的视频编码格式"  
694 - hideLoadingIndicators()  
695 - case ALIVC_ERR_NO_VIEW:  
696 - error_msg = "无显示窗口"  
697 - hideLoadingIndicators()  
698 - case ALIVC_ERR_NO_MEMORY:  
699 - error_msg = "内存不足"  
700 - case ALIVC_ERR_DOWNLOAD_TIMEOUT:  
701 - error_msg = "网络超时"  
702 - case ALIVC_ERR_UNKOWN:  
703 - error_msg = "未知错误"  
704 - default:  
705 - break;  
706 - }  
707 - if error_code > 500||error_code == ALIVC_ERR_FUNCTION_DENIED{  
708 - mPlayer.reset()  
709 - let alertView = UIAlertController(title: nil, message: error_msg, preferredStyle: .alert)  
710 - alertView.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))  
711 - self.present(alertView, animated: true, completion: nil)  
712 - }  
713 - if error_code == ALIVC_ERR_DOWNLOAD_TIMEOUT{  
714 - mPlayer.pause()  
715 - let alertView = UIAlertController(title: nil, message: error_msg, preferredStyle: .alert)  
716 - alertView.addAction(UIAlertAction(title: "等待", style: .cancel, handler: nil))  
717 - alertView.addAction(UIAlertAction(title: "重新连接", style: .default, handler: { (action) in  
718 - self.mPlayer.stop()  
719 - self.showLoadingIndicators()  
720 - self.isReplay = true  
721 -// replay()  
722 - }))  
723 - self.present(alertView, animated: true, completion: nil)  
724 -  
725 - }  
726 -  
727 - }  
728 -  
729 - func OnVideoFinish(noti:Notification){  
730 - isReplay = true  
731 -  
732 - }  
733 -  
734 - func OnSeekDone(noti:Notification){  
735 -  
736 - }  
737 -  
738 - func OnStartCache(noti:Notification){  
739 - showLoadingIndicators()  
740 - }  
741 -  
742 - func OnEndCache(noti:Notification){  
743 - hideLoadingIndicators()  
744 - }  
745 -  
746 -  
747 - func addPlayerObserver(){  
748 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.OnVideoPrepared(noti:)), name: NSNotification.Name.AliVcMediaPlayerLoadDidPrepared, object: mPlayer)  
749 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.OnVideoError(noti:)), name: NSNotification.Name.AliVcMediaPlayerPlaybackError, object: mPlayer)  
750 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.OnVideoFinish(noti:)), name: NSNotification.Name.AliVcMediaPlayerPlaybackDidFinish, object: mPlayer)  
751 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.OnSeekDone(noti:)), name: NSNotification.Name.AliVcMediaPlayerSeekingDidFinish, object: mPlayer)  
752 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.OnStartCache(noti:)), name: NSNotification.Name.AliVcMediaPlayerStartCaching, object: mPlayer)  
753 - NotificationCenter.default.addObserver(self, selector: #selector(MoivePlayerViewController.OnEndCache(noti:)), name: NSNotification.Name.AliVcMediaPlayerEndCaching, object: mPlayer)  
754 -  
755 - }  
756 -  
757 - func removePlayerObserver(){  
758 - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AliVcMediaPlayerLoadDidPrepared, object: mPlayer)  
759 - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AliVcMediaPlayerPlaybackError, object: mPlayer)  
760 - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AliVcMediaPlayerPlaybackDidFinish, object: mPlayer)  
761 - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AliVcMediaPlayerSeekingDidFinish, object: mPlayer)  
762 - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AliVcMediaPlayerStartCaching, object: mPlayer)  
763 - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AliVcMediaPlayerEndCaching, object: mPlayer)  
764 - }  
765 -  
766 - func willShowComments(_ seek: Bool) -> CGFloat {  
767 - return commentNUM  
768 - }  
769 -  
770 -  
771 - func commentTimerFired(){  
772 - commentNUM = 0.1+commentNUM  
773 - }  
774 -  
775 - func createVideoComment(message:NIMMessage)->[Any]{  
776 - var videoComments:[Any] = []  
777 - let vpos:CGFloat = 200  
778 - let commentInfo:[NSString:AnyObject] = ["vpos": vpos as AnyObject,  
779 - "body": message.text! as AnyObject,  
780 - "position": RiverRunCommentUtil.commentPosition(RiverRunCommentUtil.getRandomPosition()) as AnyObject,  
781 - "fontSize": RiverRunCommentUtil.commentSize(RiverRunCommentUtil.getRandomFontSize()) as AnyObject,  
782 - "color": "0x000000" as AnyObject,  
783 - "duration":3 as AnyObject]  
784 - videoComments.append(commentInfo)  
785 - return videoComments  
786 - }  
787 -  
788 - override func didReceiveMemoryWarning() {  
789 - super.didReceiveMemoryWarning()  
790 - // Dispose of any resources that can be recreated.  
791 - }  
792 -  
793 - //弹幕开关  
794 - func subTitleClickAction(isOff:Bool){  
795 - manager.deleteAllCommentLayer()  
796 - manager.comments.removeAllObjects()  
797 - if isOff{  
798 - manager.stop()  
799 - }else{  
800 - manager.start()  
801 - }  
802 - }  
803 -  
804 - // MARK: - tableViewDelegate  
805 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
806 - if tableView == chatTableView{  
807 - return messageArr.count  
808 - }else{  
809 - return leaveMessageArr.count  
810 - }  
811 - }  
812 -  
813 - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  
814 - var str:String!  
815 - if tableView == chatTableView{  
816 - str = messageArr[indexPath.row].remoteExt!["name"] as! String + " : " + messageArr[indexPath.row].text!  
817 - }else{  
818 - str = leaveMessageArr[indexPath.row].f_RealName + " : " + leaveMessageArr[indexPath.row].commentDetail  
819 - }  
820 - return (str as NSString).boundingRect(with: CGSize(width: getScreenWidth()-44, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFont(ofSize: 13)], context: nil).size.height + 40  
821 -  
822 - }  
823 -  
824 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
825 - if tableView == chatTableView{  
826 - let item = messageArr[indexPath.row]  
827 - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ChatCell  
828 - cell.backgroundColor = UIColor.clear  
829 - cell.context.text = item.remoteExt!["name"] as! String + " : " + item.text!  
830 - cell.context.numberOfLines = 0  
831 - cell.context.sizeToFit()  
832 - if let imageName = NIMSDK.shared().userManager.userInfo(item.from!)?.userInfo?.avatarUrl{  
833 - cell.userImage.sd_setImage(with: URL(string:imageName), placeholderImage: #imageLiteral(resourceName: "default_userRoom"))  
834 - }else{  
835 - cell.userImage.image = #imageLiteral(resourceName: "default_userRoom")  
836 - }  
837 - cell.timeLabel.text = makeTimeIntervalToString(time: item.timestamp)  
838 - return cell  
839 - }else{  
840 - let item = leaveMessageArr[indexPath.row]  
841 - let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! LeaveMessageCell  
842 - cell.userImage.sd_setImage(with: URL(string:item.f_HeadIcon), placeholderImage: #imageLiteral(resourceName: "default_userRoom"))  
843 - cell.context.text = item.f_RealName + " : " + item.commentDetail!  
844 - cell.context.numberOfLines = 0  
845 - cell.context.sizeToFit()  
846 - cell.timeLabel.text = item.f_CreatorTime  
847 - return cell  
848 - }  
849 - }  
850 -  
851 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {  
852 - if segue.identifier == "inforScroll"{  
853 - let vc = segue.destination as! AlivcInforViewController  
854 - vc.liveDetail = liveDetail  
855 - self.present(vc, animated: false, completion: nil)  
856 - }  
857 - }  
858 -  
859 - @IBOutlet weak var btnFlagLabel: UILabel!  
860 - func scrollViewDidScroll(_ scrollView: UIScrollView) {  
861 - if scrollView.classForCoder != UITableView.classForCoder(){  
862 - sendWord.resignFirstResponder()  
863 - if !screenHorizontalBtn.isSelected {  
864 - sendWordView.frame.origin.y = scrollView.frame.size.height - 50  
865 - sendWordPlaceholder(isChat: scrollView.contentOffset.x < getScreenWidth())  
866 - let x = Int(scrollView.contentOffset.x)  
867 - let width = Int(getScreenWidth())  
868 - var num = 0  
869 - if x%width > width/2{  
870 - num = x/width + 1  
871 - }else{  
872 - num = x/width  
873 - }  
874 - isSendChatMessage = num  
875 - UIView.animate(withDuration: 0.2, animations: {  
876 - self.btnFlagLabel.frame.origin.x = self.getBtnFlagLabelOrightX(num: CGFloat(num))  
877 - })  
878 - }else{  
879 - scrollView.contentOffset.x = CGFloat(isSendChatMessage)*getScreenHeight()  
880 - }  
881 - }  
882 - }  
883 -  
884 - @IBAction func chatBtnClick(_ sender: UIButton) {  
885 - sendWord.resignFirstResponder()  
886 - sendWordView.frame.origin.y = scrollView.frame.size.height - 50  
887 - sendWordPlaceholder(isChat: sender.tag == 1000)  
888 - isSendChatMessage = sender.tag - 1000  
889 - UIView.animate(withDuration: 0.2, animations: {  
890 - self.btnFlagLabel.frame.origin.x = self.getBtnFlagLabelOrightX(num: CGFloat(sender.tag-1000))  
891 - self.scrollView.contentOffset.x = getScreenWidth() * CGFloat(sender.tag-1000)  
892 - })  
893 - }  
894 -  
895 - func sendWordPlaceholder(isChat:Bool){  
896 - if isChat{  
897 - chatLocalView.addSubview(sendWordView)  
898 - sendWord.placeholder = "请输入聊天内容"  
899 - }else{  
900 - leaveMessageLocalView.addSubview(sendWordView)  
901 - sendWord.placeholder = "请输入留言信息"  
902 - }  
903 - if !sendWord.isUserInteractionEnabled {  
904 - self.sendWord.placeholder = "请您先登录,在发送消息"  
905 - }  
906 - }  
907 -  
908 - func getBtnFlagLabelOrightX(num:CGFloat)->CGFloat{  
909 - return num+num*((getScreenWidth()-2)/3)  
910 - }  
911 -  
912 - /*  
913 - // MARK: - Navigation  
914 -  
915 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
916 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {  
917 - // Get the new view controller using segue.destinationViewController.  
918 - // Pass the selected object to the new view controller.  
919 - }  
920 - */  
921 -  
922 -}  
923 -  
924 -class LeaveMessageCell: UITableViewCell {  
925 -  
926 - @IBOutlet weak var userImage: UIImageView!  
927 - @IBOutlet weak var timeLabel: UILabel!  
928 - @IBOutlet weak var context: UILabel!  
929 - override func awakeFromNib() {  
930 - userImage.layer.cornerRadius = userImage.frame.size.height/2  
931 - userImage.layer.masksToBounds = true  
932 - }  
933 -}  
934 -  
935 -class ChatCell: UITableViewCell {  
936 -  
937 - @IBOutlet weak var userImage: UIImageView!  
938 - @IBOutlet weak var timeLabel: UILabel!  
939 - @IBOutlet weak var context: UILabel!  
940 - override func awakeFromNib() {  
941 - userImage.layer.cornerRadius = userImage.frame.size.height/2  
942 - userImage.layer.masksToBounds = true  
943 - }  
944 -}  
945 -  
946 -class Comment {  
947 - var f_CreatorUserId:String!  
948 - var f_CreatorTime:String!  
949 - var commentDetail:String!  
950 - var liveId:String!  
951 - var f_HeadIcon:String!  
952 - var f_RealName:String!  
953 - var f_NickName:String!  
954 - init(json:JSON){  
955 - f_CreatorUserId = json["f_CreatorUserId"].stringValue  
956 - f_CreatorTime = allTimeStringComp(str:json["f_CreatorTime"].stringValue)  
957 - commentDetail = json["commentDetail"].stringValue  
958 - liveId = json["liveId"].stringValue  
959 - f_HeadIcon = json["f_HeadIcon"].stringValue  
960 - f_RealName = json["f_RealName"].stringValue  
961 - f_NickName = json["f_NickName"].stringValue  
962 - }  
963 - init(){  
964 -  
965 - }  
966 -}  
YouerLiveVideo/YouerLiveVideo/AppDelegate.swift
@@ -20,7 +20,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate,NIMLoginManagerDelegate { @@ -20,7 +20,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate,NIMLoginManagerDelegate {
20 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 20 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
21 httpServer.accountManager=accountManager 21 httpServer.accountManager=accountManager
22 accountManager.setTokenInfo(tokenInfo: accountManager.loadToken()) 22 accountManager.setTokenInfo(tokenInfo: accountManager.loadToken())
23 - setShareSDKSetting() 23 +// setShareSDKSetting()
24 setNIMSDKRegister() 24 setNIMSDKRegister()
25 return true 25 return true
26 } 26 }
YouerLiveVideo/YouerLiveVideo/Base.lproj/Main.storyboard
@@ -156,7 +156,7 @@ @@ -156,7 +156,7 @@
156 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 156 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
157 <subviews> 157 <subviews>
158 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="60" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="6sp-FR-RXh"> 158 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="60" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="6sp-FR-RXh">
159 - <rect key="frame" x="0.0" y="234" width="375" height="384"/> 159 + <rect key="frame" x="0.0" y="190" width="375" height="477"/>
160 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 160 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
161 <prototypes> 161 <prototypes>
162 <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="cell" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="Bd9-Ys-4oO" customClass="MyTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target"> 162 <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="cell" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="Bd9-Ys-4oO" customClass="MyTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target">
@@ -218,7 +218,7 @@ @@ -218,7 +218,7 @@
218 </connections> 218 </connections>
219 </tableView> 219 </tableView>
220 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gHW-Fw-ORN"> 220 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gHW-Fw-ORN">
221 - <rect key="frame" x="0.0" y="64" width="375" height="170"/> 221 + <rect key="frame" x="0.0" y="20" width="375" height="170"/>
222 <subviews> 222 <subviews>
223 <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default" translatesAutoresizingMaskIntoConstraints="NO" id="qqi-UG-8sO"> 223 <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default" translatesAutoresizingMaskIntoConstraints="NO" id="qqi-UG-8sO">
224 <rect key="frame" x="0.0" y="0.0" width="375" height="170"/> 224 <rect key="frame" x="0.0" y="0.0" width="375" height="170"/>
@@ -490,49 +490,11 @@ @@ -490,49 +490,11 @@
490 <constraint firstAttribute="width" secondItem="FSI-1e-Z3T" secondAttribute="height" multiplier="16:9" id="U44-KW-O9e"/> 490 <constraint firstAttribute="width" secondItem="FSI-1e-Z3T" secondAttribute="height" multiplier="16:9" id="U44-KW-O9e"/>
491 </constraints> 491 </constraints>
492 </view> 492 </view>
493 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="nzt-eB-LqH">  
494 - <rect key="frame" x="0.0" y="275" width="375" height="343"/>  
495 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
496 - <sections>  
497 - <tableViewSection id="dOf-yB-NTj">  
498 - <cells>  
499 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="wZJ-ds-TX9">  
500 - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>  
501 - <autoresizingMask key="autoresizingMask"/>  
502 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="wZJ-ds-TX9" id="8Fl-1N-dEm">  
503 - <rect key="frame" x="0.0" y="0.0" width="375" height="43"/>  
504 - <autoresizingMask key="autoresizingMask"/>  
505 - </tableViewCellContentView>  
506 - </tableViewCell>  
507 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="sKJ-GX-RPD">  
508 - <rect key="frame" x="0.0" y="44" width="375" height="44"/>  
509 - <autoresizingMask key="autoresizingMask"/>  
510 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="sKJ-GX-RPD" id="q1H-8l-igY">  
511 - <rect key="frame" x="0.0" y="0.0" width="375" height="43"/>  
512 - <autoresizingMask key="autoresizingMask"/>  
513 - </tableViewCellContentView>  
514 - </tableViewCell>  
515 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="wQI-vf-l1t">  
516 - <rect key="frame" x="0.0" y="88" width="375" height="44"/>  
517 - <autoresizingMask key="autoresizingMask"/>  
518 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="wQI-vf-l1t" id="Huh-bs-KoF">  
519 - <rect key="frame" x="0.0" y="0.0" width="375" height="43"/>  
520 - <autoresizingMask key="autoresizingMask"/>  
521 - </tableViewCellContentView>  
522 - </tableViewCell>  
523 - </cells>  
524 - </tableViewSection>  
525 - </sections>  
526 - </tableView>  
527 </subviews> 493 </subviews>
528 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 494 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
529 <constraints> 495 <constraints>
530 <constraint firstItem="FSI-1e-Z3T" firstAttribute="top" secondItem="wfh-tO-9fU" secondAttribute="bottom" id="5D2-o8-R3S"/> 496 <constraint firstItem="FSI-1e-Z3T" firstAttribute="top" secondItem="wfh-tO-9fU" secondAttribute="bottom" id="5D2-o8-R3S"/>
531 <constraint firstAttribute="trailing" secondItem="FSI-1e-Z3T" secondAttribute="trailing" id="AYI-Qj-Hxg"/> 497 <constraint firstAttribute="trailing" secondItem="FSI-1e-Z3T" secondAttribute="trailing" id="AYI-Qj-Hxg"/>
532 - <constraint firstItem="nzt-eB-LqH" firstAttribute="top" secondItem="FSI-1e-Z3T" secondAttribute="bottom" id="CSl-qA-NyT"/>  
533 - <constraint firstItem="FOv-Or-1ph" firstAttribute="top" secondItem="nzt-eB-LqH" secondAttribute="bottom" id="TLC-Mg-Ad9"/>  
534 - <constraint firstItem="nzt-eB-LqH" firstAttribute="leading" secondItem="2QR-eN-M4v" secondAttribute="leading" id="fjY-44-a5L"/>  
535 - <constraint firstAttribute="trailing" secondItem="nzt-eB-LqH" secondAttribute="trailing" id="kvr-gf-0fw"/>  
536 <constraint firstItem="FSI-1e-Z3T" firstAttribute="leading" secondItem="2QR-eN-M4v" secondAttribute="leading" id="wBm-Qb-5ZL"/> 498 <constraint firstItem="FSI-1e-Z3T" firstAttribute="leading" secondItem="2QR-eN-M4v" secondAttribute="leading" id="wBm-Qb-5ZL"/>
537 </constraints> 499 </constraints>
538 </view> 500 </view>
@@ -551,673 +513,6 @@ @@ -551,673 +513,6 @@
551 </objects> 513 </objects>
552 <point key="canvasLocation" x="-1844" y="2112.5937031484259"/> 514 <point key="canvasLocation" x="-1844" y="2112.5937031484259"/>
553 </scene> 515 </scene>
554 - <!--直播详情-->  
555 - <scene sceneID="GeW-WZ-qPF">  
556 - <objects>  
557 - <viewController storyboardIdentifier="LiveRoomDetailViewController" id="d1J-cJ-HGJ" customClass="LiveRoomDetailViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
558 - <layoutGuides>  
559 - <viewControllerLayoutGuide type="top" id="WMM-qK-XGq"/>  
560 - <viewControllerLayoutGuide type="bottom" id="Sjh-U9-acN"/>  
561 - </layoutGuides>  
562 - <view key="view" contentMode="scaleToFill" id="AAI-7u-wfg">  
563 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
564 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
565 - <subviews>  
566 - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9G3-Kt-5Qi">  
567 - <rect key="frame" x="0.0" y="64" width="375" height="603"/>  
568 - <subviews>  
569 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aSH-ed-fS3">  
570 - <rect key="frame" x="0.0" y="0.0" width="375" height="504"/>  
571 - <subviews>  
572 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O11-BV-qvn">  
573 - <rect key="frame" x="0.0" y="50" width="375" height="150"/>  
574 - <subviews>  
575 - <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="4kP-W2-Uf5">  
576 - <rect key="frame" x="0.0" y="0.0" width="375" height="150"/>  
577 - </imageView>  
578 - <label opaque="NO" userInteractionEnabled="NO" alpha="0.80000000000000004" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="顺治直播" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="U5x-hO-jQr">  
579 - <rect key="frame" x="0.0" y="120" width="375" height="30"/>  
580 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
581 - <constraints>  
582 - <constraint firstAttribute="height" constant="30" id="MYa-Ca-QQ4"/>  
583 - </constraints>  
584 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
585 - <nil key="highlightedColor"/>  
586 - </label>  
587 - </subviews>  
588 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
589 - <constraints>  
590 - <constraint firstAttribute="trailing" secondItem="4kP-W2-Uf5" secondAttribute="trailing" id="3NC-lO-A3P"/>  
591 - <constraint firstAttribute="trailing" secondItem="U5x-hO-jQr" secondAttribute="trailing" id="G5F-8R-jNM"/>  
592 - <constraint firstItem="4kP-W2-Uf5" firstAttribute="leading" secondItem="O11-BV-qvn" secondAttribute="leading" id="Gv9-iT-TPQ"/>  
593 - <constraint firstAttribute="bottom" secondItem="4kP-W2-Uf5" secondAttribute="bottom" id="VbZ-24-dV8"/>  
594 - <constraint firstAttribute="height" constant="150" id="YlR-P0-0VQ"/>  
595 - <constraint firstItem="4kP-W2-Uf5" firstAttribute="top" secondItem="O11-BV-qvn" secondAttribute="top" id="Z5G-gW-oXK"/>  
596 - <constraint firstItem="U5x-hO-jQr" firstAttribute="leading" secondItem="O11-BV-qvn" secondAttribute="leading" id="si9-Ri-Mod"/>  
597 - <constraint firstAttribute="bottom" secondItem="U5x-hO-jQr" secondAttribute="bottom" id="tha-wj-JM0"/>  
598 - </constraints>  
599 - </view>  
600 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="92m-fO-JPa">  
601 - <rect key="frame" x="0.0" y="0.0" width="375" height="50"/>  
602 - <subviews>  
603 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="eaL-rv-CLu">  
604 - <rect key="frame" x="8" y="8" width="34" height="34"/>  
605 - <constraints>  
606 - <constraint firstAttribute="height" constant="34" id="3b0-9m-593"/>  
607 - <constraint firstAttribute="width" constant="34" id="V2i-YR-rAQ"/>  
608 - </constraints>  
609 - <userDefinedRuntimeAttributes>  
610 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
611 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
612 - <integer key="value" value="17"/>  
613 - </userDefinedRuntimeAttribute>  
614 - </userDefinedRuntimeAttributes>  
615 - </imageView>  
616 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="小熊猫" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jnh-PT-9UR">  
617 - <rect key="frame" x="50" y="8" width="46" height="18"/>  
618 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
619 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
620 - <nil key="highlightedColor"/>  
621 - </label>  
622 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2016-11-11 11:14:55" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P97-ha-f3O">  
623 - <rect key="frame" x="50" y="24" width="135.5" height="18"/>  
624 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
625 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
626 - <nil key="highlightedColor"/>  
627 - </label>  
628 - </subviews>  
629 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
630 - <constraints>  
631 - <constraint firstItem="P97-ha-f3O" firstAttribute="leading" secondItem="eaL-rv-CLu" secondAttribute="trailing" constant="8" id="EtG-gO-eu5"/>  
632 - <constraint firstItem="eaL-rv-CLu" firstAttribute="centerY" secondItem="92m-fO-JPa" secondAttribute="centerY" id="F0j-xW-yTl"/>  
633 - <constraint firstItem="jnh-PT-9UR" firstAttribute="top" secondItem="92m-fO-JPa" secondAttribute="top" constant="8" id="G1z-Pm-kqw"/>  
634 - <constraint firstItem="jnh-PT-9UR" firstAttribute="leading" secondItem="eaL-rv-CLu" secondAttribute="trailing" constant="8" id="Qc1-pW-H3D"/>  
635 - <constraint firstAttribute="height" constant="50" id="asv-zF-iOb"/>  
636 - <constraint firstAttribute="bottom" secondItem="P97-ha-f3O" secondAttribute="bottom" constant="8" id="xLE-Xo-aGF"/>  
637 - <constraint firstItem="eaL-rv-CLu" firstAttribute="leading" secondItem="92m-fO-JPa" secondAttribute="leading" constant="8" id="zfN-bj-Q8u"/>  
638 - </constraints>  
639 - </view>  
640 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4w2-kR-uKi">  
641 - <rect key="frame" x="0.0" y="200" width="375" height="50"/>  
642 - <subviews>  
643 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Osl-An-nRm">  
644 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
645 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
646 - <constraints>  
647 - <constraint firstAttribute="height" constant="1" id="ZOT-0b-zsA"/>  
648 - </constraints>  
649 - </view>  
650 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播公告" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yXv-Z8-PTh">  
651 - <rect key="frame" x="8" y="16" width="61.5" height="18"/>  
652 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
653 - <nil key="textColor"/>  
654 - <nil key="highlightedColor"/>  
655 - </label>  
656 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="顺治直播间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="s8n-ps-ena">  
657 - <rect key="frame" x="90" y="16" width="76.5" height="18"/>  
658 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
659 - <nil key="textColor"/>  
660 - <nil key="highlightedColor"/>  
661 - </label>  
662 - </subviews>  
663 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
664 - <constraints>  
665 - <constraint firstAttribute="bottom" secondItem="Osl-An-nRm" secondAttribute="bottom" id="18w-hy-0td"/>  
666 - <constraint firstAttribute="trailing" secondItem="Osl-An-nRm" secondAttribute="trailing" id="D2r-mn-CMp"/>  
667 - <constraint firstItem="s8n-ps-ena" firstAttribute="leading" secondItem="yXv-Z8-PTh" secondAttribute="trailing" constant="20.5" id="No0-RF-xen"/>  
668 - <constraint firstItem="s8n-ps-ena" firstAttribute="centerY" secondItem="4w2-kR-uKi" secondAttribute="centerY" id="NoP-am-Pqa"/>  
669 - <constraint firstItem="yXv-Z8-PTh" firstAttribute="centerY" secondItem="4w2-kR-uKi" secondAttribute="centerY" id="Yh2-HB-M09"/>  
670 - <constraint firstAttribute="height" constant="50" id="a3v-P6-RH8"/>  
671 - <constraint firstItem="Osl-An-nRm" firstAttribute="leading" secondItem="4w2-kR-uKi" secondAttribute="leading" id="bmu-PQ-580"/>  
672 - <constraint firstItem="yXv-Z8-PTh" firstAttribute="leading" secondItem="4w2-kR-uKi" secondAttribute="leading" constant="8" id="uZN-j5-Hmd"/>  
673 - </constraints>  
674 - </view>  
675 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UKf-ne-nJN">  
676 - <rect key="frame" x="0.0" y="250" width="375" height="50"/>  
677 - <subviews>  
678 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jtf-eA-lw5">  
679 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
680 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
681 - <constraints>  
682 - <constraint firstAttribute="height" constant="1" id="xsl-7D-evE"/>  
683 - </constraints>  
684 - </view>  
685 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开始时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uqQ-L2-Vyw">  
686 - <rect key="frame" x="8" y="16" width="61.5" height="18"/>  
687 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
688 - <nil key="textColor"/>  
689 - <nil key="highlightedColor"/>  
690 - </label>  
691 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2016-11-11 11:14:55" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qRc-2c-O7X">  
692 - <rect key="frame" x="90" y="16" width="135.5" height="18"/>  
693 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
694 - <nil key="textColor"/>  
695 - <nil key="highlightedColor"/>  
696 - </label>  
697 - </subviews>  
698 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
699 - <constraints>  
700 - <constraint firstItem="uqQ-L2-Vyw" firstAttribute="centerY" secondItem="UKf-ne-nJN" secondAttribute="centerY" id="3lT-fU-hof"/>  
701 - <constraint firstItem="uqQ-L2-Vyw" firstAttribute="leading" secondItem="UKf-ne-nJN" secondAttribute="leading" constant="8" id="5dK-ZQ-WqJ"/>  
702 - <constraint firstItem="Jtf-eA-lw5" firstAttribute="leading" secondItem="UKf-ne-nJN" secondAttribute="leading" id="VaX-iI-BQZ"/>  
703 - <constraint firstAttribute="trailing" secondItem="Jtf-eA-lw5" secondAttribute="trailing" id="eub-aI-clh"/>  
704 - <constraint firstItem="qRc-2c-O7X" firstAttribute="leading" secondItem="uqQ-L2-Vyw" secondAttribute="trailing" constant="20.5" id="fNg-Vu-awo"/>  
705 - <constraint firstItem="qRc-2c-O7X" firstAttribute="centerY" secondItem="UKf-ne-nJN" secondAttribute="centerY" id="im3-Vb-FJU"/>  
706 - <constraint firstAttribute="height" constant="50" id="oYQ-J2-9rP"/>  
707 - <constraint firstAttribute="bottom" secondItem="Jtf-eA-lw5" secondAttribute="bottom" id="q4p-0f-VSs"/>  
708 - </constraints>  
709 - </view>  
710 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hWl-d7-HjU">  
711 - <rect key="frame" x="0.0" y="300" width="375" height="50"/>  
712 - <subviews>  
713 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="E8e-09-jgL">  
714 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
715 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
716 - <constraints>  
717 - <constraint firstAttribute="height" constant="1" id="YTg-Bi-ZBT"/>  
718 - </constraints>  
719 - </view>  
720 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="结束时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Doz-eV-A6r">  
721 - <rect key="frame" x="8" y="16" width="61.5" height="18"/>  
722 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
723 - <nil key="textColor"/>  
724 - <nil key="highlightedColor"/>  
725 - </label>  
726 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2016-11-11 11:14:55" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gFS-ol-eqE">  
727 - <rect key="frame" x="90" y="16" width="135.5" height="18"/>  
728 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
729 - <nil key="textColor"/>  
730 - <nil key="highlightedColor"/>  
731 - </label>  
732 - </subviews>  
733 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
734 - <constraints>  
735 - <constraint firstItem="E8e-09-jgL" firstAttribute="leading" secondItem="hWl-d7-HjU" secondAttribute="leading" id="6OF-8P-VWF"/>  
736 - <constraint firstAttribute="trailing" secondItem="E8e-09-jgL" secondAttribute="trailing" id="Gng-L6-MDP"/>  
737 - <constraint firstItem="gFS-ol-eqE" firstAttribute="leading" secondItem="Doz-eV-A6r" secondAttribute="trailing" constant="20.5" id="SeM-K0-aty"/>  
738 - <constraint firstItem="Doz-eV-A6r" firstAttribute="leading" secondItem="hWl-d7-HjU" secondAttribute="leading" constant="8" id="T87-xC-ah4"/>  
739 - <constraint firstAttribute="bottom" secondItem="E8e-09-jgL" secondAttribute="bottom" id="TaN-Rp-qhv"/>  
740 - <constraint firstAttribute="height" constant="50" id="XnX-wh-LUy"/>  
741 - <constraint firstItem="gFS-ol-eqE" firstAttribute="centerY" secondItem="hWl-d7-HjU" secondAttribute="centerY" id="lfn-H2-iDA"/>  
742 - <constraint firstItem="Doz-eV-A6r" firstAttribute="centerY" secondItem="hWl-d7-HjU" secondAttribute="centerY" id="pjK-6l-BKL"/>  
743 - </constraints>  
744 - </view>  
745 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Uv7-9u-GaW">  
746 - <rect key="frame" x="0.0" y="350" width="375" height="50"/>  
747 - <subviews>  
748 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lWz-Ec-2pD">  
749 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
750 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
751 - <constraints>  
752 - <constraint firstAttribute="height" constant="1" id="jeI-Ab-fpN"/>  
753 - </constraints>  
754 - </view>  
755 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是否公开" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wqa-lx-bdx">  
756 - <rect key="frame" x="8" y="16" width="61.5" height="18"/>  
757 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
758 - <nil key="textColor"/>  
759 - <nil key="highlightedColor"/>  
760 - </label>  
761 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Lo-Zh-qml">  
762 - <rect key="frame" x="90" y="16" width="15.5" height="18"/>  
763 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
764 - <nil key="textColor"/>  
765 - <nil key="highlightedColor"/>  
766 - </label>  
767 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Qxz-W3-c3g">  
768 - <rect key="frame" x="351" y="16" width="15.5" height="18"/>  
769 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
770 - <nil key="textColor"/>  
771 - <nil key="highlightedColor"/>  
772 - </label>  
773 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是否支持互动" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aaa-fg-LGQ">  
774 - <rect key="frame" x="228.5" y="16" width="92" height="18"/>  
775 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
776 - <nil key="textColor"/>  
777 - <nil key="highlightedColor"/>  
778 - </label>  
779 - </subviews>  
780 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
781 - <constraints>  
782 - <constraint firstItem="Wqa-lx-bdx" firstAttribute="leading" secondItem="Uv7-9u-GaW" secondAttribute="leading" constant="8" id="2rV-7n-2G1"/>  
783 - <constraint firstAttribute="trailing" secondItem="lWz-Ec-2pD" secondAttribute="trailing" id="3OM-1K-yKQ"/>  
784 - <constraint firstItem="2Lo-Zh-qml" firstAttribute="centerY" secondItem="Uv7-9u-GaW" secondAttribute="centerY" id="4Tn-1g-FA2"/>  
785 - <constraint firstItem="Wqa-lx-bdx" firstAttribute="centerY" secondItem="Uv7-9u-GaW" secondAttribute="centerY" id="55n-tV-tVv"/>  
786 - <constraint firstItem="Qxz-W3-c3g" firstAttribute="centerY" secondItem="Uv7-9u-GaW" secondAttribute="centerY" id="8zS-kF-iRE"/>  
787 - <constraint firstAttribute="height" constant="50" id="FMG-IR-g1o"/>  
788 - <constraint firstItem="aaa-fg-LGQ" firstAttribute="centerY" secondItem="Uv7-9u-GaW" secondAttribute="centerY" id="GTX-IV-Kyi"/>  
789 - <constraint firstItem="lWz-Ec-2pD" firstAttribute="leading" secondItem="Uv7-9u-GaW" secondAttribute="leading" id="Hxm-FB-0UX"/>  
790 - <constraint firstAttribute="trailing" secondItem="Qxz-W3-c3g" secondAttribute="trailing" constant="8.5" id="MXb-0c-MBw"/>  
791 - <constraint firstItem="Qxz-W3-c3g" firstAttribute="leading" secondItem="aaa-fg-LGQ" secondAttribute="trailing" constant="30.5" id="ZK3-Bo-TnB"/>  
792 - <constraint firstItem="2Lo-Zh-qml" firstAttribute="leading" secondItem="Wqa-lx-bdx" secondAttribute="trailing" constant="20.5" id="gvj-f4-QmM"/>  
793 - <constraint firstAttribute="bottom" secondItem="lWz-Ec-2pD" secondAttribute="bottom" id="sic-72-BGP"/>  
794 - </constraints>  
795 - </view>  
796 - <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LlX-84-ki4">  
797 - <rect key="frame" x="0.0" y="400" width="375" height="50"/>  
798 - <subviews>  
799 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="C1b-KG-kcI">  
800 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
801 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
802 - <constraints>  
803 - <constraint firstAttribute="height" constant="1" id="Not-26-wrZ"/>  
804 - </constraints>  
805 - </view>  
806 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="附件" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lbi-Yu-mdx">  
807 - <rect key="frame" x="8" y="16" width="31" height="18"/>  
808 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
809 - <nil key="textColor"/>  
810 - <nil key="highlightedColor"/>  
811 - </label>  
812 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="attach_file.png" translatesAutoresizingMaskIntoConstraints="NO" id="f5B-In-cJ2">  
813 - <rect key="frame" x="342" y="12.5" width="25" height="25"/>  
814 - <constraints>  
815 - <constraint firstAttribute="height" constant="25" id="6DW-zW-AKv"/>  
816 - <constraint firstAttribute="width" constant="25" id="WlQ-8U-Gbq"/>  
817 - </constraints>  
818 - </imageView>  
819 - </subviews>  
820 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
821 - <constraints>  
822 - <constraint firstAttribute="trailing" secondItem="f5B-In-cJ2" secondAttribute="trailing" constant="8" id="3l3-25-VQq"/>  
823 - <constraint firstAttribute="bottom" secondItem="C1b-KG-kcI" secondAttribute="bottom" id="4lG-M3-mzX"/>  
824 - <constraint firstAttribute="trailing" secondItem="C1b-KG-kcI" secondAttribute="trailing" id="Os6-mV-Xwj"/>  
825 - <constraint firstItem="f5B-In-cJ2" firstAttribute="centerY" secondItem="LlX-84-ki4" secondAttribute="centerY" id="SzR-9Z-Zub"/>  
826 - <constraint firstItem="lbi-Yu-mdx" firstAttribute="leading" secondItem="LlX-84-ki4" secondAttribute="leading" constant="8" id="VvM-U1-jEb"/>  
827 - <constraint firstAttribute="height" constant="50" id="Zjj-Md-sHn"/>  
828 - <constraint firstItem="lbi-Yu-mdx" firstAttribute="centerY" secondItem="LlX-84-ki4" secondAttribute="centerY" id="c6e-jU-jw8"/>  
829 - <constraint firstItem="C1b-KG-kcI" firstAttribute="leading" secondItem="LlX-84-ki4" secondAttribute="leading" id="zXA-nY-isW"/>  
830 - </constraints>  
831 - </view>  
832 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Gem-D3-18H">  
833 - <rect key="frame" x="0.0" y="450" width="375" height="50"/>  
834 - <subviews>  
835 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Jo-os-Pqi">  
836 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
837 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
838 - <constraints>  
839 - <constraint firstAttribute="height" constant="1" id="eYE-Yj-W38"/>  
840 - </constraints>  
841 - </view>  
842 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="已审核" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gs4-Mx-oSq">  
843 - <rect key="frame" x="8" y="16" width="46" height="18"/>  
844 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
845 - <nil key="textColor"/>  
846 - <nil key="highlightedColor"/>  
847 - </label>  
848 - </subviews>  
849 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
850 - <constraints>  
851 - <constraint firstAttribute="height" constant="50" id="5dn-qD-rvx"/>  
852 - <constraint firstItem="Gs4-Mx-oSq" firstAttribute="leading" secondItem="Gem-D3-18H" secondAttribute="leading" constant="8" id="5eG-aa-Wvb"/>  
853 - <constraint firstItem="Gs4-Mx-oSq" firstAttribute="centerY" secondItem="Gem-D3-18H" secondAttribute="centerY" id="KQ1-na-lPf"/>  
854 - <constraint firstAttribute="bottom" secondItem="1Jo-os-Pqi" secondAttribute="bottom" id="XG0-99-DSe"/>  
855 - <constraint firstItem="1Jo-os-Pqi" firstAttribute="leading" secondItem="Gem-D3-18H" secondAttribute="leading" id="Zku-Ay-8yK"/>  
856 - <constraint firstAttribute="trailing" secondItem="1Jo-os-Pqi" secondAttribute="trailing" id="uC8-Fm-pu4"/>  
857 - </constraints>  
858 - </view>  
859 - </subviews>  
860 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
861 - <constraints>  
862 - <constraint firstItem="Gem-D3-18H" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="1Bm-VM-YP0"/>  
863 - <constraint firstItem="O11-BV-qvn" firstAttribute="top" secondItem="92m-fO-JPa" secondAttribute="bottom" id="2cr-XN-P7D"/>  
864 - <constraint firstItem="4w2-kR-uKi" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="6Ik-Ix-TDe"/>  
865 - <constraint firstItem="92m-fO-JPa" firstAttribute="top" secondItem="aSH-ed-fS3" secondAttribute="top" id="79E-mB-tet"/>  
866 - <constraint firstAttribute="trailing" secondItem="UKf-ne-nJN" secondAttribute="trailing" id="D29-kk-V5n"/>  
867 - <constraint firstAttribute="trailing" secondItem="92m-fO-JPa" secondAttribute="trailing" id="FlK-Ad-R4y"/>  
868 - <constraint firstItem="92m-fO-JPa" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="G0b-yk-fCe"/>  
869 - <constraint firstItem="Uv7-9u-GaW" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="GVo-SR-7OF"/>  
870 - <constraint firstItem="UKf-ne-nJN" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="MTG-0a-j11"/>  
871 - <constraint firstAttribute="trailing" secondItem="Uv7-9u-GaW" secondAttribute="trailing" id="MV4-36-oM0"/>  
872 - <constraint firstAttribute="trailing" secondItem="LlX-84-ki4" secondAttribute="trailing" id="SU1-uP-wlb"/>  
873 - <constraint firstItem="LlX-84-ki4" firstAttribute="top" secondItem="Uv7-9u-GaW" secondAttribute="bottom" id="V4M-Ln-Zvm"/>  
874 - <constraint firstAttribute="trailing" secondItem="O11-BV-qvn" secondAttribute="trailing" id="WCL-wX-vVx"/>  
875 - <constraint firstAttribute="trailing" secondItem="4w2-kR-uKi" secondAttribute="trailing" id="XHt-VR-3o2"/>  
876 - <constraint firstAttribute="trailing" secondItem="hWl-d7-HjU" secondAttribute="trailing" id="a4p-O3-T7o"/>  
877 - <constraint firstAttribute="height" constant="504" id="aYV-wO-q2H"/>  
878 - <constraint firstItem="hWl-d7-HjU" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="c5V-Rb-5q6"/>  
879 - <constraint firstItem="Uv7-9u-GaW" firstAttribute="top" secondItem="hWl-d7-HjU" secondAttribute="bottom" id="iER-Vw-UMX"/>  
880 - <constraint firstItem="UKf-ne-nJN" firstAttribute="top" secondItem="4w2-kR-uKi" secondAttribute="bottom" id="og5-eg-yab"/>  
881 - <constraint firstItem="hWl-d7-HjU" firstAttribute="top" secondItem="UKf-ne-nJN" secondAttribute="bottom" id="pRb-tI-wJW"/>  
882 - <constraint firstItem="4w2-kR-uKi" firstAttribute="top" secondItem="O11-BV-qvn" secondAttribute="bottom" id="pZQ-Px-yi1"/>  
883 - <constraint firstItem="Gem-D3-18H" firstAttribute="top" secondItem="LlX-84-ki4" secondAttribute="bottom" id="u58-AA-Jg9"/>  
884 - <constraint firstItem="O11-BV-qvn" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="u9Q-Cl-mxt"/>  
885 - <constraint firstItem="LlX-84-ki4" firstAttribute="leading" secondItem="aSH-ed-fS3" secondAttribute="leading" id="w4t-wy-SKU"/>  
886 - <constraint firstAttribute="trailing" secondItem="Gem-D3-18H" secondAttribute="trailing" id="yJw-Zt-MXl"/>  
887 - </constraints>  
888 - </view>  
889 - </subviews>  
890 - <constraints>  
891 - <constraint firstAttribute="bottom" secondItem="aSH-ed-fS3" secondAttribute="bottom" id="0Rl-wi-B98"/>  
892 - <constraint firstAttribute="trailing" secondItem="aSH-ed-fS3" secondAttribute="trailing" id="4K3-Fi-zNL"/>  
893 - <constraint firstItem="aSH-ed-fS3" firstAttribute="leading" secondItem="9G3-Kt-5Qi" secondAttribute="leading" id="5h7-Re-Po7"/>  
894 - <constraint firstItem="aSH-ed-fS3" firstAttribute="top" secondItem="9G3-Kt-5Qi" secondAttribute="top" id="nQD-j0-h3d"/>  
895 - <constraint firstItem="aSH-ed-fS3" firstAttribute="centerX" secondItem="9G3-Kt-5Qi" secondAttribute="centerX" id="sOf-4G-3Ja"/>  
896 - </constraints>  
897 - </scrollView>  
898 - </subviews>  
899 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
900 - <constraints>  
901 - <constraint firstItem="9G3-Kt-5Qi" firstAttribute="top" secondItem="WMM-qK-XGq" secondAttribute="bottom" id="Aok-DL-BuC"/>  
902 - <constraint firstItem="9G3-Kt-5Qi" firstAttribute="leading" secondItem="AAI-7u-wfg" secondAttribute="leading" id="MeF-KJ-jgV"/>  
903 - <constraint firstAttribute="trailing" secondItem="9G3-Kt-5Qi" secondAttribute="trailing" id="YWP-1m-nhY"/>  
904 - <constraint firstItem="Sjh-U9-acN" firstAttribute="top" secondItem="9G3-Kt-5Qi" secondAttribute="bottom" id="hAT-uJ-Kdk"/>  
905 - </constraints>  
906 - </view>  
907 - <navigationItem key="navigationItem" title="直播详情" id="MQ5-WG-oZS"/>  
908 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
909 - <connections>  
910 - <outlet property="announcementLabel" destination="s8n-ps-ena" id="yUQ-Ng-wfP"/>  
911 - <outlet property="attachViewH" destination="Zjj-Md-sHn" id="Jc3-K7-b2d"/>  
912 - <outlet property="coverImage" destination="4kP-W2-Uf5" id="3ug-tw-E72"/>  
913 - <outlet property="endDetailTimeLabel" destination="gFS-ol-eqE" id="QQ3-Wo-YCE"/>  
914 - <outlet property="imageH" destination="YlR-P0-0VQ" id="9Ub-sh-AkT"/>  
915 - <outlet property="isExamineLabel" destination="Gs4-Mx-oSq" id="dOj-IG-67W"/>  
916 - <outlet property="isInteractive" destination="Qxz-W3-c3g" id="gzv-qr-akN"/>  
917 - <outlet property="isPublic" destination="2Lo-Zh-qml" id="iMJ-fH-YC3"/>  
918 - <outlet property="personIcon" destination="eaL-rv-CLu" id="m0D-6N-xlm"/>  
919 - <outlet property="personNameLabel" destination="jnh-PT-9UR" id="TeC-Y7-IPV"/>  
920 - <outlet property="scrollContentViewH" destination="aYV-wO-q2H" id="bk7-F9-w4v"/>  
921 - <outlet property="startDetailTimeLabel" destination="qRc-2c-O7X" id="ozp-BC-0iv"/>  
922 - <outlet property="startTimeLabel" destination="P97-ha-f3O" id="FQG-2I-Ak4"/>  
923 - </connections>  
924 - </viewController>  
925 - <placeholder placeholderIdentifier="IBFirstResponder" id="VgD-4u-fxN" userLabel="First Responder" sceneMemberID="firstResponder"/>  
926 - </objects>  
927 - <point key="canvasLocation" x="1206" y="-1012"/>  
928 - </scene>  
929 - <!--首页-->  
930 - <scene sceneID="yEQ-1J-Acj">  
931 - <objects>  
932 - <viewController id="Lg1-iI-l7M" customClass="HomeViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
933 - <layoutGuides>  
934 - <viewControllerLayoutGuide type="top" id="Snz-He-CCk"/>  
935 - <viewControllerLayoutGuide type="bottom" id="ChF-8z-TH9"/>  
936 - </layoutGuides>  
937 - <view key="view" contentMode="scaleToFill" id="yJO-0v-cvY">  
938 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
939 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
940 - <subviews>  
941 - <containerView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hdg-Ja-BBs">  
942 - <rect key="frame" x="0.0" y="64" width="375" height="554"/>  
943 - <connections>  
944 - <segue destination="ysB-uo-qBa" kind="embed" id="YMs-qy-CO4"/>  
945 - </connections>  
946 - </containerView>  
947 - </subviews>  
948 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
949 - <constraints>  
950 - <constraint firstItem="hdg-Ja-BBs" firstAttribute="top" secondItem="Snz-He-CCk" secondAttribute="bottom" id="6ud-AH-q7e"/>  
951 - <constraint firstAttribute="trailing" secondItem="hdg-Ja-BBs" secondAttribute="trailing" id="8mo-lE-e3E"/>  
952 - <constraint firstItem="ChF-8z-TH9" firstAttribute="top" secondItem="hdg-Ja-BBs" secondAttribute="bottom" id="O1K-Qn-nWe"/>  
953 - <constraint firstItem="hdg-Ja-BBs" firstAttribute="leading" secondItem="yJO-0v-cvY" secondAttribute="leading" id="tAe-Au-d9E"/>  
954 - </constraints>  
955 - </view>  
956 - <tabBarItem key="tabBarItem" tag="2" title="首页" image="首页.png" id="3Fm-Xp-bik"/>  
957 - </viewController>  
958 - <placeholder placeholderIdentifier="IBFirstResponder" id="Xnu-Iy-Kp7" userLabel="First Responder" sceneMemberID="firstResponder"/>  
959 - </objects>  
960 - <point key="canvasLocation" x="380" y="-1679.0104947526238"/>  
961 - </scene>  
962 - <!--Navigation Controller-->  
963 - <scene sceneID="Wvl-yU-N9b">  
964 - <objects>  
965 - <navigationController id="2Ql-aj-R0Y" sceneMemberID="viewController">  
966 - <navigationBar key="navigationBar" contentMode="scaleToFill" id="d0m-bK-XMx">  
967 - <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>  
968 - <autoresizingMask key="autoresizingMask"/>  
969 - </navigationBar>  
970 - <connections>  
971 - <segue destination="IpH-lJ-mP4" kind="relationship" relationship="rootViewController" id="sFh-HY-fig"/>  
972 - </connections>  
973 - </navigationController>  
974 - <placeholder placeholderIdentifier="IBFirstResponder" id="Qo3-2v-F4Q" userLabel="First Responder" sceneMemberID="firstResponder"/>  
975 - </objects>  
976 - <point key="canvasLocation" x="-1150" y="-994"/>  
977 - </scene>  
978 - <!--教育视频云-->  
979 - <scene sceneID="hSs-mq-ocP">  
980 - <objects>  
981 - <tabBarController title="教育视频云" automaticallyAdjustsScrollViewInsets="NO" id="IpH-lJ-mP4" customClass="MainViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
982 - <toolbarItems/>  
983 - <navigationItem key="navigationItem" id="Nhg-ab-WIC"/>  
984 - <tabBar key="tabBar" contentMode="scaleToFill" id="3o9-JQ-rQm">  
985 - <rect key="frame" x="0.0" y="0.0" width="1000" height="1000"/>  
986 - <autoresizingMask key="autoresizingMask"/>  
987 - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>  
988 - </tabBar>  
989 - <connections>  
990 - <segue destination="Lg1-iI-l7M" kind="relationship" relationship="viewControllers" id="APt-im-58m"/>  
991 - <segue destination="Xoa-Fo-2KW" kind="relationship" relationship="viewControllers" id="518-KW-hok"/>  
992 - </connections>  
993 - </tabBarController>  
994 - <placeholder placeholderIdentifier="IBFirstResponder" id="Cch-d6-a57" userLabel="First Responder" sceneMemberID="firstResponder"/>  
995 - </objects>  
996 - <point key="canvasLocation" x="-434" y="-994"/>  
997 - </scene>  
998 - <!--View Controller-->  
999 - <scene sceneID="qYH-Ib-4nE">  
1000 - <objects>  
1001 - <viewController id="6M3-Mg-gbM" sceneMemberID="viewController">  
1002 - <layoutGuides>  
1003 - <viewControllerLayoutGuide type="top" id="a6u-nW-wHG"/>  
1004 - <viewControllerLayoutGuide type="bottom" id="Ogk-cH-9O9"/>  
1005 - </layoutGuides>  
1006 - <view key="view" contentMode="scaleToFill" id="uws-bD-S2J">  
1007 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
1008 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1009 - <subviews>  
1010 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="跳转到录制界面" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YJt-OJ-wFV">  
1011 - <rect key="frame" x="0.0" y="20" width="375" height="647"/>  
1012 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1013 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1014 - <nil key="highlightedColor"/>  
1015 - </label>  
1016 - </subviews>  
1017 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1018 - <constraints>  
1019 - <constraint firstAttribute="trailing" secondItem="YJt-OJ-wFV" secondAttribute="trailing" id="0zt-ct-nXS"/>  
1020 - <constraint firstItem="Ogk-cH-9O9" firstAttribute="top" secondItem="YJt-OJ-wFV" secondAttribute="bottom" id="9gR-RB-7kg"/>  
1021 - <constraint firstItem="YJt-OJ-wFV" firstAttribute="leading" secondItem="uws-bD-S2J" secondAttribute="leading" id="AWy-fH-ijV"/>  
1022 - <constraint firstItem="YJt-OJ-wFV" firstAttribute="top" secondItem="a6u-nW-wHG" secondAttribute="bottom" id="Lf9-Hz-VER"/>  
1023 - </constraints>  
1024 - </view>  
1025 - <tabBarItem key="tabBarItem" title="" id="aSt-Yn-vVI"/>  
1026 - </viewController>  
1027 - <placeholder placeholderIdentifier="IBFirstResponder" id="ncC-zA-N4r" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1028 - </objects>  
1029 - <point key="canvasLocation" x="1889" y="-1012"/>  
1030 - </scene>  
1031 - <!--Home Detail View Controller-->  
1032 - <scene sceneID="L5Q-sn-wUW">  
1033 - <objects>  
1034 - <viewController id="ysB-uo-qBa" customClass="HomeDetailViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1035 - <layoutGuides>  
1036 - <viewControllerLayoutGuide type="top" id="L8p-xj-xyD"/>  
1037 - <viewControllerLayoutGuide type="bottom" id="0mD-bE-tdN"/>  
1038 - </layoutGuides>  
1039 - <view key="view" contentMode="scaleToFill" id="1nb-uH-eKU">  
1040 - <rect key="frame" x="0.0" y="0.0" width="375" height="554"/>  
1041 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1042 - <subviews>  
1043 - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WTB-8t-JEo">  
1044 - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>  
1045 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
1046 - <constraints>  
1047 - <constraint firstAttribute="height" constant="44" id="dx0-Rc-fyh"/>  
1048 - </constraints>  
1049 - </scrollView>  
1050 - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" pagingEnabled="YES" showsHorizontalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="siz-Fk-vlY">  
1051 - <rect key="frame" x="0.0" y="44" width="375" height="510"/>  
1052 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1053 - <connections>  
1054 - <outlet property="delegate" destination="ysB-uo-qBa" id="fon-K9-eOa"/>  
1055 - </connections>  
1056 - </scrollView>  
1057 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="peJ-NI-MRy">  
1058 - <rect key="frame" x="0.0" y="44" width="375" height="1"/>  
1059 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
1060 - <constraints>  
1061 - <constraint firstAttribute="height" constant="1" id="xT3-HT-B9t"/>  
1062 - </constraints>  
1063 - </view>  
1064 - </subviews>  
1065 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1066 - <constraints>  
1067 - <constraint firstAttribute="trailing" secondItem="peJ-NI-MRy" secondAttribute="trailing" id="0Ay-ei-Jju"/>  
1068 - <constraint firstAttribute="bottom" secondItem="siz-Fk-vlY" secondAttribute="bottom" id="5uE-Ay-LFa"/>  
1069 - <constraint firstItem="peJ-NI-MRy" firstAttribute="leading" secondItem="1nb-uH-eKU" secondAttribute="leading" id="JMt-PN-6i1"/>  
1070 - <constraint firstItem="siz-Fk-vlY" firstAttribute="top" secondItem="WTB-8t-JEo" secondAttribute="bottom" id="Jov-TU-nhs"/>  
1071 - <constraint firstItem="siz-Fk-vlY" firstAttribute="leading" secondItem="1nb-uH-eKU" secondAttribute="leading" id="NfD-UL-jeR"/>  
1072 - <constraint firstAttribute="trailing" secondItem="siz-Fk-vlY" secondAttribute="trailing" id="iF1-WJ-0g6"/>  
1073 - <constraint firstItem="peJ-NI-MRy" firstAttribute="top" secondItem="WTB-8t-JEo" secondAttribute="bottom" id="oyE-61-Ur7"/>  
1074 - <constraint firstItem="WTB-8t-JEo" firstAttribute="leading" secondItem="1nb-uH-eKU" secondAttribute="leading" id="uAQ-H2-t2k"/>  
1075 - <constraint firstAttribute="trailing" secondItem="WTB-8t-JEo" secondAttribute="trailing" id="vA5-PX-Sr4"/>  
1076 - <constraint firstItem="WTB-8t-JEo" firstAttribute="top" secondItem="1nb-uH-eKU" secondAttribute="top" id="y59-CZ-EuC"/>  
1077 - </constraints>  
1078 - </view>  
1079 - <connections>  
1080 - <outlet property="menuScrollView" destination="WTB-8t-JEo" id="QgZ-Ae-yuN"/>  
1081 - <outlet property="scrollView" destination="siz-Fk-vlY" id="Rpn-gX-hV3"/>  
1082 - </connections>  
1083 - </viewController>  
1084 - <placeholder placeholderIdentifier="IBFirstResponder" id="9lc-MY-DQl" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1085 - </objects>  
1086 - <point key="canvasLocation" x="1205.5999999999999" y="-1679.4602698650676"/>  
1087 - </scene>  
1088 - <!--更多-->  
1089 - <scene sceneID="2uh-dS-Rxp">  
1090 - <objects>  
1091 - <viewController storyboardIdentifier="MoreViewController" id="O7P-Cf-mIk" customClass="MoreViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1092 - <layoutGuides>  
1093 - <viewControllerLayoutGuide type="top" id="c2y-dE-z0d"/>  
1094 - <viewControllerLayoutGuide type="bottom" id="XmR-1Y-0Yz"/>  
1095 - </layoutGuides>  
1096 - <view key="view" contentMode="scaleToFill" id="ejV-Vc-Dk9">  
1097 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
1098 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1099 - <subviews>  
1100 - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="eBy-Q1-S80">  
1101 - <rect key="frame" x="0.0" y="64" width="375" height="603"/>  
1102 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1103 - <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="YEg-GV-fgk">  
1104 - <size key="itemSize" width="100" height="100"/>  
1105 - <size key="headerReferenceSize" width="0.0" height="0.0"/>  
1106 - <size key="footerReferenceSize" width="0.0" height="0.0"/>  
1107 - <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>  
1108 - </collectionViewFlowLayout>  
1109 - <cells>  
1110 - <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="awQ-69-W6a">  
1111 - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/>  
1112 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
1113 - <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">  
1114 - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/>  
1115 - <autoresizingMask key="autoresizingMask"/>  
1116 - </view>  
1117 - </collectionViewCell>  
1118 - </cells>  
1119 - <connections>  
1120 - <outlet property="dataSource" destination="O7P-Cf-mIk" id="bVu-V1-V8W"/>  
1121 - <outlet property="delegate" destination="O7P-Cf-mIk" id="Fk3-Fe-7cA"/>  
1122 - </connections>  
1123 - </collectionView>  
1124 - </subviews>  
1125 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1126 - <constraints>  
1127 - <constraint firstAttribute="trailing" secondItem="eBy-Q1-S80" secondAttribute="trailing" id="4RI-Yc-DP9"/>  
1128 - <constraint firstItem="XmR-1Y-0Yz" firstAttribute="top" secondItem="eBy-Q1-S80" secondAttribute="bottom" id="8BK-aL-Jnu"/>  
1129 - <constraint firstItem="eBy-Q1-S80" firstAttribute="leading" secondItem="ejV-Vc-Dk9" secondAttribute="leading" id="JZC-6q-tDR"/>  
1130 - <constraint firstItem="eBy-Q1-S80" firstAttribute="top" secondItem="c2y-dE-z0d" secondAttribute="bottom" id="ucr-po-KYh"/>  
1131 - </constraints>  
1132 - </view>  
1133 - <navigationItem key="navigationItem" title="更多" id="T3B-Yf-ctV"/>  
1134 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
1135 - <connections>  
1136 - <outlet property="collectionView" destination="eBy-Q1-S80" id="00L-L5-hIq"/>  
1137 - </connections>  
1138 - </viewController>  
1139 - <placeholder placeholderIdentifier="IBFirstResponder" id="1cb-EL-Do3" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1140 - </objects>  
1141 - <point key="canvasLocation" x="1888.8" y="-1679.0104947526238"/>  
1142 - </scene>  
1143 - <!--最热-->  
1144 - <scene sceneID="BlJ-QX-os8">  
1145 - <objects>  
1146 - <viewController storyboardIdentifier="HotMoreViewController" id="Jph-l3-PtE" customClass="HotMoreViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1147 - <layoutGuides>  
1148 - <viewControllerLayoutGuide type="top" id="El5-2N-mar"/>  
1149 - <viewControllerLayoutGuide type="bottom" id="hjM-YC-oTb"/>  
1150 - </layoutGuides>  
1151 - <view key="view" contentMode="scaleToFill" id="mle-JJ-tiX">  
1152 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
1153 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1154 - <subviews>  
1155 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="OE3-dR-ImI">  
1156 - <rect key="frame" x="0.0" y="64" width="375" height="603"/>  
1157 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1158 - <connections>  
1159 - <outlet property="dataSource" destination="Jph-l3-PtE" id="ebi-Rt-RE4"/>  
1160 - <outlet property="delegate" destination="Jph-l3-PtE" id="VcA-AG-Sok"/>  
1161 - </connections>  
1162 - </tableView>  
1163 - </subviews>  
1164 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1165 - <constraints>  
1166 - <constraint firstItem="hjM-YC-oTb" firstAttribute="top" secondItem="OE3-dR-ImI" secondAttribute="bottom" id="1wB-nu-CaJ"/>  
1167 - <constraint firstAttribute="trailing" secondItem="OE3-dR-ImI" secondAttribute="trailing" id="Qqo-K7-t4c"/>  
1168 - <constraint firstItem="OE3-dR-ImI" firstAttribute="leading" secondItem="mle-JJ-tiX" secondAttribute="leading" id="SFY-5M-OE0"/>  
1169 - <constraint firstItem="OE3-dR-ImI" firstAttribute="top" secondItem="El5-2N-mar" secondAttribute="bottom" id="pu0-vs-ZVA"/>  
1170 - </constraints>  
1171 - </view>  
1172 - <navigationItem key="navigationItem" title="最热" id="xjm-44-nLz"/>  
1173 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
1174 - <connections>  
1175 - <outlet property="tableView" destination="OE3-dR-ImI" id="6Mm-eJ-bgq"/>  
1176 - </connections>  
1177 - </viewController>  
1178 - <placeholder placeholderIdentifier="IBFirstResponder" id="jFr-6C-m73" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1179 - </objects>  
1180 - <point key="canvasLocation" x="2581.5999999999999" y="-1679.0104947526238"/>  
1181 - </scene>  
1182 - <!--列表-->  
1183 - <scene sceneID="ZF8-5I-tzV">  
1184 - <objects>  
1185 - <viewController storyboardIdentifier="LiveTypeListViewController" id="xbD-Bj-K0h" customClass="LiveTypeListViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1186 - <layoutGuides>  
1187 - <viewControllerLayoutGuide type="top" id="J0h-Mn-3dq"/>  
1188 - <viewControllerLayoutGuide type="bottom" id="X29-PQ-nr4"/>  
1189 - </layoutGuides>  
1190 - <view key="view" contentMode="scaleToFill" id="uFj-96-FtC">  
1191 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
1192 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1193 - <subviews>  
1194 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="Mp9-RK-hsB">  
1195 - <rect key="frame" x="0.0" y="64" width="375" height="603"/>  
1196 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1197 - <connections>  
1198 - <outlet property="dataSource" destination="xbD-Bj-K0h" id="u1e-0J-FVt"/>  
1199 - <outlet property="delegate" destination="xbD-Bj-K0h" id="ng0-fZ-pfO"/>  
1200 - </connections>  
1201 - </tableView>  
1202 - </subviews>  
1203 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1204 - <constraints>  
1205 - <constraint firstItem="Mp9-RK-hsB" firstAttribute="leading" secondItem="uFj-96-FtC" secondAttribute="leading" id="Hbg-27-BF6"/>  
1206 - <constraint firstItem="X29-PQ-nr4" firstAttribute="top" secondItem="Mp9-RK-hsB" secondAttribute="bottom" id="j4K-um-vff"/>  
1207 - <constraint firstItem="Mp9-RK-hsB" firstAttribute="top" secondItem="J0h-Mn-3dq" secondAttribute="bottom" id="nV1-o3-OIH"/>  
1208 - <constraint firstAttribute="trailing" secondItem="Mp9-RK-hsB" secondAttribute="trailing" id="q88-BM-e0C"/>  
1209 - </constraints>  
1210 - </view>  
1211 - <navigationItem key="navigationItem" title="列表" id="Z73-42-7TC"/>  
1212 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
1213 - <connections>  
1214 - <outlet property="tableView" destination="Mp9-RK-hsB" id="l1r-y0-Qvc"/>  
1215 - </connections>  
1216 - </viewController>  
1217 - <placeholder placeholderIdentifier="IBFirstResponder" id="zaf-p8-ZkA" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1218 - </objects>  
1219 - <point key="canvasLocation" x="3272.8000000000002" y="-1679.0104947526238"/>  
1220 - </scene>  
1221 <!--教育视频云--> 516 <!--教育视频云-->
1222 <scene sceneID="HjP-gB-wYC"> 517 <scene sceneID="HjP-gB-wYC">
1223 <objects> 518 <objects>
@@ -1342,13 +637,11 @@ @@ -1342,13 +637,11 @@
1342 </scenes> 637 </scenes>
1343 <resources> 638 <resources>
1344 <image name="arrow" width="33" height="33"/> 639 <image name="arrow" width="33" height="33"/>
1345 - <image name="attach_file.png" width="128" height="128"/>  
1346 <image name="default" width="375" height="167"/> 640 <image name="default" width="375" height="167"/>
1347 <image name="default_userRoom" width="19" height="17"/> 641 <image name="default_userRoom" width="19" height="17"/>
1348 <image name="defphoto.png" width="256" height="256"/> 642 <image name="defphoto.png" width="256" height="256"/>
1349 <image name="divshadow.png" width="771" height="13"/> 643 <image name="divshadow.png" width="771" height="13"/>
1350 <image name="icon.png" width="80" height="80"/> 644 <image name="icon.png" width="80" height="80"/>
1351 <image name="视窗.png" width="31" height="31"/> 645 <image name="视窗.png" width="31" height="31"/>
1352 - <image name="首页.png" width="31" height="31"/>  
1353 </resources> 646 </resources>
1354 </document> 647 </document>
YouerLiveVideo/YouerLiveVideo/YouerLiveVideo-Bridging-Header.h
@@ -10,7 +10,6 @@ @@ -10,7 +10,6 @@
10 #define YouerLiveVideo_Bridging_Header_h 10 #define YouerLiveVideo_Bridging_Header_h
11 #import <CommonCrypto/CommonCrypto.h> 11 #import <CommonCrypto/CommonCrypto.h>
12 #import <AlivcLiveVideo/AlivcLiveVideo.h> 12 #import <AlivcLiveVideo/AlivcLiveVideo.h>
13 -#import "AlivcLiveViewController.h"  
14 #import "UIView+Toast.h" 13 #import "UIView+Toast.h"
15 #import "ZSDSetPasswordView.h" 14 #import "ZSDSetPasswordView.h"
16 #import <UMSocialCore/UMSocialCore.h> 15 #import <UMSocialCore/UMSocialCore.h>
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/AttentionTableViewCell.swift
@@ -1,59 +0,0 @@ @@ -1,59 +0,0 @@
1 -//  
2 -// AttentionTableViewCell.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/19.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class AttentionTableViewCell: UITableViewCell {  
12 - @IBOutlet var iconImage: UIImageView!  
13 - @IBOutlet var personNameLabel: UILabel!  
14 - @IBOutlet var titleLabel: UILabel!  
15 - @IBOutlet var personNumberLabel: UILabel!  
16 - @IBOutlet var attentionBtn: UIButton!  
17 - var organizeSchool:OrganizeListSchool!  
18 - var superVC:UIViewController!  
19 - override func awakeFromNib() {  
20 - super.awakeFromNib()  
21 - }  
22 -  
23 - override func setSelected(_ selected: Bool, animated: Bool) {  
24 - super.setSelected(selected, animated: animated)  
25 - }  
26 -  
27 - @IBAction func attentionAction(_ sender: UIButton) {  
28 - SVProgressHUD.show(withStatus: "加载中...")  
29 - SVProgressHUD.setDefaultMaskType(.black)  
30 - let parameters:Dictionary<String,AnyObject>=["F_OrganizeId":organizeSchool.f_Id as AnyObject,"F_Action":0 as AnyObject]  
31 - AppDelegate.instance().httpServer.setIsAction(parameters: parameters, completionHandler: { (str, error) in  
32 - SVProgressHUD.dismiss()  
33 - if error==nil {  
34 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
35 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
36 - (self.superVC as! MyAttentionViewController).getActSchoolList()  
37 - }, failHandler: { (error) in  
38 - AppDelegate.instance().window?.makeToast("取消关注失败:\(error.localizedDescription)")  
39 - })  
40 - }else{  
41 - AppDelegate.instance().window?.makeToast("取消关注失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
42 - }  
43 - }else{  
44 - AppDelegate.instance().window?.makeToast("取消关注失败:\(error!.description)")  
45 - }  
46 - })  
47 - }  
48 -  
49 - func setupWith(item:OrganizeListSchool,isMy:Bool){  
50 - if isMy {  
51 - attentionBtn.isHidden=false  
52 - }else{  
53 - attentionBtn.isHidden=true  
54 - }  
55 - organizeSchool=item  
56 - personNameLabel.text=item.f_FullName  
57 - personNumberLabel.text="\(item.f_Views)人正在观看"  
58 - }  
59 -}  
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/AttentionTableViewCell.xib
@@ -1,99 +0,0 @@ @@ -1,99 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">  
3 - <dependencies>  
4 - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>  
5 - <capability name="Constraints to layout margins" minToolsVersion="6.0"/>  
6 - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>  
7 - </dependencies>  
8 - <objects>  
9 - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>  
10 - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>  
11 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="AttentionTableViewCell" rowHeight="80" id="9mN-zR-YLB" customClass="AttentionTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target">  
12 - <rect key="frame" x="0.0" y="0.0" width="375" height="80"/>  
13 - <autoresizingMask key="autoresizingMask"/>  
14 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9mN-zR-YLB" id="NMP-qu-Uj3">  
15 - <frame key="frameInset" width="375" height="79"/>  
16 - <autoresizingMask key="autoresizingMask"/>  
17 - <subviews>  
18 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="9fi-L6-AHq">  
19 - <constraints>  
20 - <constraint firstAttribute="width" constant="60" id="g4Z-aE-zgq"/>  
21 - <constraint firstAttribute="height" constant="60" id="puv-1u-nc5"/>  
22 - </constraints>  
23 - <userDefinedRuntimeAttributes>  
24 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
25 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
26 - <integer key="value" value="30"/>  
27 - </userDefinedRuntimeAttribute>  
28 - </userDefinedRuntimeAttributes>  
29 - </imageView>  
30 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="杭州顺治" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7UF-rv-D7h">  
31 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
32 - <nil key="textColor"/>  
33 - <nil key="highlightedColor"/>  
34 - </label>  
35 - <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="QNP-ow-TLk">  
36 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
37 - <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>  
38 - <nil key="highlightedColor"/>  
39 - </label>  
40 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IEr-0a-zkG">  
41 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
42 - <constraints>  
43 - <constraint firstAttribute="width" constant="70" id="Jmg-k5-GYf"/>  
44 - <constraint firstAttribute="height" constant="25" id="f5F-xn-jqm"/>  
45 - </constraints>  
46 - <state key="normal" title="已关注">  
47 - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
48 - </state>  
49 - <connections>  
50 - <action selector="attentionAction:" destination="9mN-zR-YLB" eventType="touchUpInside" id="kDp-pq-goF"/>  
51 - </connections>  
52 - </button>  
53 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="b4T-8l-vne">  
54 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
55 - <constraints>  
56 - <constraint firstAttribute="height" constant="1" id="0hZ-AG-hLJ"/>  
57 - </constraints>  
58 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
59 - <nil key="textColor"/>  
60 - <nil key="highlightedColor"/>  
61 - </label>  
62 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10000人看过" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j0J-Nb-DVD">  
63 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
64 - <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>  
65 - <nil key="highlightedColor"/>  
66 - </label>  
67 - </subviews>  
68 - <constraints>  
69 - <constraint firstItem="9fi-L6-AHq" firstAttribute="centerY" secondItem="NMP-qu-Uj3" secondAttribute="centerY" id="4Xc-1A-D92"/>  
70 - <constraint firstAttribute="trailingMargin" secondItem="IEr-0a-zkG" secondAttribute="trailing" id="6Di-Ra-ZOV"/>  
71 - <constraint firstItem="IEr-0a-zkG" firstAttribute="leading" secondItem="j0J-Nb-DVD" secondAttribute="trailing" constant="8" id="6L9-zI-0EU"/>  
72 - <constraint firstItem="QNP-ow-TLk" firstAttribute="leading" secondItem="9fi-L6-AHq" secondAttribute="trailing" constant="8" id="9P3-Ih-BZu"/>  
73 - <constraint firstItem="IEr-0a-zkG" firstAttribute="centerY" secondItem="NMP-qu-Uj3" secondAttribute="centerY" id="IP1-0k-VMi"/>  
74 - <constraint firstItem="j0J-Nb-DVD" firstAttribute="leading" secondItem="9fi-L6-AHq" secondAttribute="trailing" constant="8" id="Rvc-ms-cAl"/>  
75 - <constraint firstItem="IEr-0a-zkG" firstAttribute="leading" secondItem="QNP-ow-TLk" secondAttribute="trailing" constant="8" id="WFx-pc-US8"/>  
76 - <constraint firstItem="QNP-ow-TLk" firstAttribute="top" secondItem="7UF-rv-D7h" secondAttribute="bottom" id="aXm-m1-ED4"/>  
77 - <constraint firstItem="7UF-rv-D7h" firstAttribute="top" secondItem="NMP-qu-Uj3" secondAttribute="topMargin" constant="7" id="aoC-el-Iq1"/>  
78 - <constraint firstItem="j0J-Nb-DVD" firstAttribute="top" secondItem="QNP-ow-TLk" secondAttribute="bottom" id="bJV-Hx-V9y"/>  
79 - <constraint firstAttribute="bottom" secondItem="b4T-8l-vne" secondAttribute="bottom" id="dnO-xH-3aJ"/>  
80 - <constraint firstAttribute="trailing" secondItem="b4T-8l-vne" secondAttribute="trailing" id="hTZ-M3-atK"/>  
81 - <constraint firstItem="7UF-rv-D7h" firstAttribute="leading" secondItem="9fi-L6-AHq" secondAttribute="trailing" constant="8" id="jRd-Q4-opb"/>  
82 - <constraint firstItem="b4T-8l-vne" firstAttribute="leading" secondItem="NMP-qu-Uj3" secondAttribute="leading" id="nkA-nf-n9C"/>  
83 - <constraint firstAttribute="leadingMargin" secondItem="9fi-L6-AHq" secondAttribute="leading" id="ucp-Cp-t0K"/>  
84 - <constraint firstItem="IEr-0a-zkG" firstAttribute="leading" secondItem="7UF-rv-D7h" secondAttribute="trailing" constant="8" id="xB9-HV-w56"/>  
85 - </constraints>  
86 - </tableViewCellContentView>  
87 - <connections>  
88 - <outlet property="attentionBtn" destination="IEr-0a-zkG" id="v9W-3J-ewb"/>  
89 - <outlet property="iconImage" destination="9fi-L6-AHq" id="S0a-Cg-dcd"/>  
90 - <outlet property="personNameLabel" destination="7UF-rv-D7h" id="Ezs-Ca-YLK"/>  
91 - <outlet property="personNumberLabel" destination="j0J-Nb-DVD" id="fjn-kJ-GLu"/>  
92 - <outlet property="titleLabel" destination="QNP-ow-TLk" id="Luk-IJ-iVH"/>  
93 - </connections>  
94 - </tableViewCell>  
95 - </objects>  
96 - <resources>  
97 - <image name="defphoto.png" width="256" height="256"/>  
98 - </resources>  
99 -</document>  
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/HomeTableViewCell.swift
@@ -1,79 +0,0 @@ @@ -1,79 +0,0 @@
1 -//  
2 -// HomeTableViewCell.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/14.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class HomeTableViewCell: UITableViewCell {  
12 - @IBOutlet var personIcon: UIImageView!  
13 - @IBOutlet var titleLabel: UILabel!  
14 - @IBOutlet var timeLabel: UILabel!  
15 - @IBOutlet var detailView: UIView!  
16 - @IBOutlet var numberPeople: UILabel!  
17 - @IBOutlet var numberCare: UILabel!  
18 - @IBOutlet var passLabel: UILabel!  
19 - @IBOutlet var liveimageView: UIImageView!  
20 - @IBOutlet var tagLabel: UILabel!  
21 -  
22 - @IBOutlet weak var rommNameLabel: UILabel!  
23 - let formatte=DateFormatter()  
24 - override func awakeFromNib() {  
25 - super.awakeFromNib()  
26 - tagLabel.layer.cornerRadius = 5  
27 - tagLabel.layer.masksToBounds=true  
28 - tagLabel.layer.borderWidth=1.0  
29 - tagLabel.layer.borderColor=Theme.topBarColor().cgColor  
30 - formatte.dateFormat="yyyy-MM-dd HH:mm:ss"  
31 - }  
32 - func setUpWith(item:LiveDetail){  
33 - passLabel.isHidden=true  
34 - detailView.isHidden=true  
35 - personIcon.sd_setImage(with: URL(string:item.f_HeadIcon), placeholderImage: UIImage(named:"defphoto"))  
36 - titleLabel.text=item.f_RealName  
37 - timeLabel.text=formatte.string(from: Date(timeIntervalSince1970: JSON.fromString(jsonString: item.f_Description)!["starttime"].doubleValue/1000 as TimeInterval))  
38 - liveimageView.sd_setImage(with: URL(string:item.f_LiveImg), placeholderImage: UIImage(named:"placeholder"))  
39 - tagLabel.text=" "+item.f_CategoryName+" "  
40 - rommNameLabel.text = item.f_LiveName  
41 - }  
42 - func setUpWith(type:LivesType,item:LiveDetail){  
43 - personIcon.sd_setImage(with: URL(string:item.f_HeadIcon), placeholderImage: UIImage(named:"defphoto"))  
44 - titleLabel.text=item.f_LiveName  
45 - timeLabel.text=formatte.string(from: Date(timeIntervalSince1970: JSON.fromString(jsonString: item.f_Description)!["starttime"].doubleValue/1000 as TimeInterval))  
46 - liveimageView.sd_setImage(with: URL(string:item.f_LiveImg), placeholderImage: UIImage(named:"placeholder"))  
47 - tagLabel.text=item.f_CategoryName  
48 - switch type {  
49 - case LivesType.liveList://直播列表  
50 - passLabel.isHidden=false  
51 - detailView.isHidden=true  
52 - if item.f_IsExamine==1 {  
53 - passLabel.backgroundColor=Theme.topBarColor()  
54 - passLabel.text="已通过"  
55 - }else if item.f_IsExamine==2 {  
56 - passLabel.backgroundColor=UIColor.gray  
57 - passLabel.text="未通过"  
58 - }else{  
59 - passLabel.backgroundColor=UIColor.gray  
60 - passLabel.text="待审核"  
61 - }  
62 - break  
63 - case LivesType.liveHistory://直播历史  
64 - passLabel.isHidden=true  
65 - detailView.isHidden=false  
66 - //多少人观看,多少人关注  
67 - break  
68 - default:  
69 - passLabel.isHidden=true  
70 - detailView.isHidden=false  
71 - }  
72 - }  
73 - override func setSelected(_ selected: Bool, animated: Bool) {  
74 - super.setSelected(selected, animated: animated)  
75 -  
76 - // Configure the view for the selected state  
77 - }  
78 -  
79 -}  
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/HomeTableViewCell.xib
@@ -1,205 +0,0 @@ @@ -1,205 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">  
3 - <device id="retina4_7" orientation="portrait">  
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 - <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" rowHeight="332" id="KGk-i7-Jjw" customClass="HomeTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target">  
14 - <rect key="frame" x="0.0" y="0.0" width="428" height="332"/>  
15 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
16 - <tableViewCellContentView key="contentView" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">  
17 - <rect key="frame" x="0.0" y="0.0" width="428" height="332"/>  
18 - <autoresizingMask key="autoresizingMask"/>  
19 - <subviews>  
20 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="p5I-Ng-1OX">  
21 - <rect key="frame" x="0.0" y="0.0" width="428" height="52"/>  
22 - <subviews>  
23 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon.png" translatesAutoresizingMaskIntoConstraints="NO" id="s6K-bm-CvZ">  
24 - <rect key="frame" x="10" y="10" width="32" height="32"/>  
25 - <constraints>  
26 - <constraint firstAttribute="height" constant="32" id="XYp-ig-s4I"/>  
27 - <constraint firstAttribute="width" constant="32" id="g8J-oV-weW"/>  
28 - </constraints>  
29 - <userDefinedRuntimeAttributes>  
30 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
31 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
32 - <integer key="value" value="16"/>  
33 - </userDefinedRuntimeAttribute>  
34 - </userDefinedRuntimeAttributes>  
35 - </imageView>  
36 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="数学-勾股定理详解" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="B90-WP-zZC">  
37 - <rect key="frame" x="54" y="8" width="366" height="17"/>  
38 - <fontDescription key="fontDescription" type="system" pointSize="14"/>  
39 - <nil key="textColor"/>  
40 - <nil key="highlightedColor"/>  
41 - </label>  
42 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2017-01-14 10:48" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tF7-KY-Ksz">  
43 - <rect key="frame" x="54" y="31" width="108" height="16"/>  
44 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
45 - <color key="textColor" red="0.6705882352941176" green="0.6705882352941176" blue="0.6705882352941176" alpha="1" colorSpace="calibratedRGB"/>  
46 - <nil key="highlightedColor"/>  
47 - </label>  
48 - <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kxI-8X-XWu">  
49 - <rect key="frame" x="298" y="0.0" width="130" height="52"/>  
50 - <subviews>  
51 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="120100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Veh-uq-cW2">  
52 - <rect key="frame" x="20" y="18" width="45" height="16"/>  
53 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
54 - <nil key="textColor"/>  
55 - <nil key="highlightedColor"/>  
56 - </label>  
57 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="观看人数.png" translatesAutoresizingMaskIntoConstraints="NO" id="9B5-M6-Bc2">  
58 - <rect key="frame" x="5" y="21" width="15" height="10"/>  
59 - <constraints>  
60 - <constraint firstAttribute="height" constant="10" id="4Pc-f3-dac"/>  
61 - <constraint firstAttribute="width" constant="15" id="u2J-2K-N1Y"/>  
62 - </constraints>  
63 - </imageView>  
64 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="礼物数量.png" translatesAutoresizingMaskIntoConstraints="NO" id="pRf-Ov-q43">  
65 - <rect key="frame" x="65" y="20" width="12" height="12"/>  
66 - <constraints>  
67 - <constraint firstAttribute="width" constant="12" id="gEC-1c-3cN"/>  
68 - <constraint firstAttribute="height" constant="12" id="rw9-Cd-6Cg"/>  
69 - </constraints>  
70 - </imageView>  
71 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="120100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Qr-Xj-qWL">  
72 - <rect key="frame" x="77" y="18" width="45" height="16"/>  
73 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
74 - <nil key="textColor"/>  
75 - <nil key="highlightedColor"/>  
76 - </label>  
77 - </subviews>  
78 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
79 - <constraints>  
80 - <constraint firstItem="9Qr-Xj-qWL" firstAttribute="centerY" secondItem="kxI-8X-XWu" secondAttribute="centerY" id="8pn-og-EMK"/>  
81 - <constraint firstItem="pRf-Ov-q43" firstAttribute="centerY" secondItem="kxI-8X-XWu" secondAttribute="centerY" id="BgV-93-IKu"/>  
82 - <constraint firstAttribute="width" constant="130" id="JE1-jh-MuK"/>  
83 - <constraint firstItem="9Qr-Xj-qWL" firstAttribute="leading" secondItem="pRf-Ov-q43" secondAttribute="trailing" id="KmI-Hh-vRN"/>  
84 - <constraint firstAttribute="trailing" secondItem="9Qr-Xj-qWL" secondAttribute="trailing" constant="8.5" id="QRD-sN-78r"/>  
85 - <constraint firstItem="pRf-Ov-q43" firstAttribute="leading" secondItem="Veh-uq-cW2" secondAttribute="trailing" id="dGE-Ms-KoM"/>  
86 - <constraint firstItem="Veh-uq-cW2" firstAttribute="centerY" secondItem="kxI-8X-XWu" secondAttribute="centerY" id="jfs-y0-wCU"/>  
87 - <constraint firstItem="9B5-M6-Bc2" firstAttribute="centerY" secondItem="kxI-8X-XWu" secondAttribute="centerY" id="kfe-0g-X2N"/>  
88 - <constraint firstItem="Veh-uq-cW2" firstAttribute="leading" secondItem="9B5-M6-Bc2" secondAttribute="trailing" id="yE1-yd-6oS"/>  
89 - </constraints>  
90 - </view>  
91 - <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="未通过" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lto-Nc-FIO">  
92 - <rect key="frame" x="375" y="16" width="45" height="20"/>  
93 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
94 - <constraints>  
95 - <constraint firstAttribute="width" constant="45" id="7BO-52-GJa"/>  
96 - <constraint firstAttribute="height" constant="20" id="Tyx-GJ-9Du"/>  
97 - </constraints>  
98 - <fontDescription key="fontDescription" type="system" pointSize="12"/>  
99 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
100 - <nil key="highlightedColor"/>  
101 - <userDefinedRuntimeAttributes>  
102 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
103 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
104 - <integer key="value" value="10"/>  
105 - </userDefinedRuntimeAttribute>  
106 - </userDefinedRuntimeAttributes>  
107 - </label>  
108 - </subviews>  
109 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
110 - <constraints>  
111 - <constraint firstAttribute="bottom" secondItem="kxI-8X-XWu" secondAttribute="bottom" id="76i-Qb-t5O"/>  
112 - <constraint firstAttribute="trailing" secondItem="lto-Nc-FIO" secondAttribute="trailing" constant="8" id="87I-sr-8Vv"/>  
113 - <constraint firstAttribute="height" constant="52" id="Ayg-RW-o84"/>  
114 - <constraint firstAttribute="trailing" secondItem="kxI-8X-XWu" secondAttribute="trailing" id="KR6-3G-mC6"/>  
115 - <constraint firstAttribute="trailing" secondItem="B90-WP-zZC" secondAttribute="trailing" constant="8" id="UKy-6K-G3J"/>  
116 - <constraint firstAttribute="bottom" secondItem="tF7-KY-Ksz" secondAttribute="bottom" constant="5" id="UcS-J9-VUv"/>  
117 - <constraint firstItem="lto-Nc-FIO" firstAttribute="centerY" secondItem="p5I-Ng-1OX" secondAttribute="centerY" id="V3s-h2-UwJ"/>  
118 - <constraint firstItem="B90-WP-zZC" firstAttribute="leading" secondItem="s6K-bm-CvZ" secondAttribute="trailing" constant="12" id="YcU-bV-B7M"/>  
119 - <constraint firstItem="s6K-bm-CvZ" firstAttribute="leading" secondItem="p5I-Ng-1OX" secondAttribute="leading" constant="10" id="c0I-zN-prP"/>  
120 - <constraint firstItem="B90-WP-zZC" firstAttribute="top" secondItem="p5I-Ng-1OX" secondAttribute="top" constant="8" id="g2Y-9M-Fog"/>  
121 - <constraint firstItem="tF7-KY-Ksz" firstAttribute="leading" secondItem="s6K-bm-CvZ" secondAttribute="trailing" constant="12" id="hFx-ut-A5O"/>  
122 - <constraint firstItem="kxI-8X-XWu" firstAttribute="top" secondItem="p5I-Ng-1OX" secondAttribute="top" id="n12-C8-w8u"/>  
123 - <constraint firstItem="s6K-bm-CvZ" firstAttribute="centerY" secondItem="p5I-Ng-1OX" secondAttribute="centerY" id="u59-Sm-IaZ"/>  
124 - </constraints>  
125 - </view>  
126 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="placeholder" translatesAutoresizingMaskIntoConstraints="NO" id="fvu-8U-fPM">  
127 - <rect key="frame" x="0.0" y="52" width="428" height="211"/>  
128 - <constraints>  
129 - <constraint firstAttribute="height" constant="211" id="YYw-BS-I4c"/>  
130 - </constraints>  
131 - </imageView>  
132 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="标签.png" translatesAutoresizingMaskIntoConstraints="NO" id="Mho-Fp-Psg">  
133 - <rect key="frame" x="12" y="301" width="15" height="15"/>  
134 - <constraints>  
135 - <constraint firstAttribute="width" constant="15" id="2gW-lE-d5G"/>  
136 - <constraint firstAttribute="height" constant="15" id="tio-UM-kHX"/>  
137 - </constraints>  
138 - </imageView>  
139 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="数学" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EzS-bX-Sub">  
140 - <rect key="frame" x="37" y="301" width="25" height="15"/>  
141 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
142 - <fontDescription key="fontDescription" type="system" pointSize="12"/>  
143 - <color key="textColor" red="1" green="0.5" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>  
144 - <nil key="highlightedColor"/>  
145 - </label>  
146 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QKV-wT-uPI">  
147 - <rect key="frame" x="12" y="273" width="404" height="18"/>  
148 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
149 - <nil key="textColor"/>  
150 - <nil key="highlightedColor"/>  
151 - </label>  
152 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gwe-Ss-yJd">  
153 - <rect key="frame" x="0.0" y="324" width="428" height="8"/>  
154 - <color key="backgroundColor" red="0.6705882353" green="0.6705882353" blue="0.6705882353" alpha="1" colorSpace="calibratedRGB"/>  
155 - <constraints>  
156 - <constraint firstAttribute="height" constant="8" id="grE-Fy-L4g"/>  
157 - </constraints>  
158 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
159 - <nil key="textColor"/>  
160 - <nil key="highlightedColor"/>  
161 - </label>  
162 - </subviews>  
163 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
164 - <constraints>  
165 - <constraint firstAttribute="trailing" secondItem="p5I-Ng-1OX" secondAttribute="trailing" id="4l0-7n-ltM"/>  
166 - <constraint firstItem="fvu-8U-fPM" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="7bC-e1-Dof"/>  
167 - <constraint firstItem="gwe-Ss-yJd" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="B7Q-4A-DFQ"/>  
168 - <constraint firstItem="gwe-Ss-yJd" firstAttribute="top" secondItem="EzS-bX-Sub" secondAttribute="bottom" constant="8" id="DEy-Rg-4tS"/>  
169 - <constraint firstItem="p5I-Ng-1OX" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="HQA-c4-H8L"/>  
170 - <constraint firstAttribute="trailing" secondItem="fvu-8U-fPM" secondAttribute="trailing" id="MqR-YQ-vSP"/>  
171 - <constraint firstItem="fvu-8U-fPM" firstAttribute="top" secondItem="p5I-Ng-1OX" secondAttribute="bottom" id="R69-8n-adi"/>  
172 - <constraint firstItem="QKV-wT-uPI" firstAttribute="top" secondItem="fvu-8U-fPM" secondAttribute="bottom" constant="10" id="VvU-2P-abM"/>  
173 - <constraint firstItem="EzS-bX-Sub" firstAttribute="top" secondItem="Mho-Fp-Psg" secondAttribute="top" id="XXx-mY-aQA"/>  
174 - <constraint firstItem="EzS-bX-Sub" firstAttribute="leading" secondItem="Mho-Fp-Psg" secondAttribute="trailing" constant="10" id="bI6-ja-vIu"/>  
175 - <constraint firstAttribute="trailing" secondItem="gwe-Ss-yJd" secondAttribute="trailing" id="cQe-Vn-xyd"/>  
176 - <constraint firstAttribute="trailing" secondItem="QKV-wT-uPI" secondAttribute="trailing" constant="12" id="dUw-BC-2Pv"/>  
177 - <constraint firstItem="Mho-Fp-Psg" firstAttribute="top" secondItem="QKV-wT-uPI" secondAttribute="bottom" constant="10" id="fUB-il-lHR"/>  
178 - <constraint firstItem="QKV-wT-uPI" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="12" id="hJb-Rb-gsm"/>  
179 - <constraint firstItem="Mho-Fp-Psg" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="12" id="lfE-h6-A90"/>  
180 - <constraint firstItem="p5I-Ng-1OX" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="pGs-7C-4K2"/>  
181 - </constraints>  
182 - </tableViewCellContentView>  
183 - <connections>  
184 - <outlet property="detailView" destination="kxI-8X-XWu" id="vwr-lE-cPm"/>  
185 - <outlet property="liveimageView" destination="fvu-8U-fPM" id="Kj5-GS-N4b"/>  
186 - <outlet property="numberCare" destination="Veh-uq-cW2" id="PIw-O8-Pgw"/>  
187 - <outlet property="numberPeople" destination="9Qr-Xj-qWL" id="Ahd-Ml-gJJ"/>  
188 - <outlet property="passLabel" destination="lto-Nc-FIO" id="Hj7-TI-zAe"/>  
189 - <outlet property="personIcon" destination="s6K-bm-CvZ" id="iRq-Yx-280"/>  
190 - <outlet property="rommNameLabel" destination="QKV-wT-uPI" id="8or-cv-nNF"/>  
191 - <outlet property="tagLabel" destination="EzS-bX-Sub" id="PJx-va-Wp8"/>  
192 - <outlet property="timeLabel" destination="tF7-KY-Ksz" id="ebO-fT-3Uk"/>  
193 - <outlet property="titleLabel" destination="B90-WP-zZC" id="zZS-iG-ZlK"/>  
194 - </connections>  
195 - <point key="canvasLocation" x="-102" y="-7"/>  
196 - </tableViewCell>  
197 - </objects>  
198 - <resources>  
199 - <image name="icon.png" width="80" height="80"/>  
200 - <image name="placeholder" width="375" height="250"/>  
201 - <image name="标签.png" width="32" height="30"/>  
202 - <image name="礼物数量.png" width="21" height="21"/>  
203 - <image name="观看人数.png" width="31" height="20"/>  
204 - </resources>  
205 -</document>  
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/LiveTitleView.swift
@@ -1,105 +0,0 @@ @@ -1,105 +0,0 @@
1 -//  
2 -// LiveTitleView.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/14.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class LiveTitleView: UIView,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {  
12 - var typeCollectionView: UICollectionView!  
13 - var superViewController:HomeDetailViewController!  
14 - var liveTypeArray:[LiveType]=[]  
15 - var type:String="Live"  
16 - override func awakeFromNib() {  
17 - super.awakeFromNib()  
18 - let flowLayout = UICollectionViewFlowLayout()  
19 - flowLayout.scrollDirection=UICollectionViewScrollDirection.vertical  
20 - flowLayout.minimumLineSpacing = 0  
21 - flowLayout.minimumInteritemSpacing = 0  
22 - flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)  
23 -  
24 - typeCollectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: getScreenWidth(), height: getScreenWidth()/2), collectionViewLayout: flowLayout)  
25 - typeCollectionView.showsVerticalScrollIndicator = false  
26 - typeCollectionView.showsHorizontalScrollIndicator = false  
27 - typeCollectionView.delegate = self;  
28 - typeCollectionView.dataSource = self;  
29 - typeCollectionView.backgroundColor = UIColor.white  
30 - typeCollectionView.register(UINib(nibName: "liveTitleCollectionCell", bundle: nil), forCellWithReuseIdentifier: "liveTitleCollectionCell")  
31 - self.addSubview(typeCollectionView)  
32 - getLiveTypeList()  
33 - }  
34 - func getLiveTypeList(){  
35 - AppDelegate.instance().httpServer.postLiveType(type: type) { (str, error) in  
36 - if error==nil {  
37 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
38 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
39 - self.liveTypeArray=LiveType.getAllLiveType(j: json)  
40 - self.typeCollectionView.reloadData()  
41 - }, failHandler: { (error) in  
42 - NSLog("获取分类列表失败:\(error.localizedDescription)")  
43 - })  
44 - }else{  
45 - NSLog("获取分类列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
46 - }  
47 - }else{  
48 - NSLog("获取分类列表失败失败:\(error!.description)")  
49 - }  
50 - }  
51 - }  
52 - //MARK: - UICollectionViewDelegateFlowLayout  
53 - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {  
54 - return CGSize(width: getScreenWidth()/4, height: getScreenWidth()/4)  
55 - }  
56 - //MARK: - UICollectionViewDelegate,UICollectionViewDataSource  
57 - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {  
58 - if liveTypeArray.count>7{  
59 - return 8  
60 - }  
61 - return liveTypeArray.count  
62 - }  
63 - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {  
64 - let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "liveTitleCollectionCell", for: indexPath) as! liveTitleCollectionCell  
65 - //对cell 内进行赋值  
66 - if liveTypeArray.count <= 7{  
67 - cell.setUpWith(type: liveTypeArray[indexPath.row])  
68 - }else{  
69 - if indexPath.row==7 {  
70 - cell.imageView.image=UIImage(named: "moreClass")  
71 - cell.titleLabel.text="更多分类"  
72 - }else{  
73 - cell.setUpWith(type: liveTypeArray[indexPath.row])  
74 - }  
75 - }  
76 - return cell  
77 - }  
78 - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {  
79 - let item=liveTypeArray[indexPath.row]  
80 - if liveTypeArray.count <= 7{  
81 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LiveTypeListViewController") as! LiveTypeListViewController  
82 - vc.isType=true  
83 - vc.F_LiveType=item.f_Id  
84 - vc.title=item.f_LiveTypeName  
85 - self.superViewController.navigationController!.pushViewController(vc, animated: true)  
86 - }else{  
87 - if indexPath.row==7 {  
88 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MoreViewController") as! MoreViewController  
89 - vc.type=type  
90 - self.superViewController.navigationController!.pushViewController(vc, animated: true)  
91 - }else{  
92 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LiveTypeListViewController") as! LiveTypeListViewController  
93 - vc.isType=true  
94 - vc.F_LiveType=item.f_Id  
95 - vc.title=item.f_LiveTypeName  
96 - self.superViewController.navigationController!.pushViewController(vc, animated: true)  
97 - }  
98 - }  
99 - }  
100 -  
101 - @IBAction func selectMoreAction(_ sender: UIButton) {  
102 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "HotMoreViewController") as! HotMoreViewController  
103 - self.superViewController.navigationController!.pushViewController(vc, animated: true)  
104 - }  
105 -}  
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/LiveTitleView.xib
@@ -1,76 +0,0 @@ @@ -1,76 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">  
3 - <dependencies>  
4 - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>  
5 - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>  
6 - </dependencies>  
7 - <objects>  
8 - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="LiveTitleView" customModule="YouerLiveVideo" customModuleProvider="target"/>  
9 - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>  
10 - <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="LiveTitleView" customModule="YouerLiveVideo" customModuleProvider="target">  
11 - <rect key="frame" x="0.0" y="0.0" width="394" height="236"/>  
12 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
13 - <subviews>  
14 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wpJ-LV-Bj8">  
15 - <subviews>  
16 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="直播-最热.png" translatesAutoresizingMaskIntoConstraints="NO" id="Gar-k2-psW">  
17 - <constraints>  
18 - <constraint firstAttribute="width" constant="20" id="dFt-Go-vGt"/>  
19 - <constraint firstAttribute="height" constant="20" id="iQE-bs-bNv"/>  
20 - </constraints>  
21 - </imageView>  
22 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="moreHot" translatesAutoresizingMaskIntoConstraints="NO" id="uo0-Cu-E4M">  
23 - <constraints>  
24 - <constraint firstAttribute="width" constant="15" id="nbn-UC-LVn"/>  
25 - <constraint firstAttribute="height" constant="15" id="ncL-dp-azg"/>  
26 - </constraints>  
27 - </imageView>  
28 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="更多" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rcG-vc-orp">  
29 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
30 - <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>  
31 - <nil key="highlightedColor"/>  
32 - </label>  
33 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QgZ-Y4-W1V" userLabel="最热">  
34 - <connections>  
35 - <action selector="selectMoreAction:" destination="-1" eventType="touchUpInside" id="VUa-dK-Hiz"/>  
36 - </connections>  
37 - </button>  
38 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="最热" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dth-ch-Nvw">  
39 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
40 - <nil key="textColor"/>  
41 - <nil key="highlightedColor"/>  
42 - </label>  
43 - </subviews>  
44 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
45 - <constraints>  
46 - <constraint firstAttribute="height" constant="34" id="0AK-M7-ODV"/>  
47 - <constraint firstItem="Dth-ch-Nvw" firstAttribute="centerY" secondItem="wpJ-LV-Bj8" secondAttribute="centerY" id="2lW-gH-fCu"/>  
48 - <constraint firstItem="uo0-Cu-E4M" firstAttribute="leading" secondItem="rcG-vc-orp" secondAttribute="trailing" id="IMl-3p-EQf"/>  
49 - <constraint firstAttribute="bottom" secondItem="QgZ-Y4-W1V" secondAttribute="bottom" id="Ld7-gX-8rH"/>  
50 - <constraint firstItem="Dth-ch-Nvw" firstAttribute="leading" secondItem="Gar-k2-psW" secondAttribute="trailing" constant="2" id="S29-K7-tg6"/>  
51 - <constraint firstItem="QgZ-Y4-W1V" firstAttribute="top" secondItem="wpJ-LV-Bj8" secondAttribute="top" id="VCY-X6-oX8"/>  
52 - <constraint firstAttribute="trailing" secondItem="uo0-Cu-E4M" secondAttribute="trailing" constant="8" id="XDA-Lw-nKp"/>  
53 - <constraint firstItem="rcG-vc-orp" firstAttribute="centerY" secondItem="wpJ-LV-Bj8" secondAttribute="centerY" id="Z5I-9t-JMP"/>  
54 - <constraint firstItem="Gar-k2-psW" firstAttribute="leading" secondItem="wpJ-LV-Bj8" secondAttribute="leading" constant="8" id="i57-vt-bR8"/>  
55 - <constraint firstItem="uo0-Cu-E4M" firstAttribute="centerY" secondItem="wpJ-LV-Bj8" secondAttribute="centerY" id="mM7-oZ-5VV"/>  
56 - <constraint firstItem="QgZ-Y4-W1V" firstAttribute="leading" secondItem="wpJ-LV-Bj8" secondAttribute="leading" id="syv-i2-hO1"/>  
57 - <constraint firstAttribute="trailing" secondItem="QgZ-Y4-W1V" secondAttribute="trailing" id="wfe-7d-ppU"/>  
58 - <constraint firstItem="Gar-k2-psW" firstAttribute="centerY" secondItem="wpJ-LV-Bj8" secondAttribute="centerY" id="z5r-ll-jAT"/>  
59 - </constraints>  
60 - </view>  
61 - </subviews>  
62 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
63 - <constraints>  
64 - <constraint firstAttribute="trailing" secondItem="wpJ-LV-Bj8" secondAttribute="trailing" id="FtP-Au-8lK"/>  
65 - <constraint firstItem="wpJ-LV-Bj8" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="J0e-si-MIy"/>  
66 - <constraint firstAttribute="bottom" secondItem="wpJ-LV-Bj8" secondAttribute="bottom" constant="1" id="Zmo-KF-e1E"/>  
67 - </constraints>  
68 - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>  
69 - <point key="canvasLocation" x="-286" y="-343"/>  
70 - </view>  
71 - </objects>  
72 - <resources>  
73 - <image name="moreHot" width="10" height="9"/>  
74 - <image name="直播-最热.png" width="33" height="33"/>  
75 - </resources>  
76 -</document>  
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/liveTitleCollectionCell.swift
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -//  
2 -// liveTitleCollectionCell.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/14.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class liveTitleCollectionCell: UICollectionViewCell {  
12 - @IBOutlet var imageView: UIImageView!  
13 - @IBOutlet var titleLabel: UILabel!  
14 - override func awakeFromNib() {  
15 - super.awakeFromNib()  
16 - imageView.layer.cornerRadius=(getScreenWidth()/4-45)/2  
17 - }  
18 - func setUpWith(type:LiveType){  
19 - imageView.sd_setImage(with: URL(string: type.f_Img), placeholderImage: UIImage(named: "defphoto"))  
20 - titleLabel.text=type.f_LiveTypeName  
21 - }  
22 -}  
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/liveTitleCollectionCell.xib
@@ -1,55 +0,0 @@ @@ -1,55 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">  
3 - <dependencies>  
4 - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>  
5 - <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>  
6 - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>  
7 - </dependencies>  
8 - <objects>  
9 - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>  
10 - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>  
11 - <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="liveTitleCollectionCell" id="gTV-IL-0wX" customClass="liveTitleCollectionCell" customModule="YouerLiveVideo" customModuleProvider="target">  
12 - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/>  
13 - <autoresizingMask key="autoresizingMask"/>  
14 - <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">  
15 - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/>  
16 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
17 - <subviews>  
18 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播间" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0XL-Dd-Pvp">  
19 - <constraints>  
20 - <constraint firstAttribute="height" constant="21" id="aPP-gr-XJJ"/>  
21 - </constraints>  
22 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
23 - <nil key="textColor"/>  
24 - <nil key="highlightedColor"/>  
25 - </label>  
26 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="4IO-cu-Vt4">  
27 - <constraints>  
28 - <constraint firstAttribute="width" secondItem="4IO-cu-Vt4" secondAttribute="height" multiplier="1:1" id="biJ-B5-WLx"/>  
29 - </constraints>  
30 - <userDefinedRuntimeAttributes>  
31 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
32 - </userDefinedRuntimeAttributes>  
33 - </imageView>  
34 - </subviews>  
35 - </view>  
36 - <constraints>  
37 - <constraint firstItem="0XL-Dd-Pvp" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="D1I-yC-33u"/>  
38 - <constraint firstAttribute="trailing" secondItem="0XL-Dd-Pvp" secondAttribute="trailing" id="Kja-ig-eYI"/>  
39 - <constraint firstItem="4IO-cu-Vt4" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="8" id="nMY-2Q-R2C"/>  
40 - <constraint firstItem="4IO-cu-Vt4" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="roH-tk-apg"/>  
41 - <constraint firstAttribute="bottom" secondItem="0XL-Dd-Pvp" secondAttribute="bottom" constant="8" id="sqg-rB-iyb"/>  
42 - <constraint firstItem="0XL-Dd-Pvp" firstAttribute="top" secondItem="4IO-cu-Vt4" secondAttribute="bottom" constant="8" id="wop-6O-UtV"/>  
43 - </constraints>  
44 - <size key="customSize" width="98" height="108"/>  
45 - <connections>  
46 - <outlet property="imageView" destination="4IO-cu-Vt4" id="1bX-U3-Luf"/>  
47 - <outlet property="titleLabel" destination="0XL-Dd-Pvp" id="GOo-UP-XEK"/>  
48 - </connections>  
49 - <point key="canvasLocation" x="49" y="81"/>  
50 - </collectionViewCell>  
51 - </objects>  
52 - <resources>  
53 - <image name="defphoto.png" width="256" height="256"/>  
54 - </resources>  
55 -</document>  
YouerLiveVideo/YouerLiveVideo/controller/HomeDetailViewController.swift
@@ -1,308 +0,0 @@ @@ -1,308 +0,0 @@
1 -//  
2 -// HomeDetailViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/14.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class HomeDetailViewController: UIViewController,UIScrollViewDelegate,UITableViewDataSource,UITableViewDelegate,PassWordEnterViewDelegate {  
12 -  
13 - @IBOutlet var menuScrollView: UIScrollView!  
14 -  
15 - @IBOutlet var scrollView: UIScrollView!  
16 -  
17 - var menuBgView:UIView!  
18 - let menuArray:[String]=["推荐","直播","学校"]//****,"点播"  
19 - var recIndex:Int=0  
20 - var liveIndex:Int=0  
21 - var menuBtnArray:[UIButton]=[]  
22 - var refreshButton:UIButton?  
23 - var tableViewArray:[UITableView]=[]  
24 - var refreshTableView:UITableView! //需要刷新的TableView  
25 - var allLives:[Int:[LiveDetail]]=Dictionary<Int, [LiveDetail]>()//前三个的所有数据  
26 - var allSchoolList:[OrganizeListSchool]=[]//最后一个学校列表  
27 - let menuButtonWidth=getScreenWidth()/3 //****4  
28 - var passWordView:PassWordView!  
29 - override func viewDidLoad() {  
30 - super.viewDidLoad()  
31 - passWordView = Bundle.main.loadNibNamed("PassWordView", owner: nil, options: nil)?[0] as! PassWordView  
32 - passWordView.delegate = self  
33 -  
34 - self.edgesForExtendedLayout=[]  
35 - menuScrollView.contentSize=CGSize(width: getScreenWidth(), height: 49)  
36 - for i in 0..<menuArray.count{  
37 - let menu=UIButton(type: UIButtonType.custom)  
38 - menu.frame=CGRect(x: CGFloat(i)*menuButtonWidth, y: 0, width: menuButtonWidth, height: 41)  
39 - menu.backgroundColor=UIColor.white  
40 - menu.setTitle(menuArray[i], for: UIControlState.normal)  
41 - menu.setTitleColor(UIColor.black, for: UIControlState.normal)  
42 - menu.titleLabel?.font=UIFont.systemFont(ofSize: 17)  
43 - menu.tag=i  
44 - menu.addTarget(self, action: #selector(HomeDetailViewController.selectMenu(sender:)), for: UIControlEvents.touchUpInside)  
45 - menuBtnArray.append(menu)  
46 - menuScrollView.addSubview(menu)  
47 - }  
48 - menuBgView=UIView(frame: CGRect(x: 0, y: 41, width: menuButtonWidth, height: 8))  
49 - menuBgView.backgroundColor=Theme.topBarColor()  
50 - menuScrollView.addSubview(menuBgView)  
51 -  
52 - scrollView.contentSize=CGSize(width: getScreenWidth()*CGFloat(menuArray.count), height: getScreenHeight()-64-44-49)  
53 - addTableViewToScrollView(scrollView: scrollView, pageCount: menuArray.count, frame: CGRect.zero)  
54 - refreshTableView(tag: 0)  
55 - }  
56 - // MARK: - 顶部标签按钮点击方法  
57 - func selectMenu(sender:UIButton){  
58 - scrollView.setContentOffset(CGPoint(x: UIScreen.main.bounds.size.width*CGFloat(sender.tag), y: 0), animated: true)  
59 - let xx=getScreenWidth()*CGFloat(sender.tag-1)*(menuButtonWidth/getScreenWidth())-menuButtonWidth  
60 - menuScrollView.scrollRectToVisible(CGRect(x: xx, y: 0, width: getScreenWidth(), height: menuScrollView.frame.size.height), animated: true)  
61 - refreshTableView(tag: sender.tag)  
62 - }  
63 - // MARK: - 添加所有的TableView  
64 - func addTableViewToScrollView(scrollView:UIScrollView,pageCount:Int,frame:CGRect){  
65 - for i in 0..<pageCount{  
66 - let tableView=UITableView(frame: CGRect(x: getScreenWidth()*CGFloat(i), y: 0, width: getScreenWidth(), height: getScreenHeight()-64-44-49))  
67 - if i==2{  
68 - tableView.register(UINib(nibName: "AttentionTableViewCell", bundle: nil), forCellReuseIdentifier: "AttentionTableViewCell")  
69 - }else{  
70 - allLives.updateValue([], forKey: i)  
71 - tableView.register(UINib(nibName: "HomeTableViewCell", bundle: nil), forCellReuseIdentifier: "cell")  
72 - }  
73 - tableView.delegate=self  
74 - tableView.dataSource=self  
75 - tableView.tag=i  
76 - if i == 1 {  
77 - let view=Bundle.main.loadNibNamed("LiveTitleView", owner: nil, options: nil)?[0] as! LiveTitleView  
78 - view.frame.size.height=getScreenWidth()/2+40  
79 -// if i==1{  
80 -// view.type="Live"  
81 -// }else{  
82 -// view.type="Video"  
83 -// }  
84 - view.superViewController=self  
85 - tableView.tableHeaderView=view  
86 - }  
87 - tableView.separatorStyle=UITableViewCellSeparatorStyle.none  
88 - if i != 2{  
89 - let header=MJRefreshNormalHeader(refreshingBlock: {  
90 - //下拉刷新  
91 - if i==0{  
92 - self.recIndex=0  
93 - }else if i==1{  
94 - self.liveIndex=0  
95 - //直播时刷新顶部的分类  
96 - (tableView.tableHeaderView as! LiveTitleView).getLiveTypeList()  
97 - }  
98 - self.refreshLivesAction(tag: i, completionHandler: { (success) in  
99 - if success{  
100 - tableView.reloadData()  
101 - }  
102 - tableView.mj_header.endRefreshing()  
103 - })  
104 - })  
105 - header?.lastUpdatedTimeLabel.isHidden=true  
106 - tableView.mj_header=header  
107 - tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: {  
108 - //上拉加载更多  
109 - self.refreshLivesAction(tag: i, completionHandler: { (success) in  
110 - if success{  
111 - tableView.reloadData()  
112 - }  
113 - tableView.mj_footer.endRefreshing()  
114 - })  
115 - })  
116 - }  
117 - tableViewArray.append(tableView)  
118 - scrollView.addSubview(tableView)  
119 - }  
120 - }  
121 - // MARK: - 刷新数据接口  
122 - func refreshLivesAction(tag:Int,completionHandler:@escaping (Bool) -> ()){  
123 - var LiveName:String=""  
124 - var index:Int=0  
125 - var size:Int=10  
126 - switch tag {  
127 - case 0:  
128 - //点击了推荐  
129 - LiveName="Rec"  
130 - index=recIndex  
131 - break  
132 - case 1:  
133 - //点击了直播热门  
134 - LiveName="Hot"  
135 - index=liveIndex  
136 - break  
137 - case 2:  
138 - //点击了学校  
139 - LiveName="Org"  
140 - size=Int.max  
141 - break  
142 - default: break  
143 - //点击了学校  
144 - }  
145 - let parameters:Dictionary<String,AnyObject>=["PageIndex":index as AnyObject,"PageSize":size as AnyObject,"WhatLive":LiveName as AnyObject]  
146 - AppDelegate.instance().httpServer.getLive(parameters: parameters, completionHandler: { (str, error) in  
147 - var success:Bool=true  
148 - if error==nil {  
149 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
150 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
151 - success=true  
152 - let lives=LiveDetail.getAllLives(j: json)  
153 - let oldLives=self.allLives[tag]  
154 - if lives.count>0{  
155 - if tag==0{  
156 - self.recIndex=self.recIndex+1  
157 - }else if tag==1{  
158 - self.liveIndex=self.liveIndex+1  
159 - }  
160 - }  
161 - if index != 0{  
162 - self.allLives.updateValue(oldLives!+lives, forKey: tag)  
163 - }else{  
164 - self.allLives.updateValue(lives, forKey: tag)  
165 - }  
166 - }, failHandler: { (error) in  
167 - success=false  
168 - AppDelegate.instance().window?.makeToast("获取列表失败:\(error.localizedDescription)")  
169 - })  
170 - }else{  
171 - success=false  
172 - AppDelegate.instance().window?.makeToast("获取列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
173 - }  
174 - }else{  
175 - success=false  
176 - AppDelegate.instance().window?.makeToast("获取列表失败:\(error!.description)")  
177 - }  
178 - completionHandler(success)  
179 - })  
180 - }  
181 - func refreshSchoolList(tag:Int){  
182 - AppDelegate.instance().httpServer.postLiveOrganizeList(type:"All") { (str, error) in  
183 - if error==nil {  
184 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
185 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
186 - self.allSchoolList=OrganizeListSchool.getAllSchool(j: json)  
187 - self.tableViewArray[tag].reloadData()  
188 - }, failHandler: { (error) in  
189 - NSLog("获取学校列表失败:\(error.localizedDescription)")  
190 - })  
191 - }else{  
192 - NSLog("获取学校列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
193 - }  
194 - }else{  
195 - NSLog("获取学校列表失败:\(error!.description)")  
196 - }  
197 - }  
198 - }  
199 - // MARK: - 刷新某个指定的TableView  
200 - func refreshTableView(tag:Int){  
201 - //第一次在这里加载数据  
202 - if tag==2{  
203 - if allSchoolList.count==0{  
204 - refreshSchoolList(tag: tag)  
205 - }  
206 - }else{  
207 - if allLives[tag]?.count==0{  
208 - refreshLivesAction(tag: tag,completionHandler: { (success) in  
209 - if success {  
210 - self.tableViewArray[tag].reloadData()  
211 - }  
212 - })  
213 - }  
214 - }  
215 -  
216 - if refreshButton != nil{  
217 - refreshButton!.setTitleColor(UIColor.black, for: UIControlState.normal)  
218 - refreshButton=menuBtnArray[tag]  
219 - refreshButton!.setTitleColor(Theme.topBarColor(), for: UIControlState.normal)  
220 - }else{  
221 - refreshButton=menuBtnArray[0]  
222 - refreshButton!.setTitleColor(Theme.topBarColor(), for: UIControlState.normal)  
223 - }  
224 - refreshTableView=tableViewArray[tag]  
225 - var frame=refreshTableView.frame  
226 - frame.origin.x=UIScreen.main.bounds.size.width*CGFloat(tag)  
227 - refreshTableView.frame=frame  
228 -// refreshTableView.reloadData()  
229 - }  
230 - func changeView(x:CGFloat){  
231 - let xx=x*(menuButtonWidth/UIScreen.main.bounds.size.width)  
232 - menuBgView.frame=CGRect(x: xx, y: menuBgView.frame.origin.y, width: menuBgView.frame.size.width, height: 5)  
233 - }  
234 - // MARK: - UIScrollViewDelegate  
235 - func scrollViewDidScroll(_ scrollView: UIScrollView) {  
236 - //只要滚动了就会触发  
237 - if !scrollView.isKind(of: UITableView.classForCoder()) {  
238 - changeView(x: scrollView.contentOffset.x)  
239 - }  
240 - }  
241 - func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {  
242 - //减速停止了时执行,手触摸时执行执行  
243 - if !scrollView.isKind(of: UITableView.classForCoder()) {  
244 - let xx=scrollView.contentOffset.x*(menuButtonWidth/UIScreen.main.bounds.size.width)-menuButtonWidth  
245 - menuScrollView.scrollRectToVisible(CGRect(x: xx, y: 0, width: UIScreen.main.bounds.size.width, height: menuScrollView.frame.size.height), animated: true)  
246 - let i=Int(scrollView.contentOffset.x/UIScreen.main.bounds.size.width)  
247 - self.refreshTableView(tag: i)  
248 - }  
249 - }  
250 - var selectLiv:LiveDetail!  
251 - // MARK: - UITableViewDataSource,UITableViewDelegate  
252 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
253 - if tableView.tag==2{  
254 - let item=allSchoolList[indexPath.row]  
255 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LiveTypeListViewController") as! LiveTypeListViewController  
256 - vc.isType=false  
257 - vc.F_OrganizeId=item.f_Id  
258 - vc.title=item.f_FullName  
259 - self.navigationController!.pushViewController(vc, animated: true)  
260 - }else{  
261 - selectLiv=allLives[tableView.tag]![indexPath.row]  
262 - let dic = JSON.fromString(jsonString: selectLiv.f_Description)!  
263 - if dic["Public"].boolValue{  
264 - persentToMoivePlayer(from: self, liv: selectLiv)  
265 - }else{  
266 - passWordView.passWord = dic["roompasswd"].stringValue  
267 - passWordView.zsdView.clearUpPassword()  
268 - passWordView.zsdView.passwordTextField.becomeFirstResponder()  
269 - self.view.addSubview(passWordView)  
270 - }  
271 - }  
272 -  
273 - }  
274 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
275 - if tableView.tag==2{  
276 - return allSchoolList.count  
277 - }  
278 - return allLives[tableView.tag]!.count  
279 - }  
280 - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  
281 - if tableView.tag==2{  
282 - return 80  
283 - }  
284 - return 331  
285 - //return 70+getScreenWidth()/2  
286 - }  
287 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
288 - if tableView.tag==2{  
289 - let cell=tableView.dequeueReusableCell(withIdentifier: "AttentionTableViewCell") as! AttentionTableViewCell  
290 - cell.setupWith(item: allSchoolList[indexPath.row],isMy: false)  
291 - cell.superVC=self  
292 - return cell  
293 - }  
294 - let cell=tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! HomeTableViewCell  
295 - cell.setUpWith(item: allLives[tableView.tag]![indexPath.row])  
296 - return cell  
297 - }  
298 -  
299 - func passwordView(_ password: String!) {  
300 - passWordView.zsdView.passwordTextField.resignFirstResponder()  
301 - persentToMoivePlayer(from: self, liv: selectLiv)  
302 - passWordView.removeFromSuperview()  
303 - }  
304 -  
305 - override func didReceiveMemoryWarning() {  
306 - super.didReceiveMemoryWarning()  
307 - }  
308 -}  
YouerLiveVideo/YouerLiveVideo/controller/HomeViewController.swift
@@ -1,35 +0,0 @@ @@ -1,35 +0,0 @@
1 -//  
2 -// HomeViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/14.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class HomeViewController: UIViewController {  
12 -  
13 - override func viewDidLoad() {  
14 - super.viewDidLoad()  
15 -  
16 - // Do any additional setup after loading the view.  
17 - }  
18 -  
19 - override func didReceiveMemoryWarning() {  
20 - super.didReceiveMemoryWarning()  
21 - // Dispose of any resources that can be recreated.  
22 - }  
23 -  
24 -  
25 - /*  
26 - // MARK: - Navigation  
27 -  
28 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
29 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {  
30 - // Get the new view controller using segue.destinationViewController.  
31 - // Pass the selected object to the new view controller.  
32 - }  
33 - */  
34 -  
35 -}  
YouerLiveVideo/YouerLiveVideo/controller/HotMoreViewController.swift
@@ -1,114 +0,0 @@ @@ -1,114 +0,0 @@
1 -//  
2 -// HotMoreViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/16.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class HotMoreViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,PassWordEnterViewDelegate {  
12 - var hotLives:[LiveDetail]=[]  
13 - var index:Int=0  
14 - @IBOutlet var tableView: UITableView!  
15 - var passWordView:PassWordView!  
16 - override func viewDidLoad() {  
17 - super.viewDidLoad()  
18 - passWordView = Bundle.main.loadNibNamed("PassWordView", owner: nil, options: nil)?[0] as! PassWordView  
19 - passWordView.delegate = self  
20 -  
21 - tableView.register(UINib(nibName: "HomeTableViewCell", bundle: nil), forCellReuseIdentifier: "cell")  
22 - let header=MJRefreshNormalHeader(refreshingBlock: {  
23 - self.index=0  
24 - self.getHotLiveList { (success) in  
25 - self.tableView.mj_header.endRefreshing()  
26 - }  
27 - })  
28 - header?.lastUpdatedTimeLabel.isHidden=true  
29 - tableView.mj_header=header  
30 - tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: {  
31 - self.getHotLiveList { (success) in  
32 - self.tableView.mj_footer.endRefreshing()  
33 - }  
34 - })  
35 - getHotLiveList { (success) in  
36 - }  
37 - }  
38 - func getHotLiveList(completionHandler:@escaping (Bool) -> ()){  
39 - SVProgressHUD.show(withStatus: "加载中...")  
40 - SVProgressHUD.setDefaultMaskType(.black)  
41 - let parameters:Dictionary<String,AnyObject>=["PageIndex":index as AnyObject,"PageSize":10 as AnyObject,"WhatLive":"Hot" as AnyObject]  
42 - AppDelegate.instance().httpServer.getLive(parameters: parameters, completionHandler: { (str, error) in  
43 - var success:Bool=true  
44 - SVProgressHUD.dismiss()  
45 - if error==nil {  
46 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
47 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
48 - success=true  
49 - let hotLive=LiveDetail.getAllLives(j: json)  
50 - if hotLive.count>0{  
51 - self.index+=1  
52 - if self.index==1 {  
53 - self.hotLives=hotLive  
54 - }else{  
55 - self.hotLives+=hotLive  
56 - }  
57 - }  
58 - self.tableView.reloadData()  
59 - }, failHandler: { (error) in  
60 - success=false  
61 - AppDelegate.instance().window?.makeToast("获取列表失败:\(error.localizedDescription)")  
62 - })  
63 - }else{  
64 - success=false  
65 - AppDelegate.instance().window?.makeToast("获取列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
66 - }  
67 - }else{  
68 - success=false  
69 - AppDelegate.instance().window?.makeToast("获取列表失败:\(error!.description)")  
70 - }  
71 - completionHandler(success)  
72 - })  
73 - }  
74 - var selectLiv:LiveDetail!  
75 -  
76 - // MARK: - UITableViewDataSource,UITableViewDelegate  
77 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
78 - selectLiv=hotLives[indexPath.row]  
79 - let dic = JSON.fromString(jsonString: selectLiv.f_Description)!  
80 - if dic["Public"].boolValue{  
81 - persentToMoivePlayer(from: self, liv: selectLiv)  
82 - }else{  
83 -  
84 - passWordView.passWord = dic["roompasswd"].stringValue  
85 - passWordView.zsdView.clearUpPassword()  
86 - passWordView.zsdView.passwordTextField.becomeFirstResponder()  
87 - self.view.addSubview(passWordView)  
88 - }  
89 -  
90 - }  
91 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
92 - return hotLives.count  
93 - }  
94 - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  
95 - // return 70+getScreenWidth()/2  
96 - return 331  
97 - }  
98 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
99 - let cell=tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! HomeTableViewCell  
100 - cell.setUpWith(item: hotLives[indexPath.row])  
101 - return cell  
102 - }  
103 - func passwordView(_ password: String!) {  
104 - passWordView.zsdView.passwordTextField.resignFirstResponder()  
105 - persentToMoivePlayer(from: self, liv: selectLiv)  
106 - passWordView.removeFromSuperview()  
107 - }  
108 -  
109 - override func didReceiveMemoryWarning() {  
110 - super.didReceiveMemoryWarning()  
111 - }  
112 -  
113 -  
114 -}  
YouerLiveVideo/YouerLiveVideo/controller/Live/Live.storyboard
@@ -1,2074 +0,0 @@ @@ -1,2074 +0,0 @@
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">  
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="Aspect ratio constraints" minToolsVersion="5.1"/>  
9 - <capability name="Constraints to layout margins" minToolsVersion="6.0"/>  
10 - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>  
11 - </dependencies>  
12 - <scenes>  
13 - <!--Live Video Setting Share View Controller-->  
14 - <scene sceneID="57o-YB-gBv">  
15 - <objects>  
16 - <viewController storyboardIdentifier="LiveVideoSettingShareViewControllerVC" id="ip0-b5-5EB" customClass="LiveVideoSettingShareViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
17 - <layoutGuides>  
18 - <viewControllerLayoutGuide type="top" id="YzZ-Ac-TmT"/>  
19 - <viewControllerLayoutGuide type="bottom" id="GQ2-99-1ZE"/>  
20 - </layoutGuides>  
21 - <view key="view" contentMode="scaleToFill" id="ovQ-y5-L2e">  
22 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
23 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
24 - <subviews>  
25 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="22I-3U-xYK">  
26 - <rect key="frame" x="0.0" y="20" width="375" height="647"/>  
27 - <color key="backgroundColor" red="0.65098039220000004" green="0.65098039220000004" blue="0.6588235294" alpha="1" colorSpace="calibratedRGB"/>  
28 - </imageView>  
29 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2i8-Kf-r5H">  
30 - <rect key="frame" x="240" y="28" width="119" height="30"/>  
31 - <subviews>  
32 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="botoom_image" translatesAutoresizingMaskIntoConstraints="NO" id="YES-sk-Ulh">  
33 - <rect key="frame" x="95" y="5" width="20" height="20"/>  
34 - <constraints>  
35 - <constraint firstAttribute="width" secondItem="YES-sk-Ulh" secondAttribute="height" multiplier="1:1" id="aQQ-UD-mbM"/>  
36 - <constraint firstAttribute="height" constant="20" id="w8g-ec-Gao"/>  
37 - </constraints>  
38 - </imageView>  
39 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="流畅" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jah-zM-NyA">  
40 - <rect key="frame" x="62.5" y="8" width="25" height="14.5"/>  
41 - <fontDescription key="fontDescription" type="system" pointSize="12"/>  
42 - <nil key="textColor"/>  
43 - <nil key="highlightedColor"/>  
44 - </label>  
45 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="749" text="清晰度:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vk7-Kp-HGt">  
46 - <rect key="frame" x="4" y="6" width="50.5" height="18"/>  
47 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
48 - <nil key="textColor"/>  
49 - <nil key="highlightedColor"/>  
50 - </label>  
51 - </subviews>  
52 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
53 - <gestureRecognizers/>  
54 - <constraints>  
55 - <constraint firstItem="YES-sk-Ulh" firstAttribute="centerY" secondItem="2i8-Kf-r5H" secondAttribute="centerY" id="1a9-gt-bTC"/>  
56 - <constraint firstItem="vk7-Kp-HGt" firstAttribute="centerY" secondItem="2i8-Kf-r5H" secondAttribute="centerY" id="4hQ-gJ-274"/>  
57 - <constraint firstItem="Jah-zM-NyA" firstAttribute="centerY" secondItem="2i8-Kf-r5H" secondAttribute="centerY" id="ONJ-rE-0jx"/>  
58 - <constraint firstItem="Jah-zM-NyA" firstAttribute="leading" secondItem="vk7-Kp-HGt" secondAttribute="trailing" constant="8" id="Qak-zt-6i4"/>  
59 - <constraint firstAttribute="trailing" secondItem="YES-sk-Ulh" secondAttribute="trailing" constant="4" id="R0U-n7-d3b"/>  
60 - <constraint firstItem="YES-sk-Ulh" firstAttribute="leading" secondItem="Jah-zM-NyA" secondAttribute="trailing" constant="8" id="S6h-X5-MSE"/>  
61 - <constraint firstAttribute="height" constant="30" id="fip-q3-x9L"/>  
62 - <constraint firstAttribute="width" constant="119.5" id="wLl-L8-D8c"/>  
63 - <constraint firstItem="vk7-Kp-HGt" firstAttribute="leading" secondItem="2i8-Kf-r5H" secondAttribute="leading" constant="4" id="xuV-5T-rRa"/>  
64 - </constraints>  
65 - <userDefinedRuntimeAttributes>  
66 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
67 - <integer key="value" value="15"/>  
68 - </userDefinedRuntimeAttribute>  
69 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
70 - </userDefinedRuntimeAttributes>  
71 - <connections>  
72 - <outletCollection property="gestureRecognizers" destination="1Bt-vc-c0u" appends="YES" id="jFy-4J-2Ls"/>  
73 - </connections>  
74 - </view>  
75 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iNB-3t-Wom">  
76 - <rect key="frame" x="0.0" y="472" width="375" height="200"/>  
77 - <subviews>  
78 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WmD-yl-11a">  
79 - <rect key="frame" x="138" y="145" width="100" height="40"/>  
80 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
81 - <constraints>  
82 - <constraint firstAttribute="width" constant="100" id="BGA-bM-eZ2"/>  
83 - <constraint firstAttribute="height" constant="40" id="LM3-S3-awv"/>  
84 - </constraints>  
85 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
86 - <state key="normal" title="开始直播">  
87 - <color key="titleColor" red="0.99607843139999996" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>  
88 - </state>  
89 - <userDefinedRuntimeAttributes>  
90 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
91 - <integer key="value" value="5"/>  
92 - </userDefinedRuntimeAttribute>  
93 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
94 - </userDefinedRuntimeAttributes>  
95 - <connections>  
96 - <action selector="startLive:" destination="ip0-b5-5EB" eventType="touchUpInside" id="jsu-XI-PxD"/>  
97 - </connections>  
98 - </button>  
99 - <view tag="100" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QEM-R1-B72">  
100 - <rect key="frame" x="0.0" y="40" width="75" height="77"/>  
101 - <subviews>  
102 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="we_timeline" translatesAutoresizingMaskIntoConstraints="NO" id="2ju-TP-cax">  
103 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
104 - <constraints>  
105 - <constraint firstAttribute="height" constant="35" id="aJd-Uh-GI6"/>  
106 - </constraints>  
107 - <userDefinedRuntimeAttributes>  
108 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
109 - <integer key="value" value="15"/>  
110 - </userDefinedRuntimeAttribute>  
111 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
112 - </userDefinedRuntimeAttributes>  
113 - </imageView>  
114 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="朋友圈" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="D4i-h6-kpc">  
115 - <rect key="frame" x="15" y="51" width="46" height="18"/>  
116 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
117 - <nil key="textColor"/>  
118 - <nil key="highlightedColor"/>  
119 - </label>  
120 - </subviews>  
121 - <gestureRecognizers/>  
122 - <constraints>  
123 - <constraint firstItem="2ju-TP-cax" firstAttribute="centerX" secondItem="QEM-R1-B72" secondAttribute="centerX" id="8oK-r1-RRh"/>  
124 - <constraint firstAttribute="bottom" secondItem="D4i-h6-kpc" secondAttribute="bottom" constant="8" id="8q2-OU-hNj"/>  
125 - <constraint firstItem="2ju-TP-cax" firstAttribute="width" secondItem="2ju-TP-cax" secondAttribute="height" multiplier="1:1" id="9qk-Ox-Ivb"/>  
126 - <constraint firstItem="D4i-h6-kpc" firstAttribute="centerX" secondItem="QEM-R1-B72" secondAttribute="centerX" id="DIQ-xt-1Mu"/>  
127 - <constraint firstItem="2ju-TP-cax" firstAttribute="top" secondItem="QEM-R1-B72" secondAttribute="top" constant="8" id="Mcj-R7-Dl7"/>  
128 - <constraint firstAttribute="height" constant="77" id="jzH-go-9zI"/>  
129 - </constraints>  
130 - <connections>  
131 - <outletCollection property="gestureRecognizers" destination="XUl-Re-1Mg" appends="YES" id="8vV-wN-6md"/>  
132 - </connections>  
133 - </view>  
134 - <view tag="103" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1H6-5k-cyF">  
135 - <rect key="frame" x="225" y="40" width="75" height="77"/>  
136 - <subviews>  
137 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sina" translatesAutoresizingMaskIntoConstraints="NO" id="kj1-kz-BqA">  
138 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
139 - <constraints>  
140 - <constraint firstAttribute="height" constant="35" id="x1F-Ro-evI"/>  
141 - </constraints>  
142 - <userDefinedRuntimeAttributes>  
143 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
144 - <integer key="value" value="15"/>  
145 - </userDefinedRuntimeAttribute>  
146 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
147 - </userDefinedRuntimeAttributes>  
148 - </imageView>  
149 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微博" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pai-sS-dh9">  
150 - <rect key="frame" x="22" y="51" width="31" height="18"/>  
151 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
152 - <nil key="textColor"/>  
153 - <nil key="highlightedColor"/>  
154 - </label>  
155 - </subviews>  
156 - <gestureRecognizers/>  
157 - <constraints>  
158 - <constraint firstItem="kj1-kz-BqA" firstAttribute="centerX" secondItem="1H6-5k-cyF" secondAttribute="centerX" id="3H7-Fh-hXU"/>  
159 - <constraint firstItem="pai-sS-dh9" firstAttribute="centerX" secondItem="1H6-5k-cyF" secondAttribute="centerX" id="76f-uN-gcQ"/>  
160 - <constraint firstItem="kj1-kz-BqA" firstAttribute="width" secondItem="kj1-kz-BqA" secondAttribute="height" multiplier="1:1" id="BqP-6J-daF"/>  
161 - <constraint firstItem="kj1-kz-BqA" firstAttribute="top" secondItem="1H6-5k-cyF" secondAttribute="top" constant="8" id="PmY-RZ-2ph"/>  
162 - <constraint firstAttribute="bottom" secondItem="pai-sS-dh9" secondAttribute="bottom" constant="8" id="gRi-Hy-DAq"/>  
163 - <constraint firstAttribute="height" constant="77" id="gSF-bm-JqK"/>  
164 - </constraints>  
165 - <connections>  
166 - <outletCollection property="gestureRecognizers" destination="hvP-5C-twJ" appends="YES" id="weY-fW-4Jf"/>  
167 - </connections>  
168 - </view>  
169 - <view tag="101" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6dV-3y-bTk">  
170 - <rect key="frame" x="75" y="40" width="75" height="77"/>  
171 - <subviews>  
172 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="we_session" translatesAutoresizingMaskIntoConstraints="NO" id="rXb-rE-jh9">  
173 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
174 - <constraints>  
175 - <constraint firstAttribute="height" constant="35" id="5nw-MX-Hb4"/>  
176 - </constraints>  
177 - <userDefinedRuntimeAttributes>  
178 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
179 - <integer key="value" value="15"/>  
180 - </userDefinedRuntimeAttribute>  
181 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
182 - </userDefinedRuntimeAttributes>  
183 - </imageView>  
184 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微信" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="h0K-4N-xqZ">  
185 - <rect key="frame" x="22" y="51" width="31" height="18"/>  
186 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
187 - <nil key="textColor"/>  
188 - <nil key="highlightedColor"/>  
189 - </label>  
190 - </subviews>  
191 - <gestureRecognizers/>  
192 - <constraints>  
193 - <constraint firstAttribute="bottom" secondItem="h0K-4N-xqZ" secondAttribute="bottom" constant="8" id="0S8-dX-ukf"/>  
194 - <constraint firstItem="rXb-rE-jh9" firstAttribute="top" secondItem="6dV-3y-bTk" secondAttribute="top" constant="8" id="O3o-Zo-u4V"/>  
195 - <constraint firstItem="rXb-rE-jh9" firstAttribute="centerX" secondItem="6dV-3y-bTk" secondAttribute="centerX" id="RLW-3N-chz"/>  
196 - <constraint firstItem="h0K-4N-xqZ" firstAttribute="centerX" secondItem="6dV-3y-bTk" secondAttribute="centerX" id="YvR-bW-Olf"/>  
197 - <constraint firstAttribute="height" constant="77" id="lUD-JF-vNz"/>  
198 - <constraint firstItem="rXb-rE-jh9" firstAttribute="width" secondItem="rXb-rE-jh9" secondAttribute="height" multiplier="1:1" id="nyy-XS-Bjh"/>  
199 - </constraints>  
200 - <connections>  
201 - <outletCollection property="gestureRecognizers" destination="Mg7-3z-rgg" appends="YES" id="Ep6-Xg-XWy"/>  
202 - </connections>  
203 - </view>  
204 - <view tag="104" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8yF-ZZ-mXJ">  
205 - <rect key="frame" x="300" y="40" width="75" height="77"/>  
206 - <subviews>  
207 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="qq" translatesAutoresizingMaskIntoConstraints="NO" id="SjE-Wf-EZp">  
208 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
209 - <constraints>  
210 - <constraint firstAttribute="height" constant="35" id="gKp-6P-Eio"/>  
211 - </constraints>  
212 - <userDefinedRuntimeAttributes>  
213 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
214 - <integer key="value" value="15"/>  
215 - </userDefinedRuntimeAttribute>  
216 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
217 - </userDefinedRuntimeAttributes>  
218 - </imageView>  
219 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QQ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lJw-jZ-kX1">  
220 - <rect key="frame" x="26" y="51" width="23" height="18"/>  
221 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
222 - <nil key="textColor"/>  
223 - <nil key="highlightedColor"/>  
224 - </label>  
225 - </subviews>  
226 - <gestureRecognizers/>  
227 - <constraints>  
228 - <constraint firstAttribute="height" constant="77" id="CTh-FP-jJj"/>  
229 - <constraint firstAttribute="bottom" secondItem="lJw-jZ-kX1" secondAttribute="bottom" constant="8" id="Jrl-21-n2N"/>  
230 - <constraint firstItem="SjE-Wf-EZp" firstAttribute="centerX" secondItem="8yF-ZZ-mXJ" secondAttribute="centerX" id="nJB-zh-VFZ"/>  
231 - <constraint firstItem="SjE-Wf-EZp" firstAttribute="width" secondItem="SjE-Wf-EZp" secondAttribute="height" multiplier="1:1" id="oOM-zP-oqO"/>  
232 - <constraint firstItem="lJw-jZ-kX1" firstAttribute="centerX" secondItem="8yF-ZZ-mXJ" secondAttribute="centerX" id="qRt-n9-WnU"/>  
233 - <constraint firstItem="SjE-Wf-EZp" firstAttribute="top" secondItem="8yF-ZZ-mXJ" secondAttribute="top" constant="8" id="u7X-QM-swR"/>  
234 - </constraints>  
235 - <connections>  
236 - <outletCollection property="gestureRecognizers" destination="BzP-RN-n5z" appends="YES" id="cqi-mz-3EX"/>  
237 - </connections>  
238 - </view>  
239 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="boy-tb-QZb">  
240 - <rect key="frame" x="0.0" y="39" width="375" height="1"/>  
241 - <color key="backgroundColor" red="0.87843137250000003" green="0.87843137250000003" blue="0.87843137250000003" alpha="1" colorSpace="calibratedRGB"/>  
242 - <constraints>  
243 - <constraint firstAttribute="height" constant="1" id="sAq-nX-zQe"/>  
244 - </constraints>  
245 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
246 - <nil key="textColor"/>  
247 - <nil key="highlightedColor"/>  
248 - </label>  
249 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="邀请观看" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J9A-XJ-110">  
250 - <rect key="frame" x="157" y="8" width="62" height="18"/>  
251 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
252 - <nil key="textColor"/>  
253 - <nil key="highlightedColor"/>  
254 - </label>  
255 - <view tag="102" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ps1-Dc-OM3">  
256 - <rect key="frame" x="150" y="40" width="75" height="77"/>  
257 - <subviews>  
258 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="qzone" translatesAutoresizingMaskIntoConstraints="NO" id="zFe-Jv-e9P">  
259 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
260 - <constraints>  
261 - <constraint firstAttribute="height" constant="35" id="04s-Ew-wi1"/>  
262 - </constraints>  
263 - <userDefinedRuntimeAttributes>  
264 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
265 - <integer key="value" value="15"/>  
266 - </userDefinedRuntimeAttribute>  
267 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
268 - </userDefinedRuntimeAttributes>  
269 - </imageView>  
270 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QQ空间" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hoc-PN-xqB">  
271 - <rect key="frame" x="11" y="51" width="54" height="18"/>  
272 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
273 - <nil key="textColor"/>  
274 - <nil key="highlightedColor"/>  
275 - </label>  
276 - </subviews>  
277 - <gestureRecognizers/>  
278 - <constraints>  
279 - <constraint firstItem="zFe-Jv-e9P" firstAttribute="width" secondItem="zFe-Jv-e9P" secondAttribute="height" multiplier="1:1" id="FvU-n2-pQk"/>  
280 - <constraint firstItem="hoc-PN-xqB" firstAttribute="centerX" secondItem="ps1-Dc-OM3" secondAttribute="centerX" id="P4s-6d-Dkb"/>  
281 - <constraint firstItem="zFe-Jv-e9P" firstAttribute="centerX" secondItem="ps1-Dc-OM3" secondAttribute="centerX" id="XWt-0a-OC3"/>  
282 - <constraint firstItem="zFe-Jv-e9P" firstAttribute="top" secondItem="ps1-Dc-OM3" secondAttribute="top" constant="8" id="a8k-md-aIw"/>  
283 - <constraint firstAttribute="height" constant="77" id="b0u-VJ-CGU"/>  
284 - <constraint firstAttribute="bottom" secondItem="hoc-PN-xqB" secondAttribute="bottom" constant="8" id="eNW-Ug-nlg"/>  
285 - </constraints>  
286 - <connections>  
287 - <outletCollection property="gestureRecognizers" destination="fJh-P9-bxZ" appends="YES" id="WDO-iO-2OB"/>  
288 - </connections>  
289 - </view>  
290 - </subviews>  
291 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
292 - <constraints>  
293 - <constraint firstItem="8yF-ZZ-mXJ" firstAttribute="top" secondItem="QEM-R1-B72" secondAttribute="top" id="0OI-TS-Glh"/>  
294 - <constraint firstItem="J9A-XJ-110" firstAttribute="centerX" secondItem="iNB-3t-Wom" secondAttribute="centerX" id="BHa-zp-T9u"/>  
295 - <constraint firstItem="1H6-5k-cyF" firstAttribute="width" secondItem="QEM-R1-B72" secondAttribute="width" id="EHk-2s-OLH"/>  
296 - <constraint firstItem="ps1-Dc-OM3" firstAttribute="leading" secondItem="6dV-3y-bTk" secondAttribute="trailing" id="GEu-QP-f9c"/>  
297 - <constraint firstItem="QEM-R1-B72" firstAttribute="leading" secondItem="iNB-3t-Wom" secondAttribute="leading" id="Gwx-Xr-Qvd"/>  
298 - <constraint firstItem="8yF-ZZ-mXJ" firstAttribute="width" secondItem="QEM-R1-B72" secondAttribute="width" id="H53-Az-RR8"/>  
299 - <constraint firstItem="8yF-ZZ-mXJ" firstAttribute="leading" secondItem="1H6-5k-cyF" secondAttribute="trailing" id="Ih5-dp-PWL"/>  
300 - <constraint firstItem="J9A-XJ-110" firstAttribute="top" secondItem="iNB-3t-Wom" secondAttribute="top" constant="8" id="P5n-Lx-ZWI"/>  
301 - <constraint firstItem="ps1-Dc-OM3" firstAttribute="width" secondItem="QEM-R1-B72" secondAttribute="width" id="WOb-kd-PKF"/>  
302 - <constraint firstItem="WmD-yl-11a" firstAttribute="centerX" secondItem="iNB-3t-Wom" secondAttribute="centerX" id="XaZ-TO-V9B"/>  
303 - <constraint firstItem="boy-tb-QZb" firstAttribute="leading" secondItem="iNB-3t-Wom" secondAttribute="leading" id="ckq-mw-g5Z"/>  
304 - <constraint firstItem="1H6-5k-cyF" firstAttribute="leading" secondItem="ps1-Dc-OM3" secondAttribute="trailing" id="cxL-wY-ePE"/>  
305 - <constraint firstAttribute="trailing" secondItem="boy-tb-QZb" secondAttribute="trailing" id="e9A-TC-FpW"/>  
306 - <constraint firstItem="6dV-3y-bTk" firstAttribute="top" secondItem="QEM-R1-B72" secondAttribute="top" id="hL3-Rj-oBY"/>  
307 - <constraint firstItem="QEM-R1-B72" firstAttribute="top" secondItem="iNB-3t-Wom" secondAttribute="top" constant="40" id="hzz-XG-zp9"/>  
308 - <constraint firstAttribute="bottom" secondItem="WmD-yl-11a" secondAttribute="bottom" constant="15" id="jQ9-b9-EDJ"/>  
309 - <constraint firstAttribute="trailing" secondItem="8yF-ZZ-mXJ" secondAttribute="trailing" id="mYv-fh-WuI"/>  
310 - <constraint firstItem="6dV-3y-bTk" firstAttribute="width" secondItem="QEM-R1-B72" secondAttribute="width" id="nA4-k1-Sob"/>  
311 - <constraint firstItem="boy-tb-QZb" firstAttribute="top" secondItem="iNB-3t-Wom" secondAttribute="top" constant="39" id="sya-bc-bbA"/>  
312 - <constraint firstItem="6dV-3y-bTk" firstAttribute="leading" secondItem="QEM-R1-B72" secondAttribute="trailing" id="tEH-rX-gqE"/>  
313 - <constraint firstAttribute="height" constant="200" id="xCH-yp-JHu"/>  
314 - <constraint firstItem="1H6-5k-cyF" firstAttribute="top" secondItem="QEM-R1-B72" secondAttribute="top" id="xVE-7W-MSS"/>  
315 - <constraint firstItem="ps1-Dc-OM3" firstAttribute="top" secondItem="QEM-R1-B72" secondAttribute="top" id="zPg-fD-L0x"/>  
316 - </constraints>  
317 - <userDefinedRuntimeAttributes>  
318 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
319 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
320 - <integer key="value" value="5"/>  
321 - </userDefinedRuntimeAttribute>  
322 - </userDefinedRuntimeAttributes>  
323 - </view>  
324 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kIg-gD-e3o">  
325 - <rect key="frame" x="367" y="28" width="0.0" height="0.0"/>  
326 - <constraints>  
327 - <constraint firstAttribute="height" id="XJo-OD-6oe"/>  
328 - <constraint firstAttribute="width" secondItem="kIg-gD-e3o" secondAttribute="height" multiplier="1:1" id="gYt-bu-mWD"/>  
329 - </constraints>  
330 - <state key="normal" backgroundImage="竖屏.png"/>  
331 - <userDefinedRuntimeAttributes>  
332 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
333 - <integer key="value" value="15"/>  
334 - </userDefinedRuntimeAttribute>  
335 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
336 - </userDefinedRuntimeAttributes>  
337 - <connections>  
338 - <action selector="isScreenHorizontalBtnClickAction:" destination="ip0-b5-5EB" eventType="touchUpInside" id="qFw-NP-GLs"/>  
339 - </connections>  
340 - </button>  
341 - <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="V2L-Fb-boS">  
342 - <rect key="frame" x="16" y="28" width="94" height="30"/>  
343 - <subviews>  
344 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1EH-O7-P6f">  
345 - <rect key="frame" x="0.0" y="0.0" width="86" height="30"/>  
346 - <subviews>  
347 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="DJ2-Rw-yIA">  
348 - <rect key="frame" x="4" y="1" width="28" height="28"/>  
349 - <constraints>  
350 - <constraint firstAttribute="height" constant="28" id="ajr-Jv-rdQ"/>  
351 - <constraint firstAttribute="width" secondItem="DJ2-Rw-yIA" secondAttribute="height" multiplier="1:1" id="kpH-fM-6CC"/>  
352 - </constraints>  
353 - <userDefinedRuntimeAttributes>  
354 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
355 - <integer key="value" value="15"/>  
356 - </userDefinedRuntimeAttribute>  
357 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
358 - </userDefinedRuntimeAttributes>  
359 - </imageView>  
360 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YMe-JB-eV2">  
361 - <rect key="frame" x="40" y="5" width="42" height="21"/>  
362 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
363 - <nil key="textColor"/>  
364 - <nil key="highlightedColor"/>  
365 - </label>  
366 - </subviews>  
367 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
368 - <constraints>  
369 - <constraint firstItem="YMe-JB-eV2" firstAttribute="centerY" secondItem="1EH-O7-P6f" secondAttribute="centerY" id="6kR-LO-5gE"/>  
370 - <constraint firstItem="YMe-JB-eV2" firstAttribute="leading" secondItem="DJ2-Rw-yIA" secondAttribute="trailing" constant="8" id="J95-TL-8L1"/>  
371 - <constraint firstItem="DJ2-Rw-yIA" firstAttribute="leading" secondItem="1EH-O7-P6f" secondAttribute="leading" constant="4" id="Q8U-YY-IdT"/>  
372 - <constraint firstItem="DJ2-Rw-yIA" firstAttribute="centerY" secondItem="1EH-O7-P6f" secondAttribute="centerY" id="hZA-rb-qOf"/>  
373 - <constraint firstAttribute="height" constant="30" id="mYr-gm-yPj"/>  
374 - <constraint firstAttribute="trailing" secondItem="YMe-JB-eV2" secondAttribute="trailing" constant="4" id="uRO-rX-qIH"/>  
375 - </constraints>  
376 - <userDefinedRuntimeAttributes>  
377 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
378 - <integer key="value" value="15"/>  
379 - </userDefinedRuntimeAttribute>  
380 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
381 - </userDefinedRuntimeAttributes>  
382 - </view>  
383 - </subviews>  
384 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
385 - <constraints>  
386 - <constraint firstItem="1EH-O7-P6f" firstAttribute="top" secondItem="V2L-Fb-boS" secondAttribute="top" id="KG2-JU-VtG"/>  
387 - <constraint firstItem="1EH-O7-P6f" firstAttribute="leading" secondItem="V2L-Fb-boS" secondAttribute="leading" id="Lfa-oQ-T9Z"/>  
388 - <constraint firstAttribute="height" constant="30" id="nfG-pF-I02"/>  
389 - <constraint firstAttribute="bottom" secondItem="1EH-O7-P6f" secondAttribute="bottom" id="qKk-we-bKv"/>  
390 - <constraint firstAttribute="trailing" secondItem="1EH-O7-P6f" secondAttribute="trailing" constant="8" id="xjG-74-wav"/>  
391 - </constraints>  
392 - </view>  
393 - </subviews>  
394 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
395 - <constraints>  
396 - <constraint firstItem="iNB-3t-Wom" firstAttribute="leading" secondItem="ovQ-y5-L2e" secondAttribute="leading" id="8N2-ZZ-o81"/>  
397 - <constraint firstItem="GQ2-99-1ZE" firstAttribute="top" secondItem="22I-3U-xYK" secondAttribute="bottom" id="9u8-PJ-cMy"/>  
398 - <constraint firstItem="V2L-Fb-boS" firstAttribute="leading" secondItem="ovQ-y5-L2e" secondAttribute="leading" constant="16" id="AeS-TF-40m"/>  
399 - <constraint firstItem="GQ2-99-1ZE" firstAttribute="top" secondItem="iNB-3t-Wom" secondAttribute="bottom" constant="-5" id="Cht-KD-qFR"/>  
400 - <constraint firstAttribute="trailing" secondItem="kIg-gD-e3o" secondAttribute="trailing" constant="8" id="I8V-kf-LGb"/>  
401 - <constraint firstItem="2i8-Kf-r5H" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="V2L-Fb-boS" secondAttribute="trailing" constant="8" id="Ima-wC-WxQ"/>  
402 - <constraint firstItem="2i8-Kf-r5H" firstAttribute="top" secondItem="YzZ-Ac-TmT" secondAttribute="bottom" constant="8" id="Jok-lw-LdQ"/>  
403 - <constraint firstItem="22I-3U-xYK" firstAttribute="top" secondItem="YzZ-Ac-TmT" secondAttribute="bottom" id="NF7-d0-UHM"/>  
404 - <constraint firstItem="kIg-gD-e3o" firstAttribute="leading" secondItem="2i8-Kf-r5H" secondAttribute="trailing" constant="8" id="REV-i1-0zi"/>  
405 - <constraint firstAttribute="trailing" secondItem="iNB-3t-Wom" secondAttribute="trailing" id="Rvz-oT-O3j"/>  
406 - <constraint firstItem="V2L-Fb-boS" firstAttribute="top" secondItem="YzZ-Ac-TmT" secondAttribute="bottom" constant="8" id="Uo8-y0-3yF"/>  
407 - <constraint firstItem="22I-3U-xYK" firstAttribute="leading" secondItem="ovQ-y5-L2e" secondAttribute="leading" id="boH-iG-WS6"/>  
408 - <constraint firstAttribute="trailing" secondItem="22I-3U-xYK" secondAttribute="trailing" id="g9l-of-wPE"/>  
409 - <constraint firstItem="kIg-gD-e3o" firstAttribute="top" secondItem="YzZ-Ac-TmT" secondAttribute="bottom" constant="8" id="nmg-Vt-AqQ"/>  
410 - </constraints>  
411 - </view>  
412 - <connections>  
413 - <outlet property="definitionLabel" destination="Jah-zM-NyA" id="LLF-Bf-E8B"/>  
414 - <outlet property="definitionSelectImage" destination="YES-sk-Ulh" id="LZL-PR-Uvi"/>  
415 - <outlet property="isScreenHorizontalBtn" destination="kIg-gD-e3o" id="PV9-Ur-jbs"/>  
416 - <outlet property="roomName" destination="YMe-JB-eV2" id="2oF-2D-fva"/>  
417 - <outlet property="shareView" destination="iNB-3t-Wom" id="dV3-JY-01O"/>  
418 - <outlet property="titleImage" destination="22I-3U-xYK" id="2yV-7f-OWm"/>  
419 - <outlet property="userPhoto" destination="DJ2-Rw-yIA" id="bgV-ri-f6B"/>  
420 - <outlet property="userPhotoHeight" destination="ajr-Jv-rdQ" id="DcD-xD-sKL"/>  
421 - </connections>  
422 - </viewController>  
423 - <placeholder placeholderIdentifier="IBFirstResponder" id="kbh-za-LPZ" userLabel="First Responder" sceneMemberID="firstResponder"/>  
424 - <tapGestureRecognizer id="XUl-Re-1Mg">  
425 - <connections>  
426 - <action selector="shareClickAction:" destination="ip0-b5-5EB" id="ikT-4F-pK4"/>  
427 - </connections>  
428 - </tapGestureRecognizer>  
429 - <tapGestureRecognizer id="Mg7-3z-rgg">  
430 - <connections>  
431 - <action selector="shareClickAction:" destination="ip0-b5-5EB" id="T6s-W0-65b"/>  
432 - </connections>  
433 - </tapGestureRecognizer>  
434 - <tapGestureRecognizer id="fJh-P9-bxZ">  
435 - <connections>  
436 - <action selector="shareClickAction:" destination="ip0-b5-5EB" id="piL-wO-7di"/>  
437 - </connections>  
438 - </tapGestureRecognizer>  
439 - <tapGestureRecognizer id="hvP-5C-twJ">  
440 - <connections>  
441 - <action selector="shareClickAction:" destination="ip0-b5-5EB" id="Apn-IG-SDy"/>  
442 - </connections>  
443 - </tapGestureRecognizer>  
444 - <tapGestureRecognizer id="BzP-RN-n5z">  
445 - <connections>  
446 - <action selector="shareClickAction:" destination="ip0-b5-5EB" id="Je2-uX-w80"/>  
447 - </connections>  
448 - </tapGestureRecognizer>  
449 - <tapGestureRecognizer id="1Bt-vc-c0u">  
450 - <connections>  
451 - <action selector="definitionSelectClickAction:" destination="ip0-b5-5EB" id="R87-TF-qZ4"/>  
452 - </connections>  
453 - </tapGestureRecognizer>  
454 - </objects>  
455 - <point key="canvasLocation" x="274" y="1473"/>  
456 - </scene>  
457 - <!--Delegate-->  
458 - <scene sceneID="Vm7-ho-b91">  
459 - <objects>  
460 - <viewController storyboardIdentifier="MoivePlayerViewControllerVC" id="0QU-Wv-Ra6" customClass="MoivePlayerViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
461 - <layoutGuides>  
462 - <viewControllerLayoutGuide type="top" id="IPe-Sx-T84"/>  
463 - <viewControllerLayoutGuide type="bottom" id="Sc7-qO-bKG"/>  
464 - </layoutGuides>  
465 - <view key="view" contentMode="scaleToFill" id="jQ8-h6-mT6">  
466 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
467 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
468 - <subviews>  
469 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vlE-aQ-nqw" customClass="UIControl">  
470 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
471 - <subviews>  
472 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9Be-Gd-Fuj">  
473 - <rect key="frame" x="0.0" y="417" width="375" height="250"/>  
474 - <subviews>  
475 - <button opaque="NO" tag="1001" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YLJ-d9-hFw">  
476 - <rect key="frame" x="125.5" y="1" width="124" height="30"/>  
477 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
478 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
479 - <state key="normal" title="简介">  
480 - <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>  
481 - </state>  
482 - <connections>  
483 - <action selector="chatBtnClick:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="kaC-Co-Ztn"/>  
484 - </connections>  
485 - </button>  
486 - <button opaque="NO" tag="1000" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="okA-30-DU5">  
487 - <rect key="frame" x="0.0" y="1" width="124.5" height="30"/>  
488 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
489 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
490 - <state key="normal" title="聊天">  
491 - <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>  
492 - </state>  
493 - <connections>  
494 - <action selector="chatBtnClick:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="BNA-6q-ake"/>  
495 - </connections>  
496 - </button>  
497 - <button opaque="NO" tag="1002" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="c0r-SE-LjL">  
498 - <rect key="frame" x="250.5" y="1" width="124.5" height="30"/>  
499 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
500 - <constraints>  
501 - <constraint firstAttribute="height" constant="30" id="hFO-7w-zrN"/>  
502 - </constraints>  
503 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
504 - <state key="normal" title="留言板">  
505 - <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>  
506 - </state>  
507 - <connections>  
508 - <action selector="chatBtnClick:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="MWR-xn-WkN"/>  
509 - </connections>  
510 - </button>  
511 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dtr-lD-40Z">  
512 - <rect key="frame" x="0.0" y="28" width="124.5" height="3"/>  
513 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
514 - <color key="backgroundColor" red="0.98823529409999999" green="0.52941176469999995" blue="0.15686274510000001" alpha="1" colorSpace="calibratedRGB"/>  
515 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
516 - <nil key="textColor"/>  
517 - <nil key="highlightedColor"/>  
518 - </label>  
519 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TTA-ZF-axu" customClass="UIScrollView">  
520 - <rect key="frame" x="0.0" y="32" width="375" height="218"/>  
521 - <subviews>  
522 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SLf-hM-vCC">  
523 - <rect key="frame" x="0.0" y="0.0" width="375" height="218"/>  
524 - <subviews>  
525 - <containerView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ktG-C3-wgR">  
526 - <rect key="frame" x="125" y="0.0" width="125" height="218"/>  
527 - <connections>  
528 - <segue destination="d39-wE-zix" kind="embed" identifier="inforScroll" id="WBr-cP-q1X"/>  
529 - </connections>  
530 - </containerView>  
531 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qrN-55-eYX">  
532 - <rect key="frame" x="250" y="0.0" width="125" height="218"/>  
533 - <subviews>  
534 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="AhT-H8-j9U">  
535 - <rect key="frame" x="0.0" y="0.0" width="125" height="168"/>  
536 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
537 - <prototypes>  
538 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell1" id="WEQ-3V-LrS" customClass="LeaveMessageCell" customModule="YouerLiveVideo" customModuleProvider="target">  
539 - <rect key="frame" x="0.0" y="28" width="125" height="44"/>  
540 - <autoresizingMask key="autoresizingMask"/>  
541 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="WEQ-3V-LrS" id="uhY-FC-Ka2">  
542 - <rect key="frame" x="0.0" y="0.0" width="125" height="44"/>  
543 - <autoresizingMask key="autoresizingMask"/>  
544 - <subviews>  
545 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="eZJ-1K-dWz">  
546 - <rect key="frame" x="8" y="8" width="20" height="20"/>  
547 - <constraints>  
548 - <constraint firstAttribute="width" secondItem="eZJ-1K-dWz" secondAttribute="height" multiplier="1:1" id="0jf-RO-wrQ"/>  
549 - <constraint firstAttribute="height" constant="20" id="Tez-Pw-uQ1"/>  
550 - </constraints>  
551 - </imageView>  
552 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="piu-Qd-7B2">  
553 - <rect key="frame" x="114" y="20" width="3" height="16"/>  
554 - <constraints>  
555 - <constraint firstAttribute="height" constant="16" id="0IU-8z-mCI"/>  
556 - </constraints>  
557 - <fontDescription key="fontDescription" type="system" pointSize="10"/>  
558 - <nil key="textColor"/>  
559 - <nil key="highlightedColor"/>  
560 - </label>  
561 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uss-kQ-tQv">  
562 - <rect key="frame" x="36" y="8" width="81" height="16"/>  
563 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
564 - <nil key="textColor"/>  
565 - <nil key="highlightedColor"/>  
566 - </label>  
567 - </subviews>  
568 - <constraints>  
569 - <constraint firstItem="Uss-kQ-tQv" firstAttribute="leading" secondItem="eZJ-1K-dWz" secondAttribute="trailing" constant="8" id="1Gi-iU-721"/>  
570 - <constraint firstAttribute="trailing" secondItem="piu-Qd-7B2" secondAttribute="trailing" constant="8" id="1jS-W7-MyJ"/>  
571 - <constraint firstAttribute="bottom" secondItem="piu-Qd-7B2" secondAttribute="bottom" constant="8" id="3EC-js-ZAC"/>  
572 - <constraint firstItem="eZJ-1K-dWz" firstAttribute="leading" secondItem="uhY-FC-Ka2" secondAttribute="leading" constant="8" id="7ay-NQ-FFT"/>  
573 - <constraint firstItem="eZJ-1K-dWz" firstAttribute="top" secondItem="uhY-FC-Ka2" secondAttribute="top" constant="8" id="Tzh-Lt-9hR"/>  
574 - <constraint firstItem="Uss-kQ-tQv" firstAttribute="top" secondItem="uhY-FC-Ka2" secondAttribute="top" constant="8" id="i8p-Qt-Xd7"/>  
575 - <constraint firstAttribute="trailing" secondItem="Uss-kQ-tQv" secondAttribute="trailing" constant="8" id="yzm-xt-PVN"/>  
576 - </constraints>  
577 - </tableViewCellContentView>  
578 - <connections>  
579 - <outlet property="context" destination="Uss-kQ-tQv" id="JCA-hc-2Or"/>  
580 - <outlet property="timeLabel" destination="piu-Qd-7B2" id="Ekz-hD-wvZ"/>  
581 - <outlet property="userImage" destination="eZJ-1K-dWz" id="0P7-1w-Id6"/>  
582 - </connections>  
583 - </tableViewCell>  
584 - </prototypes>  
585 - <connections>  
586 - <outlet property="dataSource" destination="0QU-Wv-Ra6" id="d6T-7Z-RrB"/>  
587 - <outlet property="delegate" destination="0QU-Wv-Ra6" id="VQH-1d-KNH"/>  
588 - </connections>  
589 - </tableView>  
590 - </subviews>  
591 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
592 - <constraints>  
593 - <constraint firstAttribute="bottom" secondItem="AhT-H8-j9U" secondAttribute="bottom" constant="50" id="9Db-BF-tho"/>  
594 - <constraint firstAttribute="trailing" secondItem="AhT-H8-j9U" secondAttribute="trailing" id="Owl-Ra-WQA"/>  
595 - <constraint firstItem="AhT-H8-j9U" firstAttribute="top" secondItem="qrN-55-eYX" secondAttribute="top" id="uCO-4f-4gX"/>  
596 - <constraint firstItem="AhT-H8-j9U" firstAttribute="leading" secondItem="qrN-55-eYX" secondAttribute="leading" id="z5U-EZ-UtG"/>  
597 - </constraints>  
598 - </view>  
599 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aS9-E3-mNY">  
600 - <rect key="frame" x="0.0" y="0.0" width="125" height="218"/>  
601 - <subviews>  
602 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" allowsSelection="NO" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="em3-vO-QVJ">  
603 - <rect key="frame" x="0.0" y="0.0" width="125" height="168"/>  
604 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
605 - <prototypes>  
606 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="SHw-lf-hNL" customClass="ChatCell" customModule="YouerLiveVideo" customModuleProvider="target">  
607 - <rect key="frame" x="0.0" y="28" width="125" height="44"/>  
608 - <autoresizingMask key="autoresizingMask"/>  
609 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="SHw-lf-hNL" id="ZUk-qq-aqV">  
610 - <rect key="frame" x="0.0" y="0.0" width="125" height="44"/>  
611 - <autoresizingMask key="autoresizingMask"/>  
612 - <subviews>  
613 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="uwk-2C-Zmg">  
614 - <rect key="frame" x="8" y="8" width="20" height="20"/>  
615 - <constraints>  
616 - <constraint firstAttribute="width" secondItem="uwk-2C-Zmg" secondAttribute="height" multiplier="1:1" id="8Vv-Vm-Srp"/>  
617 - <constraint firstAttribute="height" constant="20" id="m8R-BX-Pb8"/>  
618 - </constraints>  
619 - </imageView>  
620 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="h5b-PW-O92">  
621 - <rect key="frame" x="114" y="20" width="3" height="16"/>  
622 - <constraints>  
623 - <constraint firstAttribute="height" constant="16" id="iQf-Uc-UGG"/>  
624 - </constraints>  
625 - <fontDescription key="fontDescription" type="system" pointSize="10"/>  
626 - <nil key="textColor"/>  
627 - <nil key="highlightedColor"/>  
628 - </label>  
629 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="b8r-Xj-HHR">  
630 - <rect key="frame" x="36" y="8" width="81" height="16"/>  
631 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
632 - <nil key="textColor"/>  
633 - <nil key="highlightedColor"/>  
634 - </label>  
635 - </subviews>  
636 - <constraints>  
637 - <constraint firstItem="b8r-Xj-HHR" firstAttribute="leading" secondItem="uwk-2C-Zmg" secondAttribute="trailing" constant="8" id="2ut-Lj-ZZa"/>  
638 - <constraint firstItem="uwk-2C-Zmg" firstAttribute="top" secondItem="ZUk-qq-aqV" secondAttribute="top" constant="8" id="3L8-57-gDM"/>  
639 - <constraint firstAttribute="trailing" secondItem="h5b-PW-O92" secondAttribute="trailing" constant="8" id="DSH-g9-tkg"/>  
640 - <constraint firstItem="b8r-Xj-HHR" firstAttribute="top" secondItem="ZUk-qq-aqV" secondAttribute="top" constant="8" id="OT0-vg-R0n"/>  
641 - <constraint firstAttribute="bottom" secondItem="h5b-PW-O92" secondAttribute="bottom" constant="8" id="Oix-Kt-0on"/>  
642 - <constraint firstAttribute="trailing" secondItem="b8r-Xj-HHR" secondAttribute="trailing" constant="8" id="Tsy-Me-DIV"/>  
643 - <constraint firstItem="uwk-2C-Zmg" firstAttribute="leading" secondItem="ZUk-qq-aqV" secondAttribute="leading" constant="8" id="w51-QH-s3N"/>  
644 - </constraints>  
645 - </tableViewCellContentView>  
646 - <connections>  
647 - <outlet property="context" destination="b8r-Xj-HHR" id="DDN-ou-V5E"/>  
648 - <outlet property="timeLabel" destination="h5b-PW-O92" id="ZCe-YW-G2b"/>  
649 - <outlet property="userImage" destination="uwk-2C-Zmg" id="VPu-Cz-9vz"/>  
650 - </connections>  
651 - </tableViewCell>  
652 - </prototypes>  
653 - <connections>  
654 - <outlet property="dataSource" destination="0QU-Wv-Ra6" id="caK-Bh-tgU"/>  
655 - <outlet property="delegate" destination="0QU-Wv-Ra6" id="094-Kl-PtD"/>  
656 - </connections>  
657 - </tableView>  
658 - </subviews>  
659 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
660 - <constraints>  
661 - <constraint firstAttribute="bottom" secondItem="em3-vO-QVJ" secondAttribute="bottom" constant="50" id="CjV-lt-XMk"/>  
662 - <constraint firstItem="em3-vO-QVJ" firstAttribute="top" secondItem="aS9-E3-mNY" secondAttribute="top" id="WG8-ZC-wlh"/>  
663 - <constraint firstAttribute="trailing" secondItem="em3-vO-QVJ" secondAttribute="trailing" id="rpY-dI-mwo"/>  
664 - <constraint firstItem="em3-vO-QVJ" firstAttribute="leading" secondItem="aS9-E3-mNY" secondAttribute="leading" id="uvu-GT-osW"/>  
665 - </constraints>  
666 - </view>  
667 - </subviews>  
668 - <constraints>  
669 - <constraint firstAttribute="bottom" secondItem="aS9-E3-mNY" secondAttribute="bottom" id="3Gk-8D-3aj"/>  
670 - <constraint firstAttribute="bottom" secondItem="ktG-C3-wgR" secondAttribute="bottom" id="3iO-Th-6cO"/>  
671 - <constraint firstItem="ktG-C3-wgR" firstAttribute="top" secondItem="SLf-hM-vCC" secondAttribute="top" id="5e0-cn-5CB"/>  
672 - <constraint firstItem="qrN-55-eYX" firstAttribute="leading" secondItem="ktG-C3-wgR" secondAttribute="trailing" id="FTz-qL-gxb"/>  
673 - <constraint firstAttribute="bottom" secondItem="qrN-55-eYX" secondAttribute="bottom" id="HlA-aL-xxq"/>  
674 - <constraint firstAttribute="trailing" secondItem="qrN-55-eYX" secondAttribute="trailing" id="JIZ-gM-fPQ"/>  
675 - <constraint firstItem="ktG-C3-wgR" firstAttribute="leading" secondItem="aS9-E3-mNY" secondAttribute="trailing" id="KQ5-w5-Ll0"/>  
676 - <constraint firstAttribute="width" constant="375" id="NiA-Ck-nKc"/>  
677 - <constraint firstItem="qrN-55-eYX" firstAttribute="width" secondItem="aS9-E3-mNY" secondAttribute="width" id="dWl-AF-yJb"/>  
678 - <constraint firstItem="aS9-E3-mNY" firstAttribute="leading" secondItem="SLf-hM-vCC" secondAttribute="leading" id="gmE-41-dqB"/>  
679 - <constraint firstItem="ktG-C3-wgR" firstAttribute="width" secondItem="aS9-E3-mNY" secondAttribute="width" id="pw4-yS-Hso"/>  
680 - <constraint firstItem="aS9-E3-mNY" firstAttribute="top" secondItem="SLf-hM-vCC" secondAttribute="top" id="zGw-07-oZT"/>  
681 - <constraint firstItem="qrN-55-eYX" firstAttribute="top" secondItem="SLf-hM-vCC" secondAttribute="top" id="zng-nP-zzD"/>  
682 - </constraints>  
683 - </view>  
684 - </subviews>  
685 - <constraints>  
686 - <constraint firstAttribute="bottom" secondItem="SLf-hM-vCC" secondAttribute="bottom" id="Bc5-YD-jUU"/>  
687 - <constraint firstItem="SLf-hM-vCC" firstAttribute="leading" secondItem="TTA-ZF-axu" secondAttribute="leading" id="HDw-dc-HhA"/>  
688 - <constraint firstAttribute="trailing" secondItem="SLf-hM-vCC" secondAttribute="trailing" id="I1W-B4-09J"/>  
689 - <constraint firstItem="SLf-hM-vCC" firstAttribute="top" secondItem="TTA-ZF-axu" secondAttribute="top" id="fLD-Gt-D9S"/>  
690 - <constraint firstItem="SLf-hM-vCC" firstAttribute="centerY" secondItem="TTA-ZF-axu" secondAttribute="centerY" id="zXZ-dE-If9"/>  
691 - </constraints>  
692 - <connections>  
693 - <outlet property="delegate" destination="0QU-Wv-Ra6" id="3m8-nl-IB7"/>  
694 - </connections>  
695 - </view>  
696 - </subviews>  
697 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
698 - <constraints>  
699 - <constraint firstItem="c0r-SE-LjL" firstAttribute="height" secondItem="okA-30-DU5" secondAttribute="height" id="63F-fR-DFa"/>  
700 - <constraint firstItem="c0r-SE-LjL" firstAttribute="top" secondItem="9Be-Gd-Fuj" secondAttribute="top" constant="1" id="B8I-bC-A5a"/>  
701 - <constraint firstItem="c0r-SE-LjL" firstAttribute="width" secondItem="okA-30-DU5" secondAttribute="width" id="HjY-al-IEM"/>  
702 - <constraint firstItem="okA-30-DU5" firstAttribute="top" secondItem="9Be-Gd-Fuj" secondAttribute="top" constant="1" id="Urz-Lo-7e4"/>  
703 - <constraint firstItem="YLJ-d9-hFw" firstAttribute="top" secondItem="9Be-Gd-Fuj" secondAttribute="top" constant="1" id="WfA-bU-1Uc"/>  
704 - <constraint firstItem="c0r-SE-LjL" firstAttribute="leading" secondItem="YLJ-d9-hFw" secondAttribute="trailing" constant="1" id="Xi5-iF-gQf"/>  
705 - <constraint firstItem="okA-30-DU5" firstAttribute="leading" secondItem="9Be-Gd-Fuj" secondAttribute="leading" id="h5T-Hv-H3v"/>  
706 - <constraint firstItem="YLJ-d9-hFw" firstAttribute="leading" secondItem="okA-30-DU5" secondAttribute="trailing" constant="1" id="iMY-Id-XQm"/>  
707 - <constraint firstAttribute="trailing" secondItem="c0r-SE-LjL" secondAttribute="trailing" id="mQo-CS-Ovz"/>  
708 - <constraint firstAttribute="height" constant="250" id="ms0-t8-rcg"/>  
709 - <constraint firstItem="YLJ-d9-hFw" firstAttribute="height" secondItem="okA-30-DU5" secondAttribute="height" id="naS-zV-iLV"/>  
710 - <constraint firstAttribute="bottom" secondItem="TTA-ZF-axu" secondAttribute="bottom" id="nhy-Gi-6WT"/>  
711 - <constraint firstItem="TTA-ZF-axu" firstAttribute="top" secondItem="okA-30-DU5" secondAttribute="bottom" constant="1" id="pkI-rN-ebn"/>  
712 - <constraint firstItem="TTA-ZF-axu" firstAttribute="leading" secondItem="9Be-Gd-Fuj" secondAttribute="leading" id="wGR-nM-XLk"/>  
713 - <constraint firstItem="YLJ-d9-hFw" firstAttribute="width" secondItem="okA-30-DU5" secondAttribute="width" id="xj9-1g-8UF"/>  
714 - <constraint firstAttribute="trailing" secondItem="TTA-ZF-axu" secondAttribute="trailing" id="yw0-8l-FeP"/>  
715 - </constraints>  
716 - </view>  
717 - <button hidden="YES" opaque="NO" tag="205" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sdE-qz-kEZ">  
718 - <rect key="frame" x="337" y="172" width="30" height="30"/>  
719 - <constraints>  
720 - <constraint firstAttribute="height" constant="30" id="jXx-lk-nGN"/>  
721 - <constraint firstAttribute="width" secondItem="sdE-qz-kEZ" secondAttribute="height" multiplier="1:1" id="rIZ-ru-Gxz"/>  
722 - </constraints>  
723 - <state key="normal" backgroundImage="starLive"/>  
724 - <connections>  
725 - <action selector="playPauseClickAction:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="wwE-4h-cZh"/>  
726 - </connections>  
727 - </button>  
728 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Uz7-8G-gQ8">  
729 - <rect key="frame" x="0.0" y="337" width="375" height="80"/>  
730 - <gestureRecognizers/>  
731 - <constraints>  
732 - <constraint firstAttribute="height" constant="80" id="nUb-9K-nd6"/>  
733 - </constraints>  
734 - <connections>  
735 - <outletCollection property="gestureRecognizers" destination="WoY-4r-3yQ" appends="YES" id="vtI-f3-uFb"/>  
736 - </connections>  
737 - </view>  
738 - <button opaque="NO" tag="200" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kHb-AT-GAB">  
739 - <rect key="frame" x="337" y="20" width="30" height="30"/>  
740 - <constraints>  
741 - <constraint firstAttribute="width" secondItem="kHb-AT-GAB" secondAttribute="height" multiplier="1:1" id="Eqk-Rn-qcm"/>  
742 - <constraint firstAttribute="width" constant="30" id="zdR-8o-dnF"/>  
743 - </constraints>  
744 - <state key="normal" backgroundImage="closeAlive"/>  
745 - <connections>  
746 - <action selector="backBtnClickAction:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="pJ0-79-40l"/>  
747 - </connections>  
748 - </button>  
749 - <button opaque="NO" tag="202" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nf4-Rj-fdm">  
750 - <rect key="frame" x="337" y="96" width="30" height="30"/>  
751 - <constraints>  
752 - <constraint firstAttribute="width" secondItem="nf4-Rj-fdm" secondAttribute="height" multiplier="1:1" id="Axh-Oq-rOw"/>  
753 - <constraint firstAttribute="height" constant="30" id="B6L-95-d4z"/>  
754 - </constraints>  
755 - <state key="normal" backgroundImage="subTitle_on"/>  
756 - <connections>  
757 - <action selector="subTitleCloseClickAction:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="5Mz-Ma-rNZ"/>  
758 - </connections>  
759 - </button>  
760 - <button opaque="NO" tag="201" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jfi-VH-N8h">  
761 - <rect key="frame" x="337" y="58" width="30" height="30"/>  
762 - <constraints>  
763 - <constraint firstAttribute="height" constant="30" id="3oq-SH-iws"/>  
764 - <constraint firstAttribute="width" secondItem="jfi-VH-N8h" secondAttribute="height" multiplier="1:1" id="88B-rG-gLz"/>  
765 - </constraints>  
766 - <state key="normal" backgroundImage="screen_full"/>  
767 - <connections>  
768 - <action selector="isHorScreenClickAction:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="D74-9x-3ZX"/>  
769 - </connections>  
770 - </button>  
771 - <view tag="204" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NfY-SF-Dhi">  
772 - <rect key="frame" x="8" y="20" width="91.5" height="50"/>  
773 - <subviews>  
774 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default_userRoom" translatesAutoresizingMaskIntoConstraints="NO" id="BkR-Pl-94U">  
775 - <rect key="frame" x="10" y="5" width="40" height="40"/>  
776 - <constraints>  
777 - <constraint firstAttribute="width" secondItem="BkR-Pl-94U" secondAttribute="height" multiplier="1:1" id="PeB-Aw-5MO"/>  
778 - <constraint firstAttribute="height" constant="40" id="g2Q-su-k0W"/>  
779 - </constraints>  
780 - <userDefinedRuntimeAttributes>  
781 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
782 - <integer key="value" value="20"/>  
783 - </userDefinedRuntimeAttribute>  
784 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
785 - </userDefinedRuntimeAttributes>  
786 - </imageView>  
787 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="观看人数.png" translatesAutoresizingMaskIntoConstraints="NO" id="rH1-CI-l2N">  
788 - <rect key="frame" x="58" y="27" width="20.5" height="15"/>  
789 - <color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
790 - <constraints>  
791 - <constraint firstAttribute="height" constant="15" id="JhQ-Lf-IRN"/>  
792 - <constraint firstAttribute="width" secondItem="rH1-CI-l2N" secondAttribute="height" multiplier="15:11" id="YTt-0b-tiF"/>  
793 - </constraints>  
794 - </imageView>  
795 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dDF-Nn-OsE">  
796 - <rect key="frame" x="58" y="8" width="25.5" height="18"/>  
797 - <constraints>  
798 - <constraint firstAttribute="height" constant="18" id="57H-pb-2xO"/>  
799 - </constraints>  
800 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
801 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
802 - <nil key="highlightedColor"/>  
803 - </label>  
804 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tYh-h6-LqD">  
805 - <rect key="frame" x="80.5" y="30" width="3" height="12"/>  
806 - <fontDescription key="fontDescription" type="system" pointSize="10"/>  
807 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
808 - <nil key="highlightedColor"/>  
809 - </label>  
810 - </subviews>  
811 - <color key="backgroundColor" white="0.0" alpha="0.5" colorSpace="calibratedWhite"/>  
812 - <constraints>  
813 - <constraint firstItem="rH1-CI-l2N" firstAttribute="leading" secondItem="BkR-Pl-94U" secondAttribute="trailing" constant="8" id="0gd-g5-UvT"/>  
814 - <constraint firstAttribute="bottom" secondItem="rH1-CI-l2N" secondAttribute="bottom" constant="8" id="CXT-uW-cyQ"/>  
815 - <constraint firstAttribute="trailing" secondItem="tYh-h6-LqD" secondAttribute="trailing" constant="8" id="JhK-pz-zyH"/>  
816 - <constraint firstAttribute="height" constant="50" id="X8o-2W-jXb"/>  
817 - <constraint firstAttribute="bottom" secondItem="tYh-h6-LqD" secondAttribute="bottom" constant="8" id="ejT-0Q-Ht7"/>  
818 - <constraint firstItem="dDF-Nn-OsE" firstAttribute="leading" secondItem="BkR-Pl-94U" secondAttribute="trailing" constant="8" id="f1a-gD-e1P"/>  
819 - <constraint firstItem="BkR-Pl-94U" firstAttribute="top" secondItem="NfY-SF-Dhi" secondAttribute="top" constant="5" id="f3x-aj-foW"/>  
820 - <constraint firstItem="BkR-Pl-94U" firstAttribute="leading" secondItem="NfY-SF-Dhi" secondAttribute="leading" constant="10" id="lTn-r7-18c"/>  
821 - <constraint firstAttribute="trailing" secondItem="dDF-Nn-OsE" secondAttribute="trailing" constant="8" id="mw8-Ut-ZqE"/>  
822 - <constraint firstItem="dDF-Nn-OsE" firstAttribute="top" secondItem="NfY-SF-Dhi" secondAttribute="top" constant="8" id="rnS-Ur-5MC"/>  
823 - <constraint firstAttribute="bottom" secondItem="BkR-Pl-94U" secondAttribute="bottom" constant="5" id="zZi-ZQ-D4s"/>  
824 - <constraint firstItem="tYh-h6-LqD" firstAttribute="leading" secondItem="rH1-CI-l2N" secondAttribute="trailing" constant="2" id="ziH-iW-YE2"/>  
825 - </constraints>  
826 - <userDefinedRuntimeAttributes>  
827 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
828 - <integer key="value" value="25"/>  
829 - </userDefinedRuntimeAttribute>  
830 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
831 - </userDefinedRuntimeAttributes>  
832 - </view>  
833 - <button opaque="NO" tag="203" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Syn-Gn-nF0">  
834 - <rect key="frame" x="337" y="134" width="30" height="30"/>  
835 - <constraints>  
836 - <constraint firstAttribute="height" constant="30" id="ZVt-7j-Mfh"/>  
837 - <constraint firstAttribute="width" secondItem="Syn-Gn-nF0" secondAttribute="height" multiplier="1:1" id="aSI-mQ-S35"/>  
838 - </constraints>  
839 - <state key="normal" backgroundImage="share"/>  
840 - <connections>  
841 - <action selector="shareBtnClick:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="tOG-EY-DD4"/>  
842 - </connections>  
843 - </button>  
844 - </subviews>  
845 - <constraints>  
846 - <constraint firstItem="9Be-Gd-Fuj" firstAttribute="leading" secondItem="vlE-aQ-nqw" secondAttribute="leading" id="0pK-vi-7d8"/>  
847 - <constraint firstAttribute="trailing" secondItem="kHb-AT-GAB" secondAttribute="trailing" constant="8" id="ANX-eO-2eL"/>  
848 - <constraint firstItem="Uz7-8G-gQ8" firstAttribute="leading" secondItem="vlE-aQ-nqw" secondAttribute="leading" id="AXZ-Pz-cac"/>  
849 - <constraint firstItem="Syn-Gn-nF0" firstAttribute="top" secondItem="nf4-Rj-fdm" secondAttribute="bottom" constant="8" id="E1C-7n-AML"/>  
850 - <constraint firstAttribute="trailing" secondItem="nf4-Rj-fdm" secondAttribute="trailing" constant="8" id="EiO-Wl-Xfy"/>  
851 - <constraint firstAttribute="trailing" secondItem="jfi-VH-N8h" secondAttribute="trailing" constant="8" id="FGF-66-zMk"/>  
852 - <constraint firstItem="9Be-Gd-Fuj" firstAttribute="top" secondItem="Uz7-8G-gQ8" secondAttribute="bottom" id="N7P-6A-NH1"/>  
853 - <constraint firstItem="jfi-VH-N8h" firstAttribute="top" secondItem="kHb-AT-GAB" secondAttribute="bottom" constant="8" id="ND2-S9-P6Q"/>  
854 - <constraint firstItem="kHb-AT-GAB" firstAttribute="top" secondItem="vlE-aQ-nqw" secondAttribute="top" constant="20" id="Yd5-Cs-tAV"/>  
855 - <constraint firstAttribute="trailing" secondItem="9Be-Gd-Fuj" secondAttribute="trailing" id="Z6k-08-24s"/>  
856 - <constraint firstAttribute="trailing" secondItem="jfi-VH-N8h" secondAttribute="trailing" constant="8" id="dev-s9-I8w"/>  
857 - <constraint firstItem="NfY-SF-Dhi" firstAttribute="leading" secondItem="vlE-aQ-nqw" secondAttribute="leading" constant="8" id="gzI-en-wWk"/>  
858 - <constraint firstItem="nf4-Rj-fdm" firstAttribute="top" secondItem="jfi-VH-N8h" secondAttribute="bottom" constant="8" id="kSW-l8-dfO"/>  
859 - <constraint firstAttribute="trailing" secondItem="sdE-qz-kEZ" secondAttribute="trailing" constant="8" id="kca-wi-IOP"/>  
860 - <constraint firstItem="sdE-qz-kEZ" firstAttribute="top" secondItem="Syn-Gn-nF0" secondAttribute="bottom" constant="8" id="msg-8Y-JBQ"/>  
861 - <constraint firstAttribute="trailing" secondItem="Syn-Gn-nF0" secondAttribute="trailing" constant="8" id="o1t-yE-vQW"/>  
862 - <constraint firstItem="NfY-SF-Dhi" firstAttribute="top" secondItem="vlE-aQ-nqw" secondAttribute="top" constant="20" id="sOP-gQ-i9s"/>  
863 - <constraint firstAttribute="trailing" secondItem="Uz7-8G-gQ8" secondAttribute="trailing" id="wz1-UK-PqG"/>  
864 - </constraints>  
865 - <connections>  
866 - <action selector="cancleKeyboaed:" destination="0QU-Wv-Ra6" eventType="touchUpInside" id="33m-Xx-F9w"/>  
867 - </connections>  
868 - </view>  
869 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="P42-ve-BjH">  
870 - <rect key="frame" x="0.0" y="667" width="375" height="120"/>  
871 - <subviews>  
872 - <view tag="300" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="P8Z-Du-6lp">  
873 - <rect key="frame" x="0.0" y="40" width="75" height="77"/>  
874 - <subviews>  
875 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="we_timeline" translatesAutoresizingMaskIntoConstraints="NO" id="lV8-Kg-cMp">  
876 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
877 - <constraints>  
878 - <constraint firstAttribute="height" constant="35" id="rNf-Dl-FUN"/>  
879 - </constraints>  
880 - <userDefinedRuntimeAttributes>  
881 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
882 - <integer key="value" value="15"/>  
883 - </userDefinedRuntimeAttribute>  
884 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
885 - </userDefinedRuntimeAttributes>  
886 - </imageView>  
887 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="朋友圈" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Y2W-eo-rhk">  
888 - <rect key="frame" x="14.5" y="51" width="46" height="18"/>  
889 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
890 - <nil key="textColor"/>  
891 - <nil key="highlightedColor"/>  
892 - </label>  
893 - </subviews>  
894 - <gestureRecognizers/>  
895 - <constraints>  
896 - <constraint firstAttribute="height" constant="77" id="ULF-46-gOa"/>  
897 - <constraint firstAttribute="bottom" secondItem="Y2W-eo-rhk" secondAttribute="bottom" constant="8" id="XZw-VT-oCc"/>  
898 - <constraint firstItem="Y2W-eo-rhk" firstAttribute="centerX" secondItem="P8Z-Du-6lp" secondAttribute="centerX" id="hH8-tJ-Flp"/>  
899 - <constraint firstItem="lV8-Kg-cMp" firstAttribute="width" secondItem="lV8-Kg-cMp" secondAttribute="height" multiplier="1:1" id="kfT-fD-6FV"/>  
900 - <constraint firstItem="lV8-Kg-cMp" firstAttribute="centerX" secondItem="P8Z-Du-6lp" secondAttribute="centerX" id="vl1-tq-iNB"/>  
901 - <constraint firstItem="lV8-Kg-cMp" firstAttribute="top" secondItem="P8Z-Du-6lp" secondAttribute="top" constant="8" id="wkW-cd-30c"/>  
902 - </constraints>  
903 - <connections>  
904 - <outletCollection property="gestureRecognizers" destination="V53-wf-WfU" appends="YES" id="D9B-eQ-LLT"/>  
905 - </connections>  
906 - </view>  
907 - <view tag="303" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kls-GS-2AC">  
908 - <rect key="frame" x="225" y="40" width="75" height="77"/>  
909 - <subviews>  
910 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="sina" translatesAutoresizingMaskIntoConstraints="NO" id="2I9-Cy-eTE">  
911 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
912 - <constraints>  
913 - <constraint firstAttribute="height" constant="35" id="5nb-66-Pr8"/>  
914 - </constraints>  
915 - <userDefinedRuntimeAttributes>  
916 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
917 - <integer key="value" value="15"/>  
918 - </userDefinedRuntimeAttribute>  
919 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
920 - </userDefinedRuntimeAttributes>  
921 - </imageView>  
922 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微博" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="V9C-0j-xbC">  
923 - <rect key="frame" x="22" y="51" width="31" height="18"/>  
924 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
925 - <nil key="textColor"/>  
926 - <nil key="highlightedColor"/>  
927 - </label>  
928 - </subviews>  
929 - <gestureRecognizers/>  
930 - <constraints>  
931 - <constraint firstAttribute="bottom" secondItem="V9C-0j-xbC" secondAttribute="bottom" constant="8" id="Iia-Br-M3i"/>  
932 - <constraint firstItem="2I9-Cy-eTE" firstAttribute="width" secondItem="2I9-Cy-eTE" secondAttribute="height" multiplier="1:1" id="JFN-49-STU"/>  
933 - <constraint firstItem="V9C-0j-xbC" firstAttribute="centerX" secondItem="Kls-GS-2AC" secondAttribute="centerX" id="Pz4-gN-QKa"/>  
934 - <constraint firstItem="2I9-Cy-eTE" firstAttribute="centerX" secondItem="Kls-GS-2AC" secondAttribute="centerX" id="ayJ-Kx-0nA"/>  
935 - <constraint firstAttribute="height" constant="77" id="frw-Ak-zJe"/>  
936 - <constraint firstItem="2I9-Cy-eTE" firstAttribute="top" secondItem="Kls-GS-2AC" secondAttribute="top" constant="8" id="gFN-A6-l5P"/>  
937 - </constraints>  
938 - <connections>  
939 - <outletCollection property="gestureRecognizers" destination="8Af-h0-OQP" appends="YES" id="H7v-w1-2fS"/>  
940 - </connections>  
941 - </view>  
942 - <view tag="301" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zaf-gZ-eAK">  
943 - <rect key="frame" x="75" y="40" width="75" height="77"/>  
944 - <subviews>  
945 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="we_session" translatesAutoresizingMaskIntoConstraints="NO" id="r7p-dv-DSl">  
946 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
947 - <constraints>  
948 - <constraint firstAttribute="height" constant="35" id="tVE-NO-hDx"/>  
949 - </constraints>  
950 - <userDefinedRuntimeAttributes>  
951 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
952 - <integer key="value" value="15"/>  
953 - </userDefinedRuntimeAttribute>  
954 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
955 - </userDefinedRuntimeAttributes>  
956 - </imageView>  
957 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微信" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tHx-eZ-JQe">  
958 - <rect key="frame" x="22" y="51" width="31" height="18"/>  
959 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
960 - <nil key="textColor"/>  
961 - <nil key="highlightedColor"/>  
962 - </label>  
963 - </subviews>  
964 - <gestureRecognizers/>  
965 - <constraints>  
966 - <constraint firstAttribute="bottom" secondItem="tHx-eZ-JQe" secondAttribute="bottom" constant="8" id="6C0-pa-wAh"/>  
967 - <constraint firstItem="tHx-eZ-JQe" firstAttribute="centerX" secondItem="zaf-gZ-eAK" secondAttribute="centerX" id="H5D-eF-qDZ"/>  
968 - <constraint firstItem="r7p-dv-DSl" firstAttribute="centerX" secondItem="zaf-gZ-eAK" secondAttribute="centerX" id="OgI-dX-DWZ"/>  
969 - <constraint firstItem="r7p-dv-DSl" firstAttribute="top" secondItem="zaf-gZ-eAK" secondAttribute="top" constant="8" id="Pvs-V1-NmN"/>  
970 - <constraint firstAttribute="height" constant="77" id="QEe-de-iO8"/>  
971 - <constraint firstItem="r7p-dv-DSl" firstAttribute="width" secondItem="r7p-dv-DSl" secondAttribute="height" multiplier="1:1" id="k0B-79-nNi"/>  
972 - </constraints>  
973 - <connections>  
974 - <outletCollection property="gestureRecognizers" destination="37o-ro-fzU" appends="YES" id="O9Z-Rx-HlO"/>  
975 - </connections>  
976 - </view>  
977 - <view tag="304" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kbX-g6-sux">  
978 - <rect key="frame" x="300" y="40" width="75" height="77"/>  
979 - <subviews>  
980 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="qq" translatesAutoresizingMaskIntoConstraints="NO" id="aRU-3D-39f">  
981 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
982 - <constraints>  
983 - <constraint firstAttribute="height" constant="35" id="dja-IJ-7gl"/>  
984 - </constraints>  
985 - <userDefinedRuntimeAttributes>  
986 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
987 - <integer key="value" value="15"/>  
988 - </userDefinedRuntimeAttribute>  
989 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
990 - </userDefinedRuntimeAttributes>  
991 - </imageView>  
992 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QQ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aEK-CV-C6L">  
993 - <rect key="frame" x="26" y="51" width="23" height="18"/>  
994 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
995 - <nil key="textColor"/>  
996 - <nil key="highlightedColor"/>  
997 - </label>  
998 - </subviews>  
999 - <gestureRecognizers/>  
1000 - <constraints>  
1001 - <constraint firstAttribute="height" constant="77" id="4xk-JQ-U4o"/>  
1002 - <constraint firstItem="aRU-3D-39f" firstAttribute="top" secondItem="kbX-g6-sux" secondAttribute="top" constant="8" id="5os-qX-VcT"/>  
1003 - <constraint firstAttribute="bottom" secondItem="aEK-CV-C6L" secondAttribute="bottom" constant="8" id="6bb-1v-UHf"/>  
1004 - <constraint firstItem="aRU-3D-39f" firstAttribute="width" secondItem="aRU-3D-39f" secondAttribute="height" multiplier="1:1" id="cN8-Yo-Fde"/>  
1005 - <constraint firstItem="aEK-CV-C6L" firstAttribute="centerX" secondItem="kbX-g6-sux" secondAttribute="centerX" id="ieQ-kc-dHS"/>  
1006 - <constraint firstItem="aRU-3D-39f" firstAttribute="centerX" secondItem="kbX-g6-sux" secondAttribute="centerX" id="tCz-a3-imz"/>  
1007 - </constraints>  
1008 - <connections>  
1009 - <outletCollection property="gestureRecognizers" destination="L37-sL-3l2" appends="YES" id="zR2-Ai-yOx"/>  
1010 - </connections>  
1011 - </view>  
1012 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SYF-Sz-SHh">  
1013 - <rect key="frame" x="0.0" y="39" width="375" height="1"/>  
1014 - <color key="backgroundColor" red="0.87843137250000003" green="0.87843137250000003" blue="0.87843137250000003" alpha="1" colorSpace="calibratedRGB"/>  
1015 - <constraints>  
1016 - <constraint firstAttribute="height" constant="1" id="ttr-bE-uj1"/>  
1017 - </constraints>  
1018 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1019 - <nil key="textColor"/>  
1020 - <nil key="highlightedColor"/>  
1021 - </label>  
1022 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="邀请观看" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3gc-Uq-c56">  
1023 - <rect key="frame" x="157" y="8" width="61.5" height="18"/>  
1024 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1025 - <nil key="textColor"/>  
1026 - <nil key="highlightedColor"/>  
1027 - </label>  
1028 - <view tag="302" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IJm-lc-X8k">  
1029 - <rect key="frame" x="150" y="40" width="75" height="77"/>  
1030 - <subviews>  
1031 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="qzone" translatesAutoresizingMaskIntoConstraints="NO" id="yW2-lP-OU8">  
1032 - <rect key="frame" x="20" y="8" width="35" height="35"/>  
1033 - <constraints>  
1034 - <constraint firstAttribute="height" constant="35" id="RoH-R0-j1G"/>  
1035 - </constraints>  
1036 - <userDefinedRuntimeAttributes>  
1037 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
1038 - <integer key="value" value="15"/>  
1039 - </userDefinedRuntimeAttribute>  
1040 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
1041 - </userDefinedRuntimeAttributes>  
1042 - </imageView>  
1043 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QQ空间" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mdb-Oh-zal">  
1044 - <rect key="frame" x="11" y="51" width="53.5" height="18"/>  
1045 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1046 - <nil key="textColor"/>  
1047 - <nil key="highlightedColor"/>  
1048 - </label>  
1049 - </subviews>  
1050 - <gestureRecognizers/>  
1051 - <constraints>  
1052 - <constraint firstItem="yW2-lP-OU8" firstAttribute="centerX" secondItem="IJm-lc-X8k" secondAttribute="centerX" id="36g-hR-6zF"/>  
1053 - <constraint firstItem="yW2-lP-OU8" firstAttribute="top" secondItem="IJm-lc-X8k" secondAttribute="top" constant="8" id="9MM-yq-owT"/>  
1054 - <constraint firstItem="mdb-Oh-zal" firstAttribute="centerX" secondItem="IJm-lc-X8k" secondAttribute="centerX" id="Tfy-zq-3cN"/>  
1055 - <constraint firstItem="yW2-lP-OU8" firstAttribute="width" secondItem="yW2-lP-OU8" secondAttribute="height" multiplier="1:1" id="XrD-Tx-UkY"/>  
1056 - <constraint firstAttribute="height" constant="77" id="dCT-mx-ucb"/>  
1057 - <constraint firstAttribute="bottom" secondItem="mdb-Oh-zal" secondAttribute="bottom" constant="8" id="q2g-h5-kMj"/>  
1058 - </constraints>  
1059 - <connections>  
1060 - <outletCollection property="gestureRecognizers" destination="sx6-py-tDw" appends="YES" id="4Sa-2j-Ctd"/>  
1061 - </connections>  
1062 - </view>  
1063 - </subviews>  
1064 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
1065 - <constraints>  
1066 - <constraint firstItem="IJm-lc-X8k" firstAttribute="top" secondItem="P8Z-Du-6lp" secondAttribute="top" id="7Kh-ka-quA"/>  
1067 - <constraint firstItem="Kls-GS-2AC" firstAttribute="top" secondItem="P8Z-Du-6lp" secondAttribute="top" id="AL3-tw-Lzh"/>  
1068 - <constraint firstItem="zaf-gZ-eAK" firstAttribute="leading" secondItem="P8Z-Du-6lp" secondAttribute="trailing" id="BOf-MU-4PE"/>  
1069 - <constraint firstItem="IJm-lc-X8k" firstAttribute="leading" secondItem="zaf-gZ-eAK" secondAttribute="trailing" id="EuJ-8x-3gr"/>  
1070 - <constraint firstAttribute="trailing" secondItem="kbX-g6-sux" secondAttribute="trailing" id="Kmw-KM-uon"/>  
1071 - <constraint firstAttribute="trailing" secondItem="SYF-Sz-SHh" secondAttribute="trailing" id="Kxx-vM-1Wz"/>  
1072 - <constraint firstAttribute="height" constant="120" id="MeY-Uj-6sd"/>  
1073 - <constraint firstItem="Kls-GS-2AC" firstAttribute="width" secondItem="P8Z-Du-6lp" secondAttribute="width" id="NA1-6P-EUR"/>  
1074 - <constraint firstItem="IJm-lc-X8k" firstAttribute="width" secondItem="P8Z-Du-6lp" secondAttribute="width" id="O4S-db-3qk"/>  
1075 - <constraint firstItem="P8Z-Du-6lp" firstAttribute="leading" secondItem="P42-ve-BjH" secondAttribute="leading" id="QHB-gf-cNj"/>  
1076 - <constraint firstItem="SYF-Sz-SHh" firstAttribute="top" secondItem="P42-ve-BjH" secondAttribute="top" constant="39" id="VhR-wh-Szd"/>  
1077 - <constraint firstItem="kbX-g6-sux" firstAttribute="leading" secondItem="Kls-GS-2AC" secondAttribute="trailing" id="XGg-z1-tmL"/>  
1078 - <constraint firstItem="SYF-Sz-SHh" firstAttribute="leading" secondItem="P42-ve-BjH" secondAttribute="leading" id="baN-Hf-d2U"/>  
1079 - <constraint firstItem="3gc-Uq-c56" firstAttribute="top" secondItem="P42-ve-BjH" secondAttribute="top" constant="8" id="nvs-2P-YtG"/>  
1080 - <constraint firstItem="kbX-g6-sux" firstAttribute="top" secondItem="P8Z-Du-6lp" secondAttribute="top" id="qIM-s0-U7Y"/>  
1081 - <constraint firstItem="Kls-GS-2AC" firstAttribute="leading" secondItem="IJm-lc-X8k" secondAttribute="trailing" id="qsA-R3-h27"/>  
1082 - <constraint firstItem="kbX-g6-sux" firstAttribute="width" secondItem="P8Z-Du-6lp" secondAttribute="width" id="qse-Cf-yaS"/>  
1083 - <constraint firstItem="zaf-gZ-eAK" firstAttribute="width" secondItem="P8Z-Du-6lp" secondAttribute="width" id="rxO-cf-E4V"/>  
1084 - <constraint firstItem="P8Z-Du-6lp" firstAttribute="top" secondItem="P42-ve-BjH" secondAttribute="top" constant="40" id="rxt-tU-x1M"/>  
1085 - <constraint firstItem="zaf-gZ-eAK" firstAttribute="top" secondItem="P8Z-Du-6lp" secondAttribute="top" id="uRo-Mi-RRA"/>  
1086 - <constraint firstItem="3gc-Uq-c56" firstAttribute="centerX" secondItem="P42-ve-BjH" secondAttribute="centerX" id="v04-EX-2HT"/>  
1087 - </constraints>  
1088 - <userDefinedRuntimeAttributes>  
1089 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
1090 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
1091 - <integer key="value" value="5"/>  
1092 - </userDefinedRuntimeAttribute>  
1093 - </userDefinedRuntimeAttributes>  
1094 - </view>  
1095 - </subviews>  
1096 - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>  
1097 - <constraints>  
1098 - <constraint firstItem="Sc7-qO-bKG" firstAttribute="top" secondItem="9Be-Gd-Fuj" secondAttribute="bottom" id="C3k-k6-TWf"/>  
1099 - <constraint firstAttribute="trailing" secondItem="vlE-aQ-nqw" secondAttribute="trailing" id="EsU-Ff-FZJ"/>  
1100 - <constraint firstItem="vlE-aQ-nqw" firstAttribute="top" secondItem="IPe-Sx-T84" secondAttribute="bottom" constant="-20" id="FeO-Wf-YlX"/>  
1101 - <constraint firstAttribute="trailing" secondItem="P42-ve-BjH" secondAttribute="trailing" id="KEI-Ep-k8N"/>  
1102 - <constraint firstItem="Sc7-qO-bKG" firstAttribute="top" secondItem="vlE-aQ-nqw" secondAttribute="bottom" id="caj-uG-734"/>  
1103 - <constraint firstAttribute="bottom" secondItem="P42-ve-BjH" secondAttribute="bottom" constant="-120" id="gO8-va-sf6"/>  
1104 - <constraint firstItem="vlE-aQ-nqw" firstAttribute="leading" secondItem="jQ8-h6-mT6" secondAttribute="leading" id="j2e-kT-2Yl"/>  
1105 - <constraint firstItem="P42-ve-BjH" firstAttribute="leading" secondItem="jQ8-h6-mT6" secondAttribute="leading" id="r9B-i5-sW9"/>  
1106 - </constraints>  
1107 - </view>  
1108 - <connections>  
1109 - <outlet property="activeNum" destination="tYh-h6-LqD" id="PMQ-Sx-wTZ"/>  
1110 - <outlet property="btnFlagLabel" destination="Dtr-lD-40Z" id="JvP-pj-fW3"/>  
1111 - <outlet property="chatLocalView" destination="aS9-E3-mNY" id="Yiw-ul-dFx"/>  
1112 - <outlet property="chatTableView" destination="em3-vO-QVJ" id="lWz-gP-Lz9"/>  
1113 - <outlet property="leaveMessageLocalView" destination="qrN-55-eYX" id="Jkt-yZ-KvS"/>  
1114 - <outlet property="leaveMessageTableView" destination="AhT-H8-j9U" id="F2J-Z5-ZNq"/>  
1115 - <outlet property="screenHorizontalBtn" destination="jfi-VH-N8h" id="PUB-jO-5a2"/>  
1116 - <outlet property="scrollBottom" destination="C3k-k6-TWf" id="b8K-kA-0Ty"/>  
1117 - <outlet property="scrollHeight" destination="ms0-t8-rcg" id="J2J-av-sVV"/>  
1118 - <outlet property="scrollView" destination="TTA-ZF-axu" id="bqb-bA-aOf"/>  
1119 - <outlet property="scrollViewContanctWidth" destination="NiA-Ck-nKc" id="Bh6-yW-KgM"/>  
1120 - <outlet property="scrollviewLocalView" destination="9Be-Gd-Fuj" id="BSl-dy-sym"/>  
1121 - <outlet property="shareView" destination="P42-ve-BjH" id="wJG-XT-3PT"/>  
1122 - <outlet property="shareViewBottom" destination="gO8-va-sf6" id="h3e-PX-bjx"/>  
1123 - <outlet property="sunTitleView" destination="Uz7-8G-gQ8" id="98M-Eo-213"/>  
1124 - <outlet property="userImage" destination="BkR-Pl-94U" id="heL-L9-ubf"/>  
1125 - <outlet property="userName" destination="dDF-Nn-OsE" id="ToB-NH-mSf"/>  
1126 - </connections>  
1127 - </viewController>  
1128 - <placeholder placeholderIdentifier="IBFirstResponder" id="Hxh-f6-OLQ" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1129 - <tapGestureRecognizer id="V53-wf-WfU">  
1130 - <connections>  
1131 - <action selector="shareTapGestrueClick:" destination="0QU-Wv-Ra6" id="rru-Mf-loz"/>  
1132 - </connections>  
1133 - </tapGestureRecognizer>  
1134 - <tapGestureRecognizer id="8Af-h0-OQP">  
1135 - <connections>  
1136 - <action selector="shareTapGestrueClick:" destination="0QU-Wv-Ra6" id="sze-8S-jdv"/>  
1137 - </connections>  
1138 - </tapGestureRecognizer>  
1139 - <tapGestureRecognizer id="37o-ro-fzU">  
1140 - <connections>  
1141 - <action selector="shareTapGestrueClick:" destination="0QU-Wv-Ra6" id="qqe-wI-PUF"/>  
1142 - </connections>  
1143 - </tapGestureRecognizer>  
1144 - <tapGestureRecognizer id="L37-sL-3l2">  
1145 - <connections>  
1146 - <action selector="shareTapGestrueClick:" destination="0QU-Wv-Ra6" id="Kei-Nk-GjP"/>  
1147 - </connections>  
1148 - </tapGestureRecognizer>  
1149 - <tapGestureRecognizer id="sx6-py-tDw">  
1150 - <connections>  
1151 - <action selector="shareTapGestrueClick:" destination="0QU-Wv-Ra6" id="7Nl-7C-KfI"/>  
1152 - </connections>  
1153 - </tapGestureRecognizer>  
1154 - <tapGestureRecognizer id="WoY-4r-3yQ">  
1155 - <connections>  
1156 - <action selector="subTitleTapClickAction:" destination="0QU-Wv-Ra6" id="dU5-pW-kSi"/>  
1157 - </connections>  
1158 - </tapGestureRecognizer>  
1159 - </objects>  
1160 - <point key="canvasLocation" x="1349.5999999999999" y="1504.4977511244379"/>  
1161 - </scene>  
1162 - <!--Alivc Infor View Controller-->  
1163 - <scene sceneID="8dY-Ix-NGM">  
1164 - <objects>  
1165 - <viewController storyboardIdentifier="AlivcInforViewControllerVC" id="d39-wE-zix" customClass="AlivcInforViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1166 - <layoutGuides>  
1167 - <viewControllerLayoutGuide type="top" id="ANo-ib-gS2"/>  
1168 - <viewControllerLayoutGuide type="bottom" id="H6L-Wb-VqY"/>  
1169 - </layoutGuides>  
1170 - <view key="view" contentMode="scaleToFill" id="3ny-ok-AEL">  
1171 - <rect key="frame" x="0.0" y="0.0" width="125" height="218"/>  
1172 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1173 - <subviews>  
1174 - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9tF-yR-T0z">  
1175 - <rect key="frame" x="0.0" y="0.0" width="125" height="218"/>  
1176 - <subviews>  
1177 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="acR-7M-ILC">  
1178 - <rect key="frame" x="0.0" y="0.0" width="125" height="312"/>  
1179 - <subviews>  
1180 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="1NM-LN-fWg">  
1181 - <rect key="frame" x="20" y="8" width="60" height="60"/>  
1182 - <constraints>  
1183 - <constraint firstAttribute="height" constant="60" id="9US-OA-A67"/>  
1184 - <constraint firstAttribute="width" secondItem="1NM-LN-fWg" secondAttribute="height" multiplier="1:1" id="ocs-HW-oU7"/>  
1185 - </constraints>  
1186 - </imageView>  
1187 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cxc-E8-kWY">  
1188 - <rect key="frame" x="88" y="18" width="33" height="18"/>  
1189 - <constraints>  
1190 - <constraint firstAttribute="height" constant="18" id="mWJ-Qv-hNu"/>  
1191 - </constraints>  
1192 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
1193 - <nil key="textColor"/>  
1194 - <nil key="highlightedColor"/>  
1195 - </label>  
1196 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8A5-RI-xgo">  
1197 - <rect key="frame" x="88" y="44" width="33" height="16"/>  
1198 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
1199 - <nil key="textColor"/>  
1200 - <nil key="highlightedColor"/>  
1201 - </label>  
1202 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5QO-FW-pOX">  
1203 - <rect key="frame" x="0.0" y="76" width="125" height="1"/>  
1204 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
1205 - <constraints>  
1206 - <constraint firstAttribute="height" constant="1" id="gmr-cH-6Zj"/>  
1207 - </constraints>  
1208 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1209 - <nil key="textColor"/>  
1210 - <nil key="highlightedColor"/>  
1211 - </label>  
1212 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tSC-tg-wCr">  
1213 - <rect key="frame" x="20" y="114" width="33" height="16"/>  
1214 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
1215 - <nil key="textColor"/>  
1216 - <nil key="highlightedColor"/>  
1217 - </label>  
1218 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="is0-wi-nUw">  
1219 - <rect key="frame" x="0.0" y="138" width="125" height="1"/>  
1220 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
1221 - <constraints>  
1222 - <constraint firstAttribute="height" constant="1" id="CND-Gu-2G2"/>  
1223 - </constraints>  
1224 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1225 - <nil key="textColor"/>  
1226 - <nil key="highlightedColor"/>  
1227 - </label>  
1228 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3sO-SO-H07">  
1229 - <rect key="frame" x="55" y="25.5" width="50" height="25"/>  
1230 - <color key="backgroundColor" red="0.98823529409999999" green="0.52941176469999995" blue="0.15686274510000001" alpha="1" colorSpace="calibratedRGB"/>  
1231 - <constraints>  
1232 - <constraint firstAttribute="width" constant="50" id="RwC-Vd-fEz"/>  
1233 - <constraint firstAttribute="height" constant="25" id="bAi-Ox-3bw"/>  
1234 - </constraints>  
1235 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
1236 - <state key="normal" title="+ 关注">  
1237 - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1238 - </state>  
1239 - <connections>  
1240 - <action selector="isActionClick:" destination="d39-wE-zix" eventType="touchUpInside" id="rp7-rb-TEC"/>  
1241 - </connections>  
1242 - </button>  
1243 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wQt-RG-nUJ">  
1244 - <rect key="frame" x="20" y="85" width="61.5" height="21"/>  
1245 - <subviews>  
1246 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播公告" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J5Z-8U-lnf">  
1247 - <rect key="frame" x="8" y="0.0" width="53.5" height="21"/>  
1248 - <color key="backgroundColor" red="0.98823529409999999" green="0.52941176469999995" blue="0.15686274510000001" alpha="1" colorSpace="calibratedRGB"/>  
1249 - <constraints>  
1250 - <constraint firstAttribute="height" constant="21" id="Aqc-vP-MMK"/>  
1251 - </constraints>  
1252 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
1253 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1254 - <nil key="highlightedColor"/>  
1255 - </label>  
1256 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZZf-pb-xEO">  
1257 - <rect key="frame" x="0.0" y="0.0" width="4" height="21"/>  
1258 - <color key="backgroundColor" red="0.98823529409999999" green="0.52941176469999995" blue="0.15686274510000001" alpha="1" colorSpace="calibratedRGB"/>  
1259 - <constraints>  
1260 - <constraint firstAttribute="width" constant="4" id="BB6-LA-gHy"/>  
1261 - </constraints>  
1262 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1263 - <nil key="textColor"/>  
1264 - <nil key="highlightedColor"/>  
1265 - </label>  
1266 - </subviews>  
1267 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1268 - <constraints>  
1269 - <constraint firstItem="ZZf-pb-xEO" firstAttribute="top" secondItem="wQt-RG-nUJ" secondAttribute="top" id="1eL-Je-eN5"/>  
1270 - <constraint firstItem="ZZf-pb-xEO" firstAttribute="leading" secondItem="wQt-RG-nUJ" secondAttribute="leading" id="8Ix-Z1-0yT"/>  
1271 - <constraint firstAttribute="bottom" secondItem="ZZf-pb-xEO" secondAttribute="bottom" id="HzU-Ls-hUK"/>  
1272 - <constraint firstAttribute="bottom" secondItem="J5Z-8U-lnf" secondAttribute="bottom" id="Oj3-DH-tr5"/>  
1273 - <constraint firstAttribute="height" constant="21" id="TRS-6z-BKV"/>  
1274 - <constraint firstItem="J5Z-8U-lnf" firstAttribute="leading" secondItem="ZZf-pb-xEO" secondAttribute="trailing" constant="4" id="XCh-tb-nqB"/>  
1275 - <constraint firstItem="J5Z-8U-lnf" firstAttribute="top" secondItem="wQt-RG-nUJ" secondAttribute="top" id="kfd-pr-KWg"/>  
1276 - <constraint firstItem="ZZf-pb-xEO" firstAttribute="leading" secondItem="wQt-RG-nUJ" secondAttribute="leading" id="smB-hM-RwJ"/>  
1277 - <constraint firstAttribute="trailing" secondItem="J5Z-8U-lnf" secondAttribute="trailing" id="vPT-G5-VxT"/>  
1278 - </constraints>  
1279 - </view>  
1280 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1n3-wj-Hjr">  
1281 - <rect key="frame" x="20" y="147" width="61.5" height="21"/>  
1282 - <subviews>  
1283 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播附件" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3jz-Au-RMs">  
1284 - <rect key="frame" x="8" y="0.0" width="53.5" height="21"/>  
1285 - <color key="backgroundColor" red="0.98823529409999999" green="0.52941176469999995" blue="0.15686274510000001" alpha="1" colorSpace="calibratedRGB"/>  
1286 - <constraints>  
1287 - <constraint firstAttribute="height" constant="21" id="0pH-N0-51H"/>  
1288 - </constraints>  
1289 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
1290 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1291 - <nil key="highlightedColor"/>  
1292 - </label>  
1293 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MDr-ci-fWg">  
1294 - <rect key="frame" x="0.0" y="0.0" width="4" height="21"/>  
1295 - <color key="backgroundColor" red="0.98823529409999999" green="0.52941176469999995" blue="0.15686274510000001" alpha="1" colorSpace="calibratedRGB"/>  
1296 - <constraints>  
1297 - <constraint firstAttribute="width" constant="4" id="hIu-GW-QtX"/>  
1298 - </constraints>  
1299 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1300 - <nil key="textColor"/>  
1301 - <nil key="highlightedColor"/>  
1302 - </label>  
1303 - </subviews>  
1304 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1305 - <constraints>  
1306 - <constraint firstItem="MDr-ci-fWg" firstAttribute="leading" secondItem="1n3-wj-Hjr" secondAttribute="leading" id="5IP-Jd-its"/>  
1307 - <constraint firstAttribute="height" constant="21" id="5cj-bR-93Q"/>  
1308 - <constraint firstItem="MDr-ci-fWg" firstAttribute="top" secondItem="1n3-wj-Hjr" secondAttribute="top" id="8uj-Fv-XSV"/>  
1309 - <constraint firstAttribute="trailing" secondItem="3jz-Au-RMs" secondAttribute="trailing" id="90Q-DD-Vm2"/>  
1310 - <constraint firstAttribute="bottom" secondItem="MDr-ci-fWg" secondAttribute="bottom" id="Nsh-pq-P33"/>  
1311 - <constraint firstAttribute="bottom" secondItem="3jz-Au-RMs" secondAttribute="bottom" id="apx-0o-E1m"/>  
1312 - <constraint firstItem="3jz-Au-RMs" firstAttribute="top" secondItem="1n3-wj-Hjr" secondAttribute="top" id="bIl-qY-ARO"/>  
1313 - <constraint firstItem="3jz-Au-RMs" firstAttribute="leading" secondItem="MDr-ci-fWg" secondAttribute="trailing" constant="4" id="dS6-qV-9S5"/>  
1314 - <constraint firstItem="MDr-ci-fWg" firstAttribute="leading" secondItem="1n3-wj-Hjr" secondAttribute="leading" id="liZ-8A-8bC"/>  
1315 - </constraints>  
1316 - </view>  
1317 - </subviews>  
1318 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1319 - <constraints>  
1320 - <constraint firstItem="8A5-RI-xgo" firstAttribute="top" secondItem="cxc-E8-kWY" secondAttribute="bottom" constant="8" id="024-JR-nKJ"/>  
1321 - <constraint firstItem="cxc-E8-kWY" firstAttribute="leading" secondItem="1NM-LN-fWg" secondAttribute="trailing" constant="8" id="47H-Tu-Bk9"/>  
1322 - <constraint firstItem="tSC-tg-wCr" firstAttribute="top" secondItem="wQt-RG-nUJ" secondAttribute="bottom" constant="8" id="7M3-I2-gi6"/>  
1323 - <constraint firstItem="1n3-wj-Hjr" firstAttribute="top" secondItem="is0-wi-nUw" secondAttribute="bottom" constant="8" id="FaI-IT-z0e"/>  
1324 - <constraint firstItem="wQt-RG-nUJ" firstAttribute="top" secondItem="5QO-FW-pOX" secondAttribute="bottom" constant="8" id="IAJ-dm-qGk"/>  
1325 - <constraint firstAttribute="trailing" secondItem="3sO-SO-H07" secondAttribute="trailing" constant="20" id="LHo-GJ-rUu"/>  
1326 - <constraint firstItem="5QO-FW-pOX" firstAttribute="top" secondItem="1NM-LN-fWg" secondAttribute="bottom" constant="8" id="PSA-Dg-3f6"/>  
1327 - <constraint firstAttribute="trailing" secondItem="is0-wi-nUw" secondAttribute="trailing" id="Pq6-fp-4wx"/>  
1328 - <constraint firstItem="is0-wi-nUw" firstAttribute="top" secondItem="tSC-tg-wCr" secondAttribute="bottom" constant="8" id="Vtn-HM-cn8"/>  
1329 - <constraint firstItem="1n3-wj-Hjr" firstAttribute="leading" secondItem="acR-7M-ILC" secondAttribute="leading" constant="20" id="fXd-KC-afc"/>  
1330 - <constraint firstItem="8A5-RI-xgo" firstAttribute="leading" secondItem="1NM-LN-fWg" secondAttribute="trailing" constant="8" id="fse-aL-lnU"/>  
1331 - <constraint firstItem="3sO-SO-H07" firstAttribute="centerY" secondItem="1NM-LN-fWg" secondAttribute="centerY" id="gsC-zK-vzf"/>  
1332 - <constraint firstItem="wQt-RG-nUJ" firstAttribute="leading" secondItem="acR-7M-ILC" secondAttribute="leading" constant="20" id="ht1-nT-D68"/>  
1333 - <constraint firstItem="1NM-LN-fWg" firstAttribute="top" secondItem="acR-7M-ILC" secondAttribute="top" constant="8" id="k2b-Xm-5Q8"/>  
1334 - <constraint firstItem="tSC-tg-wCr" firstAttribute="leading" secondItem="acR-7M-ILC" secondAttribute="leading" constant="20" id="kaM-mK-aFO"/>  
1335 - <constraint firstItem="is0-wi-nUw" firstAttribute="leading" secondItem="acR-7M-ILC" secondAttribute="leading" id="l6u-Vv-0hx"/>  
1336 - <constraint firstItem="5QO-FW-pOX" firstAttribute="leading" secondItem="acR-7M-ILC" secondAttribute="leading" id="pEX-Xm-k5Y"/>  
1337 - <constraint firstAttribute="trailing" secondItem="5QO-FW-pOX" secondAttribute="trailing" id="t3b-oF-nOK"/>  
1338 - <constraint firstAttribute="height" constant="312" id="uYt-2B-tKs"/>  
1339 - <constraint firstItem="1NM-LN-fWg" firstAttribute="leading" secondItem="acR-7M-ILC" secondAttribute="leading" constant="20" id="uf3-LY-GTB"/>  
1340 - <constraint firstItem="cxc-E8-kWY" firstAttribute="top" secondItem="acR-7M-ILC" secondAttribute="top" constant="18" id="wGV-Tn-i9G"/>  
1341 - </constraints>  
1342 - </view>  
1343 - </subviews>  
1344 - <constraints>  
1345 - <constraint firstAttribute="trailing" secondItem="acR-7M-ILC" secondAttribute="trailing" id="3CR-HA-AAl"/>  
1346 - <constraint firstItem="acR-7M-ILC" firstAttribute="top" secondItem="9tF-yR-T0z" secondAttribute="top" id="Fvq-y2-oIL"/>  
1347 - <constraint firstItem="acR-7M-ILC" firstAttribute="leading" secondItem="9tF-yR-T0z" secondAttribute="leading" id="cpr-2b-3sD"/>  
1348 - <constraint firstItem="acR-7M-ILC" firstAttribute="centerX" secondItem="9tF-yR-T0z" secondAttribute="centerX" id="fEp-P4-8si"/>  
1349 - <constraint firstAttribute="bottom" secondItem="acR-7M-ILC" secondAttribute="bottom" id="r0j-qD-6U3"/>  
1350 - </constraints>  
1351 - </scrollView>  
1352 - </subviews>  
1353 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1354 - <constraints>  
1355 - <constraint firstAttribute="bottom" secondItem="9tF-yR-T0z" secondAttribute="bottom" id="0Dj-jG-e9m"/>  
1356 - <constraint firstAttribute="trailing" secondItem="9tF-yR-T0z" secondAttribute="trailing" id="9l6-NM-7tO"/>  
1357 - <constraint firstItem="9tF-yR-T0z" firstAttribute="leading" secondItem="3ny-ok-AEL" secondAttribute="leading" id="gG2-qc-eQd"/>  
1358 - <constraint firstItem="9tF-yR-T0z" firstAttribute="top" secondItem="3ny-ok-AEL" secondAttribute="top" id="thi-nI-3Pb"/>  
1359 - </constraints>  
1360 - </view>  
1361 - <connections>  
1362 - <outlet property="alivcAccessories" destination="1n3-wj-Hjr" id="feB-3F-0Xp"/>  
1363 - <outlet property="alivcInfor" destination="tSC-tg-wCr" id="SQC-j1-W52"/>  
1364 - <outlet property="contentView" destination="acR-7M-ILC" id="1xq-Ry-qgx"/>  
1365 - <outlet property="contentheight" destination="uYt-2B-tKs" id="Cb2-5p-14A"/>  
1366 - <outlet property="fileLine" destination="is0-wi-nUw" id="q2L-kl-LGU"/>  
1367 - <outlet property="image" destination="1NM-LN-fWg" id="thF-27-7aO"/>  
1368 - <outlet property="nickName" destination="cxc-E8-kWY" id="G7p-7S-2lC"/>  
1369 - <outlet property="remainBtn" destination="3sO-SO-H07" id="IyD-lt-Lzk"/>  
1370 - <outlet property="scrollView" destination="9tF-yR-T0z" id="1Lr-Ne-Eb4"/>  
1371 - <outlet property="userNum" destination="8A5-RI-xgo" id="lWE-HN-8B4"/>  
1372 - </connections>  
1373 - </viewController>  
1374 - <placeholder placeholderIdentifier="IBFirstResponder" id="c2P-49-2wz" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1375 - </objects>  
1376 - <point key="canvasLocation" x="2124" y="1552.6236881559221"/>  
1377 - </scene>  
1378 - <!--Title-->  
1379 - <scene sceneID="8qw-Kh-TAE">  
1380 - <objects>  
1381 - <viewController storyboardIdentifier="LiveVideoSettingViewControllerVC" id="jwk-18-f3u" customClass="LiveVideoSettingViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1382 - <layoutGuides>  
1383 - <viewControllerLayoutGuide type="top" id="ttP-R4-29X"/>  
1384 - <viewControllerLayoutGuide type="bottom" id="aD6-6d-DV6"/>  
1385 - </layoutGuides>  
1386 - <view key="view" contentMode="scaleToFill" id="rK8-pU-53K">  
1387 - <rect key="frame" x="0.0" y="0.0" width="375" height="936"/>  
1388 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
1389 - <subviews>  
1390 - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="goU-wr-35O">  
1391 - <rect key="frame" x="0.0" y="0.0" width="375" height="936"/>  
1392 - <subviews>  
1393 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lNX-yU-h0E">  
1394 - <rect key="frame" x="0.0" y="0.0" width="375" height="872"/>  
1395 - <subviews>  
1396 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ojc-oe-kTU">  
1397 - <rect key="frame" x="0.0" y="0.0" width="375" height="142"/>  
1398 - <subviews>  
1399 - <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default" translatesAutoresizingMaskIntoConstraints="NO" id="b1d-Mx-K15">  
1400 - <rect key="frame" x="0.0" y="0.0" width="375" height="141"/>  
1401 - </imageView>  
1402 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hgJ-Y4-7fb">  
1403 - <rect key="frame" x="0.0" y="141" width="375" height="1"/>  
1404 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1405 - <constraints>  
1406 - <constraint firstAttribute="height" constant="1" id="1z3-NU-Z1H"/>  
1407 - </constraints>  
1408 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1409 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1410 - <nil key="highlightedColor"/>  
1411 - </label>  
1412 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="点击上传直播封面" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jpj-0w-YcL">  
1413 - <rect key="frame" x="8" y="104" width="359" height="17"/>  
1414 - <fontDescription key="fontDescription" type="system" pointSize="14"/>  
1415 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1416 - <nil key="highlightedColor"/>  
1417 - </label>  
1418 - <imageView contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="上传封面.png" translatesAutoresizingMaskIntoConstraints="NO" id="1TQ-Zo-YPJ">  
1419 - <rect key="frame" x="162.5" y="33" width="50" height="50"/>  
1420 - <gestureRecognizers/>  
1421 - <constraints>  
1422 - <constraint firstAttribute="height" constant="50" id="1ft-Qj-Fo0"/>  
1423 - <constraint firstAttribute="width" constant="50" id="2nB-Xa-LbO"/>  
1424 - </constraints>  
1425 - <connections>  
1426 - <outletCollection property="gestureRecognizers" destination="Sss-jf-R1T" appends="YES" id="eMw-aB-QEk"/>  
1427 - </connections>  
1428 - </imageView>  
1429 - </subviews>  
1430 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1431 - <constraints>  
1432 - <constraint firstItem="hgJ-Y4-7fb" firstAttribute="leading" secondItem="Ojc-oe-kTU" secondAttribute="leading" id="02Q-LE-zvO"/>  
1433 - <constraint firstAttribute="bottom" secondItem="hgJ-Y4-7fb" secondAttribute="bottom" id="5HY-Jd-e0R"/>  
1434 - <constraint firstItem="Jpj-0w-YcL" firstAttribute="top" secondItem="1TQ-Zo-YPJ" secondAttribute="bottom" constant="21" id="5Hw-So-Et1"/>  
1435 - <constraint firstItem="1TQ-Zo-YPJ" firstAttribute="centerX" secondItem="Ojc-oe-kTU" secondAttribute="centerX" id="8lP-lE-wNu"/>  
1436 - <constraint firstAttribute="trailing" secondItem="Jpj-0w-YcL" secondAttribute="trailing" constant="8" id="Jfr-ey-TM1"/>  
1437 - <constraint firstAttribute="trailing" secondItem="b1d-Mx-K15" secondAttribute="trailing" id="Jg8-Go-RUp"/>  
1438 - <constraint firstAttribute="trailing" secondItem="hgJ-Y4-7fb" secondAttribute="trailing" id="N2k-SC-K7S"/>  
1439 - <constraint firstAttribute="bottom" secondItem="b1d-Mx-K15" secondAttribute="bottom" constant="1" id="cag-g5-Fe2"/>  
1440 - <constraint firstItem="b1d-Mx-K15" firstAttribute="leading" secondItem="Ojc-oe-kTU" secondAttribute="leading" id="dYo-VA-k9n"/>  
1441 - <constraint firstItem="Jpj-0w-YcL" firstAttribute="leading" secondItem="Ojc-oe-kTU" secondAttribute="leading" constant="8" id="fPf-Je-gcL"/>  
1442 - <constraint firstItem="b1d-Mx-K15" firstAttribute="top" secondItem="Ojc-oe-kTU" secondAttribute="top" id="iyP-EF-wsR"/>  
1443 - <constraint firstItem="1TQ-Zo-YPJ" firstAttribute="centerY" secondItem="Ojc-oe-kTU" secondAttribute="centerY" constant="-13" id="ph2-fG-krA"/>  
1444 - <constraint firstAttribute="height" constant="142" id="sB1-aI-dtb"/>  
1445 - </constraints>  
1446 - </view>  
1447 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cj3-uZ-M2P">  
1448 - <rect key="frame" x="0.0" y="142" width="375" height="50"/>  
1449 - <subviews>  
1450 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jQp-bu-KNx">  
1451 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1452 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1453 - <constraints>  
1454 - <constraint firstAttribute="height" constant="1" id="GCq-tm-F8w"/>  
1455 - </constraints>  
1456 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1457 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1458 - <nil key="highlightedColor"/>  
1459 - </label>  
1460 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播间名字设置(必填)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="I9Q-1k-d8Q">  
1461 - <rect key="frame" x="15" y="16" width="150" height="18"/>  
1462 - <constraints>  
1463 - <constraint firstAttribute="width" constant="150" id="bdO-1G-DeN"/>  
1464 - </constraints>  
1465 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1466 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1467 - <nil key="highlightedColor"/>  
1468 - </label>  
1469 - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="bGE-9j-Jod">  
1470 - <rect key="frame" x="173" y="7.5" width="194" height="35"/>  
1471 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1472 - <constraints>  
1473 - <constraint firstAttribute="height" constant="35" id="rYQ-Ji-tb1"/>  
1474 - </constraints>  
1475 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1476 - <textInputTraits key="textInputTraits" autocapitalizationType="sentences" returnKeyType="done"/>  
1477 - <connections>  
1478 - <outlet property="delegate" destination="jwk-18-f3u" id="2Tj-ON-wua"/>  
1479 - </connections>  
1480 - </textView>  
1481 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="如:采购经费,活动经费" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pFN-yb-0ZP">  
1482 - <rect key="frame" x="177" y="16" width="146.5" height="18"/>  
1483 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1484 - <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
1485 - <nil key="highlightedColor"/>  
1486 - </label>  
1487 - </subviews>  
1488 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1489 - <constraints>  
1490 - <constraint firstAttribute="bottom" secondItem="jQp-bu-KNx" secondAttribute="bottom" id="5vK-5o-4Dr"/>  
1491 - <constraint firstAttribute="height" constant="50" id="AyX-au-5ZP"/>  
1492 - <constraint firstItem="jQp-bu-KNx" firstAttribute="leading" secondItem="cj3-uZ-M2P" secondAttribute="leading" id="GOc-Cx-uof"/>  
1493 - <constraint firstItem="pFN-yb-0ZP" firstAttribute="centerY" secondItem="cj3-uZ-M2P" secondAttribute="centerY" id="Jmu-yt-VNe"/>  
1494 - <constraint firstItem="I9Q-1k-d8Q" firstAttribute="leading" secondItem="cj3-uZ-M2P" secondAttribute="leading" constant="15" id="Pvu-9S-GWi"/>  
1495 - <constraint firstItem="bGE-9j-Jod" firstAttribute="centerY" secondItem="cj3-uZ-M2P" secondAttribute="centerY" id="T4H-t2-iob"/>  
1496 - <constraint firstAttribute="trailing" secondItem="jQp-bu-KNx" secondAttribute="trailing" id="ZAq-ve-oiI"/>  
1497 - <constraint firstItem="pFN-yb-0ZP" firstAttribute="leading" secondItem="I9Q-1k-d8Q" secondAttribute="trailing" constant="12" id="cjC-3F-BZN"/>  
1498 - <constraint firstAttribute="trailing" secondItem="bGE-9j-Jod" secondAttribute="trailing" constant="8" id="hZe-AI-jG9"/>  
1499 - <constraint firstItem="I9Q-1k-d8Q" firstAttribute="centerY" secondItem="cj3-uZ-M2P" secondAttribute="centerY" id="imR-CX-RBO"/>  
1500 - <constraint firstItem="bGE-9j-Jod" firstAttribute="leading" secondItem="I9Q-1k-d8Q" secondAttribute="trailing" constant="8" id="kkF-9a-21J"/>  
1501 - </constraints>  
1502 - </view>  
1503 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FXE-Uo-qly">  
1504 - <rect key="frame" x="0.0" y="192" width="375" height="50"/>  
1505 - <subviews>  
1506 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r2P-WS-bQu">  
1507 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1508 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1509 - <constraints>  
1510 - <constraint firstAttribute="height" constant="1" id="V8R-hb-BmR"/>  
1511 - </constraints>  
1512 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1513 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1514 - <nil key="highlightedColor"/>  
1515 - </label>  
1516 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="选择直播分类" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IaE-i3-aCb">  
1517 - <rect key="frame" x="15" y="16" width="92" height="18"/>  
1518 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1519 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1520 - <nil key="highlightedColor"/>  
1521 - </label>  
1522 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="收拢.png" translatesAutoresizingMaskIntoConstraints="NO" id="fMt-kr-ObK">  
1523 - <rect key="frame" x="348" y="15" width="12" height="20"/>  
1524 - <constraints>  
1525 - <constraint firstAttribute="width" constant="12" id="S8N-C8-lla"/>  
1526 - <constraint firstAttribute="height" constant="20" id="Z09-Ge-470"/>  
1527 - </constraints>  
1528 - </imageView>  
1529 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jkn-4P-F72">  
1530 - <rect key="frame" x="340" y="25" width="0.0" height="0.0"/>  
1531 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1532 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1533 - <nil key="highlightedColor"/>  
1534 - </label>  
1535 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Jnu-Pw-1Qs">  
1536 - <rect key="frame" x="115" y="0.0" width="252" height="50"/>  
1537 - <connections>  
1538 - <action selector="selectCategoryAction:" destination="jwk-18-f3u" eventType="touchUpInside" id="J8X-cM-NTF"/>  
1539 - </connections>  
1540 - </button>  
1541 - </subviews>  
1542 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1543 - <constraints>  
1544 - <constraint firstItem="Jnu-Pw-1Qs" firstAttribute="leading" secondItem="IaE-i3-aCb" secondAttribute="trailing" constant="8" id="4p2-EG-aqz"/>  
1545 - <constraint firstItem="fMt-kr-ObK" firstAttribute="centerY" secondItem="FXE-Uo-qly" secondAttribute="centerY" id="8fk-fl-Ech"/>  
1546 - <constraint firstItem="IaE-i3-aCb" firstAttribute="centerY" secondItem="FXE-Uo-qly" secondAttribute="centerY" id="CYT-pO-0zO"/>  
1547 - <constraint firstItem="jkn-4P-F72" firstAttribute="centerY" secondItem="FXE-Uo-qly" secondAttribute="centerY" id="Eo2-KO-xaZ"/>  
1548 - <constraint firstAttribute="trailing" secondItem="Jnu-Pw-1Qs" secondAttribute="trailing" constant="8" id="FpY-fx-9cy"/>  
1549 - <constraint firstAttribute="bottom" secondItem="Jnu-Pw-1Qs" secondAttribute="bottom" id="RNk-n3-anW"/>  
1550 - <constraint firstItem="IaE-i3-aCb" firstAttribute="leading" secondItem="FXE-Uo-qly" secondAttribute="leading" constant="15" id="VJx-Kf-BVS"/>  
1551 - <constraint firstAttribute="bottom" secondItem="r2P-WS-bQu" secondAttribute="bottom" id="WO6-vU-2oE"/>  
1552 - <constraint firstAttribute="height" constant="50" id="e5r-XN-jQh"/>  
1553 - <constraint firstAttribute="trailing" secondItem="fMt-kr-ObK" secondAttribute="trailing" constant="15" id="f2G-JF-Hbb"/>  
1554 - <constraint firstItem="Jnu-Pw-1Qs" firstAttribute="top" secondItem="FXE-Uo-qly" secondAttribute="top" id="obu-FW-lDm"/>  
1555 - <constraint firstAttribute="trailing" secondItem="r2P-WS-bQu" secondAttribute="trailing" id="s7m-2l-Prg"/>  
1556 - <constraint firstItem="r2P-WS-bQu" firstAttribute="leading" secondItem="FXE-Uo-qly" secondAttribute="leading" id="svk-4Z-Mmq"/>  
1557 - <constraint firstItem="fMt-kr-ObK" firstAttribute="leading" secondItem="jkn-4P-F72" secondAttribute="trailing" constant="8" id="x3s-To-FlJ"/>  
1558 - </constraints>  
1559 - </view>  
1560 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yi1-uo-lEW">  
1561 - <rect key="frame" x="0.0" y="242" width="375" height="94"/>  
1562 - <subviews>  
1563 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请输入直播公告" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DEM-Ng-GHF">  
1564 - <rect key="frame" x="90" y="9" width="107.5" height="18"/>  
1565 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1566 - <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
1567 - <nil key="highlightedColor"/>  
1568 - </label>  
1569 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9yD-48-AVM">  
1570 - <rect key="frame" x="0.0" y="91" width="375" height="1"/>  
1571 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1572 - <constraints>  
1573 - <constraint firstAttribute="height" constant="1" id="tQz-6w-1Ft"/>  
1574 - </constraints>  
1575 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1576 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1577 - <nil key="highlightedColor"/>  
1578 - </label>  
1579 - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TiW-VB-uOE">  
1580 - <rect key="frame" x="84.5" y="1" width="275.5" height="90"/>  
1581 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
1582 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1583 - <textInputTraits key="textInputTraits" autocapitalizationType="sentences" returnKeyType="done"/>  
1584 - <connections>  
1585 - <outlet property="delegate" destination="jwk-18-f3u" id="BPX-7e-dIA"/>  
1586 - </connections>  
1587 - </textView>  
1588 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播公告" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mw4-7z-qQP">  
1589 - <rect key="frame" x="15" y="8" width="61.5" height="18"/>  
1590 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1591 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1592 - <nil key="highlightedColor"/>  
1593 - </label>  
1594 - </subviews>  
1595 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1596 - <constraints>  
1597 - <constraint firstItem="9yD-48-AVM" firstAttribute="top" secondItem="TiW-VB-uOE" secondAttribute="bottom" id="1hP-E3-FwA"/>  
1598 - <constraint firstItem="mw4-7z-qQP" firstAttribute="leading" secondItem="yi1-uo-lEW" secondAttribute="leading" constant="15" id="4dd-jn-07q"/>  
1599 - <constraint firstItem="mw4-7z-qQP" firstAttribute="centerY" secondItem="yi1-uo-lEW" secondAttribute="centerY" id="70d-GB-f1b"/>  
1600 - <constraint firstItem="TiW-VB-uOE" firstAttribute="centerY" secondItem="yi1-uo-lEW" secondAttribute="centerY" constant="-1" id="AZZ-dH-zwl"/>  
1601 - <constraint firstItem="TiW-VB-uOE" firstAttribute="leading" secondItem="mw4-7z-qQP" secondAttribute="trailing" constant="8" id="B0e-iF-ru0"/>  
1602 - <constraint firstItem="DEM-Ng-GHF" firstAttribute="leading" secondItem="mw4-7z-qQP" secondAttribute="trailing" constant="13.5" id="CU5-sY-7bz"/>  
1603 - <constraint firstItem="mw4-7z-qQP" firstAttribute="top" secondItem="yi1-uo-lEW" secondAttribute="top" constant="8" id="N4H-pT-ZsI"/>  
1604 - <constraint firstAttribute="bottom" secondItem="9yD-48-AVM" secondAttribute="bottom" constant="2" id="bVZ-Tb-sam"/>  
1605 - <constraint firstAttribute="trailing" secondItem="TiW-VB-uOE" secondAttribute="trailing" constant="15" id="iLu-oG-6Lx"/>  
1606 - <constraint firstAttribute="height" constant="94" id="jrK-aB-b5M"/>  
1607 - <constraint firstItem="9yD-48-AVM" firstAttribute="leading" secondItem="yi1-uo-lEW" secondAttribute="leading" id="meo-hS-r1i"/>  
1608 - <constraint firstAttribute="trailing" secondItem="9yD-48-AVM" secondAttribute="trailing" id="oX8-s0-XHh"/>  
1609 - <constraint firstItem="DEM-Ng-GHF" firstAttribute="top" secondItem="yi1-uo-lEW" secondAttribute="top" constant="9" id="qPB-4R-VFE"/>  
1610 - </constraints>  
1611 - <variation key="default">  
1612 - <mask key="constraints">  
1613 - <exclude reference="70d-GB-f1b"/>  
1614 - </mask>  
1615 - </variation>  
1616 - </view>  
1617 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dd4-BM-IKh">  
1618 - <rect key="frame" x="0.0" y="336" width="375" height="50"/>  
1619 - <subviews>  
1620 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jh1-VU-QYP">  
1621 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1622 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1623 - <constraints>  
1624 - <constraint firstAttribute="height" constant="1" id="u0E-1r-yff"/>  
1625 - </constraints>  
1626 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1627 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1628 - <nil key="highlightedColor"/>  
1629 - </label>  
1630 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开始时间(必选)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hb3-CD-c0q">  
1631 - <rect key="frame" x="15" y="16" width="102" height="18"/>  
1632 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1633 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1634 - <nil key="highlightedColor"/>  
1635 - </label>  
1636 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="收拢.png" translatesAutoresizingMaskIntoConstraints="NO" id="X5Q-7E-oqr">  
1637 - <rect key="frame" x="348" y="15" width="12" height="20"/>  
1638 - <constraints>  
1639 - <constraint firstAttribute="width" secondItem="X5Q-7E-oqr" secondAttribute="height" multiplier="1:1" id="97p-8G-ADg"/>  
1640 - <constraint firstAttribute="height" constant="20" id="fbG-1s-0Pr"/>  
1641 - </constraints>  
1642 - <variation key="default">  
1643 - <mask key="constraints">  
1644 - <exclude reference="97p-8G-ADg"/>  
1645 - </mask>  
1646 - </variation>  
1647 - </imageView>  
1648 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gAM-jO-AiE">  
1649 - <rect key="frame" x="298" y="10" width="46" height="30"/>  
1650 - <state key="normal" title="请选择">  
1651 - <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1652 - </state>  
1653 - <connections>  
1654 - <action selector="startTimeClickAction:" destination="jwk-18-f3u" eventType="touchUpInside" id="HJP-yK-ldW"/>  
1655 - </connections>  
1656 - </button>  
1657 - </subviews>  
1658 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1659 - <constraints>  
1660 - <constraint firstItem="gAM-jO-AiE" firstAttribute="centerY" secondItem="dd4-BM-IKh" secondAttribute="centerY" id="5HY-7q-31B"/>  
1661 - <constraint firstItem="Hb3-CD-c0q" firstAttribute="leading" secondItem="dd4-BM-IKh" secondAttribute="leading" constant="15" id="6co-jg-rDf"/>  
1662 - <constraint firstAttribute="trailing" secondItem="X5Q-7E-oqr" secondAttribute="trailing" constant="15" id="GEp-Td-y3I"/>  
1663 - <constraint firstAttribute="bottom" secondItem="jh1-VU-QYP" secondAttribute="bottom" id="Jz0-C5-lgP"/>  
1664 - <constraint firstItem="X5Q-7E-oqr" firstAttribute="width" secondItem="X5Q-7E-oqr" secondAttribute="height" multiplier="3:5" id="K5P-NK-K65"/>  
1665 - <constraint firstAttribute="trailing" secondItem="jh1-VU-QYP" secondAttribute="trailing" id="YFJ-OJ-Du8"/>  
1666 - <constraint firstItem="X5Q-7E-oqr" firstAttribute="leading" secondItem="gAM-jO-AiE" secondAttribute="trailing" constant="4" id="aD0-B7-ItN"/>  
1667 - <constraint firstItem="jh1-VU-QYP" firstAttribute="leading" secondItem="dd4-BM-IKh" secondAttribute="leading" id="bKb-SG-FmQ"/>  
1668 - <constraint firstAttribute="height" constant="50" id="ea8-uJ-9EA"/>  
1669 - <constraint firstItem="X5Q-7E-oqr" firstAttribute="centerY" secondItem="dd4-BM-IKh" secondAttribute="centerY" id="kTd-GJ-0hS"/>  
1670 - <constraint firstItem="Hb3-CD-c0q" firstAttribute="centerY" secondItem="dd4-BM-IKh" secondAttribute="centerY" id="xZu-bB-UAf"/>  
1671 - </constraints>  
1672 - </view>  
1673 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ok9-zf-IXl">  
1674 - <rect key="frame" x="0.0" y="386" width="375" height="50"/>  
1675 - <subviews>  
1676 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zvm-5f-J1j">  
1677 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1678 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1679 - <constraints>  
1680 - <constraint firstAttribute="height" constant="1" id="9Yc-Kq-c0d"/>  
1681 - </constraints>  
1682 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1683 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1684 - <nil key="highlightedColor"/>  
1685 - </label>  
1686 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="结束时间(必选)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0mC-Xy-eAB">  
1687 - <rect key="frame" x="15" y="16" width="102" height="18"/>  
1688 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1689 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1690 - <nil key="highlightedColor"/>  
1691 - </label>  
1692 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="收拢.png" translatesAutoresizingMaskIntoConstraints="NO" id="2hA-Ds-4I8">  
1693 - <rect key="frame" x="348" y="15" width="12" height="20"/>  
1694 - <constraints>  
1695 - <constraint firstAttribute="width" secondItem="2hA-Ds-4I8" secondAttribute="height" multiplier="1:1" id="FW0-H7-dhO"/>  
1696 - <constraint firstAttribute="height" constant="20" id="VRu-Mf-VGB"/>  
1697 - </constraints>  
1698 - <variation key="default">  
1699 - <mask key="constraints">  
1700 - <exclude reference="FW0-H7-dhO"/>  
1701 - </mask>  
1702 - </variation>  
1703 - </imageView>  
1704 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7M7-Jd-xs6">  
1705 - <rect key="frame" x="298" y="10" width="46" height="30"/>  
1706 - <state key="normal" title="请选择">  
1707 - <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1708 - </state>  
1709 - <connections>  
1710 - <action selector="allTimeClickAction:" destination="jwk-18-f3u" eventType="touchUpInside" id="54B-dv-UXQ"/>  
1711 - </connections>  
1712 - </button>  
1713 - </subviews>  
1714 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1715 - <constraints>  
1716 - <constraint firstAttribute="trailing" secondItem="2hA-Ds-4I8" secondAttribute="trailing" constant="15" id="7TH-O1-SrS"/>  
1717 - <constraint firstItem="zvm-5f-J1j" firstAttribute="leading" secondItem="Ok9-zf-IXl" secondAttribute="leading" id="Bxm-Ix-Ho0"/>  
1718 - <constraint firstItem="2hA-Ds-4I8" firstAttribute="centerY" secondItem="Ok9-zf-IXl" secondAttribute="centerY" id="Cef-Jy-wJJ"/>  
1719 - <constraint firstItem="7M7-Jd-xs6" firstAttribute="centerY" secondItem="Ok9-zf-IXl" secondAttribute="centerY" id="GPS-MQ-Bjw"/>  
1720 - <constraint firstAttribute="bottom" secondItem="zvm-5f-J1j" secondAttribute="bottom" id="GpY-DW-hJx"/>  
1721 - <constraint firstItem="0mC-Xy-eAB" firstAttribute="centerY" secondItem="Ok9-zf-IXl" secondAttribute="centerY" id="R4l-OJ-JOu"/>  
1722 - <constraint firstItem="0mC-Xy-eAB" firstAttribute="leading" secondItem="Ok9-zf-IXl" secondAttribute="leading" constant="15" id="Tg6-2J-GPn"/>  
1723 - <constraint firstItem="2hA-Ds-4I8" firstAttribute="width" secondItem="2hA-Ds-4I8" secondAttribute="height" multiplier="3:5" id="UEB-ZX-vyc"/>  
1724 - <constraint firstItem="2hA-Ds-4I8" firstAttribute="leading" secondItem="7M7-Jd-xs6" secondAttribute="trailing" constant="4" id="YGI-NJ-JOC"/>  
1725 - <constraint firstAttribute="trailing" secondItem="zvm-5f-J1j" secondAttribute="trailing" id="jW6-np-JWg"/>  
1726 - <constraint firstAttribute="height" constant="50" id="kcw-uC-RNU"/>  
1727 - </constraints>  
1728 - </view>  
1729 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jU3-sr-OWT">  
1730 - <rect key="frame" x="0.0" y="436" width="375" height="50"/>  
1731 - <subviews>  
1732 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xc6-T7-nmC">  
1733 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1734 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1735 - <constraints>  
1736 - <constraint firstAttribute="height" constant="1" id="ltL-uG-s3E"/>  
1737 - </constraints>  
1738 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1739 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1740 - <nil key="highlightedColor"/>  
1741 - </label>  
1742 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是否录制" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nSb-xP-QmC">  
1743 - <rect key="frame" x="15" y="16" width="61.5" height="18"/>  
1744 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1745 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1746 - <nil key="highlightedColor"/>  
1747 - </label>  
1748 - <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qX0-EU-Lcb">  
1749 - <rect key="frame" x="318" y="9.5" width="51" height="31"/>  
1750 - <color key="onTintColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1751 - </switch>  
1752 - </subviews>  
1753 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1754 - <constraints>  
1755 - <constraint firstItem="qX0-EU-Lcb" firstAttribute="centerY" secondItem="jU3-sr-OWT" secondAttribute="centerY" id="NMB-xM-syX"/>  
1756 - <constraint firstItem="Xc6-T7-nmC" firstAttribute="leading" secondItem="jU3-sr-OWT" secondAttribute="leading" id="TmS-JP-33t"/>  
1757 - <constraint firstAttribute="height" constant="50" id="ahs-ox-Xf1"/>  
1758 - <constraint firstItem="nSb-xP-QmC" firstAttribute="leading" secondItem="jU3-sr-OWT" secondAttribute="leading" constant="15" id="eM1-B2-q8M"/>  
1759 - <constraint firstAttribute="bottom" secondItem="Xc6-T7-nmC" secondAttribute="bottom" id="oJI-as-24Y"/>  
1760 - <constraint firstAttribute="trailing" secondItem="qX0-EU-Lcb" secondAttribute="trailing" constant="8" id="sF0-9h-mDe"/>  
1761 - <constraint firstItem="nSb-xP-QmC" firstAttribute="centerY" secondItem="jU3-sr-OWT" secondAttribute="centerY" id="sVJ-S5-AsU"/>  
1762 - <constraint firstAttribute="trailing" secondItem="Xc6-T7-nmC" secondAttribute="trailing" id="vag-gQ-TTv"/>  
1763 - </constraints>  
1764 - </view>  
1765 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KqY-xs-Fi7">  
1766 - <rect key="frame" x="0.0" y="486" width="375" height="50"/>  
1767 - <subviews>  
1768 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zo9-B4-PPj">  
1769 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1770 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1771 - <constraints>  
1772 - <constraint firstAttribute="height" constant="1" id="aUu-in-7A9"/>  
1773 - </constraints>  
1774 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1775 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1776 - <nil key="highlightedColor"/>  
1777 - </label>  
1778 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是否公开" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Th0-ga-dTj">  
1779 - <rect key="frame" x="15" y="16" width="61.5" height="18"/>  
1780 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1781 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1782 - <nil key="highlightedColor"/>  
1783 - </label>  
1784 - <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Suq-zY-Gxx">  
1785 - <rect key="frame" x="318" y="9.5" width="51" height="31"/>  
1786 - <color key="onTintColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1787 - <connections>  
1788 - <action selector="lookOfEveryoneBtnClickAction:" destination="jwk-18-f3u" eventType="valueChanged" id="cvK-OL-ccd"/>  
1789 - </connections>  
1790 - </switch>  
1791 - </subviews>  
1792 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1793 - <constraints>  
1794 - <constraint firstItem="Th0-ga-dTj" firstAttribute="leading" secondItem="KqY-xs-Fi7" secondAttribute="leading" constant="15" id="ClE-8L-z1W"/>  
1795 - <constraint firstItem="Suq-zY-Gxx" firstAttribute="centerY" secondItem="KqY-xs-Fi7" secondAttribute="centerY" id="EJp-i8-Go8"/>  
1796 - <constraint firstItem="zo9-B4-PPj" firstAttribute="leading" secondItem="KqY-xs-Fi7" secondAttribute="leading" id="EWz-eM-xDV"/>  
1797 - <constraint firstAttribute="bottom" secondItem="zo9-B4-PPj" secondAttribute="bottom" id="Sn1-Jh-Dob"/>  
1798 - <constraint firstAttribute="trailing" secondItem="Suq-zY-Gxx" secondAttribute="trailing" constant="8" id="Vm0-Qy-sl6"/>  
1799 - <constraint firstAttribute="trailing" secondItem="zo9-B4-PPj" secondAttribute="trailing" id="b5q-fa-yet"/>  
1800 - <constraint firstItem="Th0-ga-dTj" firstAttribute="centerY" secondItem="KqY-xs-Fi7" secondAttribute="centerY" id="kF8-yG-1ut"/>  
1801 - <constraint firstAttribute="height" constant="50" id="wso-zy-sdG"/>  
1802 - </constraints>  
1803 - </view>  
1804 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="piO-2m-hb9">  
1805 - <rect key="frame" x="0.0" y="536" width="375" height="50"/>  
1806 - <subviews>  
1807 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5uf-jt-ZEc">  
1808 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1809 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1810 - <constraints>  
1811 - <constraint firstAttribute="height" constant="1" id="7pF-tF-gDq"/>  
1812 - </constraints>  
1813 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1814 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1815 - <nil key="highlightedColor"/>  
1816 - </label>  
1817 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是否支持互动" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YfA-y3-aJw">  
1818 - <rect key="frame" x="15" y="16" width="92" height="18"/>  
1819 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1820 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1821 - <nil key="highlightedColor"/>  
1822 - </label>  
1823 - <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cbW-tG-UHt">  
1824 - <rect key="frame" x="318" y="9.5" width="51" height="31"/>  
1825 - <color key="onTintColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1826 - </switch>  
1827 - </subviews>  
1828 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1829 - <constraints>  
1830 - <constraint firstAttribute="trailing" secondItem="5uf-jt-ZEc" secondAttribute="trailing" id="1Z3-D8-9jm"/>  
1831 - <constraint firstItem="5uf-jt-ZEc" firstAttribute="leading" secondItem="piO-2m-hb9" secondAttribute="leading" id="2nN-wj-hQ3"/>  
1832 - <constraint firstItem="YfA-y3-aJw" firstAttribute="leading" secondItem="piO-2m-hb9" secondAttribute="leading" constant="15" id="M4h-Dk-DHd"/>  
1833 - <constraint firstAttribute="trailing" secondItem="cbW-tG-UHt" secondAttribute="trailing" constant="8" id="UR5-uC-Ckf"/>  
1834 - <constraint firstItem="YfA-y3-aJw" firstAttribute="centerY" secondItem="piO-2m-hb9" secondAttribute="centerY" id="aGk-ya-qLl"/>  
1835 - <constraint firstAttribute="bottom" secondItem="5uf-jt-ZEc" secondAttribute="bottom" id="aHV-2o-EQT"/>  
1836 - <constraint firstAttribute="height" constant="50" id="aL5-X5-foV"/>  
1837 - <constraint firstItem="cbW-tG-UHt" firstAttribute="centerY" secondItem="piO-2m-hb9" secondAttribute="centerY" id="wDV-jc-jXE"/>  
1838 - </constraints>  
1839 - </view>  
1840 - <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Z8-Cj-qAK">  
1841 - <rect key="frame" x="0.0" y="586" width="375" height="50"/>  
1842 - <subviews>  
1843 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="s5B-pI-Nza">  
1844 - <rect key="frame" x="0.0" y="49" width="375" height="1"/>  
1845 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1846 - <constraints>  
1847 - <constraint firstAttribute="height" constant="1" id="WwH-Y8-6w1"/>  
1848 - </constraints>  
1849 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1850 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1851 - <nil key="highlightedColor"/>  
1852 - </label>  
1853 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="附件" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wpE-Sf-0QP">  
1854 - <rect key="frame" x="15" y="16" width="31" height="18"/>  
1855 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1856 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1857 - <nil key="highlightedColor"/>  
1858 - </label>  
1859 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pqO-yo-umd">  
1860 - <rect key="frame" x="342" y="12.5" width="25" height="25"/>  
1861 - <constraints>  
1862 - <constraint firstAttribute="height" constant="25" id="1Nj-tM-dVg"/>  
1863 - <constraint firstAttribute="width" constant="25" id="HzU-Nc-nEV"/>  
1864 - </constraints>  
1865 - <state key="normal" backgroundImage="examine_file">  
1866 - <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1867 - </state>  
1868 - <connections>  
1869 - <action selector="addFileClickAction:" destination="jwk-18-f3u" eventType="touchUpInside" id="8HV-TD-GTv"/>  
1870 - </connections>  
1871 - </button>  
1872 - </subviews>  
1873 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1874 - <constraints>  
1875 - <constraint firstAttribute="height" constant="50" id="09x-KI-ePT"/>  
1876 - <constraint firstItem="s5B-pI-Nza" firstAttribute="leading" secondItem="0Z8-Cj-qAK" secondAttribute="leading" id="2ic-kH-otF"/>  
1877 - <constraint firstItem="wpE-Sf-0QP" firstAttribute="leading" secondItem="0Z8-Cj-qAK" secondAttribute="leading" constant="15" id="8ID-Iy-y45"/>  
1878 - <constraint firstItem="pqO-yo-umd" firstAttribute="centerY" secondItem="0Z8-Cj-qAK" secondAttribute="centerY" id="OEX-R1-bL8"/>  
1879 - <constraint firstItem="wpE-Sf-0QP" firstAttribute="centerY" secondItem="0Z8-Cj-qAK" secondAttribute="centerY" id="OXU-HK-p59"/>  
1880 - <constraint firstAttribute="bottom" secondItem="s5B-pI-Nza" secondAttribute="bottom" id="iGq-Fu-F4e"/>  
1881 - <constraint firstAttribute="trailing" secondItem="pqO-yo-umd" secondAttribute="trailing" constant="8" id="l8L-GN-7V8"/>  
1882 - <constraint firstAttribute="trailing" secondItem="s5B-pI-Nza" secondAttribute="trailing" id="q80-MH-4Rm"/>  
1883 - </constraints>  
1884 - </view>  
1885 - <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="Xbx-Qe-cMi">  
1886 - <rect key="frame" x="0.0" y="636" width="375" height="0.0"/>  
1887 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1888 - <constraints>  
1889 - <constraint firstAttribute="height" id="iJn-Uf-h00"/>  
1890 - </constraints>  
1891 - <prototypes>  
1892 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="documentTableViewCell" id="BeQ-hr-Yht" customClass="documentTableViewCell" customModule="YouerLiveVideo" customModuleProvider="target">  
1893 - <rect key="frame" x="0.0" y="28" width="375" height="44"/>  
1894 - <autoresizingMask key="autoresizingMask"/>  
1895 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="BeQ-hr-Yht" id="fsK-Lx-gbg">  
1896 - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>  
1897 - <autoresizingMask key="autoresizingMask"/>  
1898 - <subviews>  
1899 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon.png" translatesAutoresizingMaskIntoConstraints="NO" id="CEb-RW-8dm">  
1900 - <rect key="frame" x="7" y="7" width="30" height="30"/>  
1901 - <constraints>  
1902 - <constraint firstAttribute="height" constant="30" id="InH-ge-yG6"/>  
1903 - <constraint firstAttribute="width" constant="30" id="iTd-yZ-kpy"/>  
1904 - </constraints>  
1905 - </imageView>  
1906 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="线性代数" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o5f-mD-VXF">  
1907 - <rect key="frame" x="45" y="13" width="322" height="18"/>  
1908 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1909 - <nil key="textColor"/>  
1910 - <nil key="highlightedColor"/>  
1911 - </label>  
1912 - </subviews>  
1913 - <constraints>  
1914 - <constraint firstItem="CEb-RW-8dm" firstAttribute="leading" secondItem="fsK-Lx-gbg" secondAttribute="leadingMargin" constant="-1" id="DlF-G3-UuO"/>  
1915 - <constraint firstItem="o5f-mD-VXF" firstAttribute="leading" secondItem="CEb-RW-8dm" secondAttribute="trailing" constant="8" id="YY4-k2-nAI"/>  
1916 - <constraint firstItem="o5f-mD-VXF" firstAttribute="centerY" secondItem="fsK-Lx-gbg" secondAttribute="centerY" id="cwz-kz-fzO"/>  
1917 - <constraint firstItem="CEb-RW-8dm" firstAttribute="centerY" secondItem="fsK-Lx-gbg" secondAttribute="centerY" id="mdh-rn-pxj"/>  
1918 - <constraint firstAttribute="trailingMargin" secondItem="o5f-mD-VXF" secondAttribute="trailing" id="zpf-dp-5W7"/>  
1919 - </constraints>  
1920 - </tableViewCellContentView>  
1921 - <connections>  
1922 - <outlet property="iconImageView" destination="CEb-RW-8dm" id="9fA-iX-H5T"/>  
1923 - <outlet property="titleLabel" destination="o5f-mD-VXF" id="K4S-IM-tIm"/>  
1924 - </connections>  
1925 - </tableViewCell>  
1926 - </prototypes>  
1927 - <connections>  
1928 - <outlet property="dataSource" destination="jwk-18-f3u" id="xcz-RI-9af"/>  
1929 - <outlet property="delegate" destination="jwk-18-f3u" id="yPI-Zb-3ed"/>  
1930 - </connections>  
1931 - </tableView>  
1932 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PHR-ag-hyg">  
1933 - <rect key="frame" x="97.5" y="812" width="180" height="30"/>  
1934 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1935 - <constraints>  
1936 - <constraint firstAttribute="width" constant="180" id="0nT-pa-njg"/>  
1937 - <constraint firstAttribute="height" constant="30" id="fbW-ZK-0bX"/>  
1938 - </constraints>  
1939 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1940 - <state key="normal" title="申请直播">  
1941 - <color key="titleColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1942 - </state>  
1943 - <userDefinedRuntimeAttributes>  
1944 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
1945 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
1946 - <integer key="value" value="15"/>  
1947 - </userDefinedRuntimeAttribute>  
1948 - <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">  
1949 - <integer key="value" value="1"/>  
1950 - </userDefinedRuntimeAttribute>  
1951 - <userDefinedRuntimeAttribute type="color" keyPath="layer.borderColor">  
1952 - <color key="value" red="0.92156862750000001" green="0.92156862750000001" blue="0.94509803920000002" alpha="1" colorSpace="calibratedRGB"/>  
1953 - </userDefinedRuntimeAttribute>  
1954 - </userDefinedRuntimeAttributes>  
1955 - <connections>  
1956 - <action selector="applyLiveBtnClickAction:" destination="jwk-18-f3u" eventType="touchUpInside" id="pzK-4n-lIQ"/>  
1957 - </connections>  
1958 - </button>  
1959 - </subviews>  
1960 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
1961 - <constraints>  
1962 - <constraint firstAttribute="trailing" secondItem="Xbx-Qe-cMi" secondAttribute="trailing" id="0GW-0G-EKN"/>  
1963 - <constraint firstItem="yi1-uo-lEW" firstAttribute="top" secondItem="FXE-Uo-qly" secondAttribute="bottom" id="3V7-YW-lOv"/>  
1964 - <constraint firstItem="0Z8-Cj-qAK" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="6aw-dG-gd7"/>  
1965 - <constraint firstItem="KqY-xs-Fi7" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="8Re-ZE-XbO"/>  
1966 - <constraint firstAttribute="trailing" secondItem="Ok9-zf-IXl" secondAttribute="trailing" id="8dw-1L-lKz"/>  
1967 - <constraint firstAttribute="trailing" secondItem="KqY-xs-Fi7" secondAttribute="trailing" id="8xr-3s-iUk"/>  
1968 - <constraint firstItem="dd4-BM-IKh" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="BDK-Ud-iYB"/>  
1969 - <constraint firstItem="cj3-uZ-M2P" firstAttribute="top" secondItem="Ojc-oe-kTU" secondAttribute="bottom" id="BJq-vf-3Vs"/>  
1970 - <constraint firstItem="Ok9-zf-IXl" firstAttribute="top" secondItem="dd4-BM-IKh" secondAttribute="bottom" id="CLr-9H-3HV"/>  
1971 - <constraint firstItem="Xbx-Qe-cMi" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="CVu-VE-XP9"/>  
1972 - <constraint firstItem="FXE-Uo-qly" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="DyC-AK-GcP"/>  
1973 - <constraint firstAttribute="trailing" secondItem="yi1-uo-lEW" secondAttribute="trailing" id="HFY-Dz-OS1"/>  
1974 - <constraint firstItem="piO-2m-hb9" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="IvQ-wZ-f3T"/>  
1975 - <constraint firstItem="PHR-ag-hyg" firstAttribute="centerX" secondItem="lNX-yU-h0E" secondAttribute="centerX" id="Jl8-0M-AzZ"/>  
1976 - <constraint firstItem="dd4-BM-IKh" firstAttribute="top" secondItem="yi1-uo-lEW" secondAttribute="bottom" id="K45-kX-LiY"/>  
1977 - <constraint firstItem="Ojc-oe-kTU" firstAttribute="top" secondItem="lNX-yU-h0E" secondAttribute="top" id="QNu-hY-sdU"/>  
1978 - <constraint firstAttribute="trailing" secondItem="cj3-uZ-M2P" secondAttribute="trailing" id="S8d-h4-COr"/>  
1979 - <constraint firstAttribute="trailing" secondItem="jU3-sr-OWT" secondAttribute="trailing" id="UME-dc-7xb"/>  
1980 - <constraint firstAttribute="height" constant="872" id="VIM-3A-uOb"/>  
1981 - <constraint firstItem="KqY-xs-Fi7" firstAttribute="top" secondItem="jU3-sr-OWT" secondAttribute="bottom" id="WEK-pv-YL6"/>  
1982 - <constraint firstAttribute="trailing" secondItem="0Z8-Cj-qAK" secondAttribute="trailing" id="XNR-pM-seD"/>  
1983 - <constraint firstItem="jU3-sr-OWT" firstAttribute="top" secondItem="Ok9-zf-IXl" secondAttribute="bottom" id="XzE-xm-bqX"/>  
1984 - <constraint firstAttribute="trailing" secondItem="FXE-Uo-qly" secondAttribute="trailing" id="YJU-iL-H0V"/>  
1985 - <constraint firstItem="FXE-Uo-qly" firstAttribute="top" secondItem="cj3-uZ-M2P" secondAttribute="bottom" id="Zmr-1T-YgV"/>  
1986 - <constraint firstItem="cj3-uZ-M2P" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="bCR-fz-4cw"/>  
1987 - <constraint firstAttribute="trailing" secondItem="Ojc-oe-kTU" secondAttribute="trailing" id="cDq-DH-ZSK"/>  
1988 - <constraint firstItem="Xbx-Qe-cMi" firstAttribute="top" secondItem="0Z8-Cj-qAK" secondAttribute="bottom" id="iiF-kv-z3r"/>  
1989 - <constraint firstAttribute="trailing" secondItem="piO-2m-hb9" secondAttribute="trailing" id="im4-Lg-y3U"/>  
1990 - <constraint firstItem="yi1-uo-lEW" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="p5N-nM-0ft"/>  
1991 - <constraint firstItem="Ok9-zf-IXl" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="qDg-p3-QQx"/>  
1992 - <constraint firstAttribute="bottom" secondItem="PHR-ag-hyg" secondAttribute="bottom" constant="30" id="qyu-JL-Mo0"/>  
1993 - <constraint firstItem="Ojc-oe-kTU" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="riW-ff-2My"/>  
1994 - <constraint firstAttribute="trailing" secondItem="dd4-BM-IKh" secondAttribute="trailing" id="vKZ-eJ-XAT"/>  
1995 - <constraint firstItem="piO-2m-hb9" firstAttribute="top" secondItem="KqY-xs-Fi7" secondAttribute="bottom" id="vk8-hE-8wj"/>  
1996 - <constraint firstItem="jU3-sr-OWT" firstAttribute="leading" secondItem="lNX-yU-h0E" secondAttribute="leading" id="w4X-dd-rw4"/>  
1997 - <constraint firstItem="0Z8-Cj-qAK" firstAttribute="top" secondItem="piO-2m-hb9" secondAttribute="bottom" id="w7W-Yx-m9g"/>  
1998 - </constraints>  
1999 - </view>  
2000 - </subviews>  
2001 - <constraints>  
2002 - <constraint firstAttribute="trailing" secondItem="lNX-yU-h0E" secondAttribute="trailing" id="8Du-qT-OGs"/>  
2003 - <constraint firstItem="lNX-yU-h0E" firstAttribute="centerX" secondItem="goU-wr-35O" secondAttribute="centerX" id="dMI-lK-Yg4"/>  
2004 - <constraint firstAttribute="bottom" secondItem="lNX-yU-h0E" secondAttribute="bottom" id="iPI-cp-aNR"/>  
2005 - <constraint firstItem="lNX-yU-h0E" firstAttribute="leading" secondItem="goU-wr-35O" secondAttribute="leading" id="kIp-4U-H0m"/>  
2006 - <constraint firstItem="lNX-yU-h0E" firstAttribute="top" secondItem="goU-wr-35O" secondAttribute="top" id="nL1-zM-4HZ"/>  
2007 - </constraints>  
2008 - </scrollView>  
2009 - </subviews>  
2010 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
2011 - <constraints>  
2012 - <constraint firstItem="goU-wr-35O" firstAttribute="leading" secondItem="rK8-pU-53K" secondAttribute="leading" id="JYx-Oy-LPO"/>  
2013 - <constraint firstAttribute="trailing" secondItem="goU-wr-35O" secondAttribute="trailing" id="YLG-Xf-U3c"/>  
2014 - <constraint firstItem="goU-wr-35O" firstAttribute="top" secondItem="rK8-pU-53K" secondAttribute="top" id="hG4-xE-HgK"/>  
2015 - <constraint firstItem="aD6-6d-DV6" firstAttribute="top" secondItem="goU-wr-35O" secondAttribute="bottom" id="qet-AY-cV1"/>  
2016 - </constraints>  
2017 - </view>  
2018 - <navigationItem key="navigationItem" title="Title" id="3RI-Gq-VlR"/>  
2019 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
2020 - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>  
2021 - <size key="freeformSize" width="375" height="936"/>  
2022 - <connections>  
2023 - <outlet property="accessoryView" destination="0Z8-Cj-qAK" id="snu-Lg-qMF"/>  
2024 - <outlet property="addFiledBtn" destination="pqO-yo-umd" id="kRZ-J2-xMb"/>  
2025 - <outlet property="allTimeOfLive" destination="7M7-Jd-xs6" id="0t7-uU-MwI"/>  
2026 - <outlet property="applyLiveBtn" destination="PHR-ag-hyg" id="IEP-JD-wPG"/>  
2027 - <outlet property="categoryLabel" destination="jkn-4P-F72" id="BSr-C5-MCK"/>  
2028 - <outlet property="defaultImage" destination="b1d-Mx-K15" id="Ewu-ty-7kd"/>  
2029 - <outlet property="documentTableView" destination="Xbx-Qe-cMi" id="laA-Cv-BcJ"/>  
2030 - <outlet property="documentTableViewHeight" destination="iJn-Uf-h00" id="UVi-ah-W9L"/>  
2031 - <outlet property="groupAnnouncement" destination="TiW-VB-uOE" id="eM2-5t-ZkN"/>  
2032 - <outlet property="hiddenAnnouncementLabel" destination="DEM-Ng-GHF" id="OSH-6x-6eK"/>  
2033 - <outlet property="hiddenLiveNameLabel" destination="pFN-yb-0ZP" id="i2g-Bs-V2O"/>  
2034 - <outlet property="isEveryOneCouldSpeak" destination="cbW-tG-UHt" id="q2p-CZ-k8O"/>  
2035 - <outlet property="isLookOfEveryone" destination="Suq-zY-Gxx" id="qGO-Wc-HEe"/>  
2036 - <outlet property="isRecord" destination="qX0-EU-Lcb" id="pPD-3f-RTU"/>  
2037 - <outlet property="liveImage" destination="1TQ-Zo-YPJ" id="vly-zu-XTN"/>  
2038 - <outlet property="liveNameLabel" destination="bGE-9j-Jod" id="Cdp-sd-6sC"/>  
2039 - <outlet property="scrollViewContentSizeY" destination="VIM-3A-uOb" id="UwY-L8-zZW"/>  
2040 - <outlet property="startTime" destination="gAM-jO-AiE" id="Xy2-1k-vg6"/>  
2041 - </connections>  
2042 - </viewController>  
2043 - <placeholder placeholderIdentifier="IBFirstResponder" id="vC8-it-fz2" userLabel="First Responder" sceneMemberID="firstResponder"/>  
2044 - <tapGestureRecognizer id="Sss-jf-R1T">  
2045 - <connections>  
2046 - <action selector="liveImageTapAction:" destination="jwk-18-f3u" id="4U3-PG-ehg"/>  
2047 - </connections>  
2048 - </tapGestureRecognizer>  
2049 - </objects>  
2050 - <point key="canvasLocation" x="-588" y="1728.9355322338831"/>  
2051 - </scene>  
2052 - </scenes>  
2053 - <resources>  
2054 - <image name="botoom_image" width="48" height="48"/>  
2055 - <image name="closeAlive" width="33" height="33"/>  
2056 - <image name="default" width="375" height="167"/>  
2057 - <image name="default_userRoom" width="19" height="17"/>  
2058 - <image name="examine_file" width="64" height="64"/>  
2059 - <image name="icon.png" width="80" height="80"/>  
2060 - <image name="qq" width="58" height="58"/>  
2061 - <image name="qzone" width="58" height="58"/>  
2062 - <image name="screen_full" width="33" height="33"/>  
2063 - <image name="share" width="33" height="33"/>  
2064 - <image name="sina" width="58" height="58"/>  
2065 - <image name="starLive" width="22" height="22"/>  
2066 - <image name="subTitle_on" width="33" height="33"/>  
2067 - <image name="we_session" width="39" height="39"/>  
2068 - <image name="we_timeline" width="58" height="58"/>  
2069 - <image name="上传封面.png" width="116" height="116"/>  
2070 - <image name="收拢.png" width="15" height="25"/>  
2071 - <image name="竖屏.png" width="45" height="45"/>  
2072 - <image name="观看人数.png" width="31" height="20"/>  
2073 - </resources>  
2074 -</document>  
YouerLiveVideo/YouerLiveVideo/controller/Live/LiveVideoSettingShareViewController.swift
@@ -1,216 +0,0 @@ @@ -1,216 +0,0 @@
1 -//  
2 -// LiveVideoSettingShareViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 16/11/14.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class LiveVideoSettingShareViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UIGestureRecognizerDelegate {  
12 - var definitionArr:[String] = ["标准","流畅","高清"]  
13 - var actionTableView:UITableView!  
14 - var actionTableViewLocationView:UIView!  
15 - var definition:Int=1  
16 -  
17 - @IBOutlet weak var userPhotoHeight: NSLayoutConstraint!  
18 - @IBOutlet weak var definitionSelectImage: UIImageView!  
19 - @IBOutlet weak var definitionLabel: UILabel!  
20 - @IBOutlet weak var roomName: UILabel!  
21 - @IBOutlet weak var userPhoto: UIImageView!  
22 - @IBOutlet weak var isScreenHorizontalBtn: UIButton!  
23 - @IBOutlet weak var shareView: UIView!  
24 - @IBOutlet weak var titleImage: UIImageView!  
25 - var liveDetail:LiveDetail!  
26 - override func viewDidLoad() {  
27 - super.viewDidLoad()  
28 - shareView.backgroundColor = UIColor.white.withAlphaComponent(0.7)  
29 - titleImage.sd_setImage(with: NSURL(string: liveDetail.f_LiveImg) as URL?, placeholderImage: #imageLiteral(resourceName: "defphoto.png"))  
30 - titleImage.contentMode = .scaleAspectFill  
31 - titleImage.layer.masksToBounds = true  
32 - roomName.text = liveDetail.f_LiveName  
33 - userPhoto.image = #imageLiteral(resourceName: "default_userRoom")  
34 - }  
35 -  
36 - override func viewWillAppear(_ animated: Bool) {  
37 -// if isScreenHorizontalBtn.isSelected{  
38 -// self.navigationController?.isNavigationBarHidden = true  
39 -// }else{  
40 -// self.navigationController?.isNavigationBarHidden = false  
41 -// }  
42 - }  
43 -  
44 - override func didReceiveMemoryWarning() {  
45 - super.didReceiveMemoryWarning()  
46 - // Dispose of any resources that can be recreated.  
47 - }  
48 - @IBAction func definitionSelectClickAction(_ sender: Any) {  
49 - let view = (sender as! UIGestureRecognizer).view!  
50 - creatSelectTableView()  
51 - definitionSelectImage.image = #imageLiteral(resourceName: "top_image")  
52 - actionTableView.frame = CGRect(x: view.frame.origin.x, y: view.frame.maxY, width: 100, height: 132)  
53 - }  
54 -  
55 - func creatSelectTableView(){  
56 - if actionTableViewLocationView == nil{  
57 - actionTableViewLocationView = UIView(frame: UIScreen.main.bounds)  
58 - actionTableViewLocationView.backgroundColor = UIColor.black.withAlphaComponent(0.7)  
59 - let gesture = UITapGestureRecognizer(target: self, action: #selector(LiveVideoSettingShareViewController.cancleActionTableView))  
60 - gesture.delegate = self  
61 - actionTableViewLocationView.addGestureRecognizer(gesture)  
62 - actionTableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 132), style: .plain);  
63 - actionTableView.layer.borderColor = UIColor.orange.cgColor  
64 - actionTableView.layer.borderWidth = 1  
65 - actionTableView.layer.cornerRadius = 5  
66 - actionTableView.layer.masksToBounds = true  
67 - actionTableView.delegate = self  
68 - actionTableView.dataSource = self  
69 - actionTableViewLocationView.addSubview(actionTableView)  
70 - self.view.addSubview(actionTableViewLocationView)  
71 - }else{  
72 - self.view.addSubview(actionTableViewLocationView)  
73 - }  
74 - }  
75 -  
76 - func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool{  
77 - if touch.view!.superview!.isKind(of: UITableViewCell.classForCoder()){  
78 - return false  
79 - }else{  
80 - return true  
81 - }  
82 - }  
83 -  
84 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
85 - definitionLabel.text = definitionArr[indexPath.row]  
86 - definition = indexPath.row  
87 - cancleActionTableView()  
88 - }  
89 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
90 - return definitionArr.count  
91 - }  
92 -  
93 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
94 - var cell = tableView.dequeueReusableCell(withIdentifier: "cell")  
95 - if cell == nil{  
96 - cell = UITableViewCell(style: .default, reuseIdentifier: "cell")  
97 - }  
98 - cell!.textLabel?.text = definitionArr[indexPath.row]  
99 - return cell!  
100 - }  
101 -  
102 - func cancleActionTableView(){  
103 - actionTableViewLocationView.removeFromSuperview()  
104 - definitionSelectImage.image = #imageLiteral(resourceName: "botoom_image")  
105 - }  
106 -  
107 - @IBAction func shareClickAction(_ sender: UITapGestureRecognizer) {  
108 - var platformType:UMSocialPlatformType!  
109 - var text:String = "大家快来观看,\(AppDelegate.instance().accountManager.name())正在直播"  
110 - switch sender.view!.tag {  
111 - case 100://微信朋友圈  
112 - platformType=UMSocialPlatformType.wechatTimeLine  
113 - break  
114 - case 101://微信  
115 - platformType=UMSocialPlatformType.wechatSession  
116 - text = "\(AppDelegate.instance().accountManager.name())给您分享了一个直播,快来看啊"  
117 - break  
118 - case 102://QQ空间  
119 - platformType=UMSocialPlatformType.qzone  
120 -  
121 - break  
122 - case 103://新浪微博  
123 - platformType=UMSocialPlatformType.sina  
124 - //要求text加url  
125 - break  
126 - case 104://QQ  
127 - platformType=UMSocialPlatformType.QQ  
128 - text = "\(AppDelegate.instance().accountManager.name())给您分享了一个直播,快来看啊"  
129 - break  
130 - default:  
131 - break  
132 - }  
133 - var title:String = liveDetail.f_LiveName  
134 - if liveDetail.f_LiveName.characters.count > 8{  
135 - title = (liveDetail.f_LiveName as NSString).substring(to: 7)+"..."  
136 - }  
137 - shareUrl(text: text, url: "http://www.sxspy.net/MZhiBo/Index?LiveId="+liveDetail.f_Id, VC: self, image: titleImage.image!, platformType: platformType,title:title)  
138 - }  
139 -  
140 - @IBAction func startLive(_ sender: Any) {  
141 - let formatte=DateFormatter()  
142 - formatte.dateFormat="yyyy-MM-dd HH:mm"  
143 - //开始直播按钮  
144 - switch aliveIsStartOrEnd() {  
145 - case 1:  
146 - self.view.makeToast("开始时间:\(formatte.string(from: Date(timeIntervalSince1970: JSON.fromString(jsonString: liveDetail.f_Description)!["starttime"].doubleValue/1000 as TimeInterval)))")  
147 - case 2:  
148 - self.view.makeToast("直播已结束")  
149 -  
150 - case 3:  
151 - let vc = AlivcLiveViewController(nibName: "AlivcLiveViewController", bundle: nil, url: liveDetail.f_Sid)  
152 -// vc!.isScreenHorizontal = isScreenHorizontalBtn.isSelected  
153 - vc!.isScreenHorizontal = true  
154 - vc!.liveDetail = liveDetail  
155 - vc!.title = AppDelegate.instance().accountManager.name()+"的直播间"  
156 - vc!.userNameString = AppDelegate.instance().accountManager.name()  
157 - vc!.definition = definition;  
158 - vc!.endTimer = JSON.fromString(jsonString: liveDetail.f_Description)!["endtime"].doubleValue/1000 as TimeInterval  
159 - vc!.isApplyChat = JSON.fromString(jsonString: liveDetail.f_Description)!["interactive"].boolValue  
160 - // self.navigationController?.isNavigationBarHidden = false  
161 - self.present(vc!, animated: true, completion: nil)  
162 -  
163 -  
164 - default:  
165 - break  
166 - }  
167 - }  
168 -  
169 - @IBAction func isScreenHorizontalBtnClickAction(_ sender: Any) {  
170 - isScreenHorizontalBtn.isSelected = !isScreenHorizontalBtn.isSelected  
171 - isScreenHorizontalBtn.setBackgroundImage(#imageLiteral(resourceName: "竖屏.png"), for: .normal)  
172 -  
173 -// var transform = CGAffineTransform(rotationAngle: 0)  
174 -// self.view.frame = CGRect(x:0, y:0, width:getScreenWidth(),height:getScreenHeight())  
175 -// self.navigationController?.isNavigationBarHidden = false  
176 - if isScreenHorizontalBtn.isSelected{  
177 - isScreenHorizontalBtn.setBackgroundImage(#imageLiteral(resourceName: "横屏.png"), for: .normal)  
178 -// self.navigationController?.isNavigationBarHidden = true  
179 -// transform = CGAffineTransform(rotationAngle: (CGFloat)(M_PI_2))  
180 -// self.view.frame = CGRect(x:0, y:0, width:getScreenHeight(),height:getScreenWidth())  
181 - }  
182 -// self.view.transform = transform;  
183 -// self.view.layoutSubviews()  
184 - }  
185 -  
186 - func aliveIsStartOrEnd()->Int{//0:未开始,1:已结束,2:正在直播  
187 - let formatte=DateFormatter()  
188 - formatte.dateFormat="yyyy-MM-dd HH:mm"  
189 - //开始直播按钮  
190 - let nowDate=Date()  
191 - let resultStart=nowDate.compare(Date(timeIntervalSince1970: JSON.fromString(jsonString: liveDetail.f_Description)!["starttime"].doubleValue/1000 as TimeInterval))  
192 - let resultEnd=nowDate.compare(Date(timeIntervalSince1970: JSON.fromString(jsonString: liveDetail.f_Description)!["endtime"].doubleValue/1000 as TimeInterval))  
193 - if resultStart == ComparisonResult.orderedAscending{  
194 - //还未到开始时间  
195 - return 1  
196 - }else if resultEnd == ComparisonResult.orderedDescending{  
197 - //已经结束  
198 - return 2  
199 - }else{  
200 - //可以正常直播  
201 - return 3  
202 - }  
203 - }  
204 -  
205 - /*  
206 - // MARK: - Navigation  
207 -  
208 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
209 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {  
210 - // Get the new view controller using segue.destinationViewController.  
211 - // Pass the selected object to the new view controller.  
212 - }  
213 - */  
214 -  
215 -}  
216 -  
YouerLiveVideo/YouerLiveVideo/controller/Live/LiveVideoSettingViewController.swift
@@ -1,436 +0,0 @@ @@ -1,436 +0,0 @@
1 -//  
2 -// LiveVideoSettingViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 16/11/10.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class LiveVideoSettingViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate,ZSDSetPasswordViewDelegate,UITextViewDelegate,UITableViewDelegate,UITableViewDataSource{  
12 - @IBOutlet var defaultImage: UIImageView!  
13 - @IBOutlet var applyLiveBtn: UIButton!  
14 - @IBOutlet weak var addFiledBtn: UIButton!  
15 - @IBOutlet var isRecord: UISwitch! //是否录制  
16 - @IBOutlet weak var isEveryOneCouldSpeak: UISwitch!//是否支持互动  
17 - @IBOutlet weak var isLookOfEveryone: UISwitch!//是否公开  
18 - @IBOutlet weak var startTime: UIButton!  
19 - var startDate:Date?  
20 - @IBOutlet weak var allTimeOfLive: UIButton!  
21 - var endDate:Date?  
22 - @IBOutlet var hiddenAnnouncementLabel: UILabel!  
23 - @IBOutlet weak var groupAnnouncement: UITextView!  
24 - @IBOutlet weak var liveImage: UIImageView! //直播间封面  
25 -  
26 - @IBOutlet weak var hiddenLiveNameLabel: UILabel!  
27 - @IBOutlet weak var liveNameLabel: UITextView!//直播间名称  
28 - @IBOutlet var categoryLabel: UILabel! //直播间分类  
29 - @IBOutlet weak var accessoryView: UIView!  
30 - @IBOutlet var documentTableView: UITableView!  
31 - var documentArray:[FileInfor]=[]  
32 - @IBOutlet var documentTableViewHeight: NSLayoutConstraint!  
33 - @IBOutlet weak var scrollViewContentSizeY: NSLayoutConstraint!  
34 - var passWord:String!  
35 - var isSetPassWord:Bool = false  
36 - var fileImage:String=""//上传后的照片  
37 - var liveDetail:LiveDetail?//若是修改直播间信息则有这个参数  
38 - var category:String="" //分类ID  
39 - var categoryName:String="" //分类名称  
40 - override func viewDidLoad() {  
41 - super.viewDidLoad()  
42 - applyLiveBtn.layer.borderWidth = 1  
43 - applyLiveBtn.layer.borderColor = UIColor.groupTableViewBackground.cgColor  
44 - addFiledBtn.layer.cornerRadius = 5  
45 - addFiledBtn.layer.masksToBounds = true  
46 - NotificationCenter.default.addObserver(self, selector: #selector(LiveVideoSettingViewController.KeyboardWillChangeFrame(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)  
47 - var defaultHeight:CGFloat=616+100//有附件了 +50  
48 - if let item = liveDetail {  
49 - category=item.f_Category  
50 - categoryName=item.f_CategoryName  
51 - if item.f_IsExamine==0{ //未审核  
52 - applyLiveBtn.setTitle("修改直播", for: UIControlState.normal)  
53 - }else{//item.f_IsExamine=2 未通过  
54 - defaultHeight=586  
55 - self.view.isUserInteractionEnabled=false  
56 - applyLiveBtn.isHidden=true  
57 - }  
58 - fileImage=item.f_LiveImg  
59 - defaultImage.sd_setImage(with: URL(string: item.f_LiveImg), placeholderImage: UIImage(named:"default"))  
60 - liveNameLabel.text=item.f_LiveName  
61 - if let json=JSON.fromString(jsonString: item.f_Description){  
62 - hiddenAnnouncementLabel.isHidden=true  
63 - groupAnnouncement.text=json["announcement"].stringValue  
64 - let formatte=DateFormatter()  
65 - formatte.dateFormat="yyyy-MM-dd HH:mm"  
66 - startDate=Date(timeIntervalSince1970: json["starttime"].doubleValue/1000 as TimeInterval)  
67 - self.startTime.setTitle("\(formatte.string(from: startDate!))", for: .normal)  
68 - endDate=Date(timeIntervalSince1970: json["endtime"].doubleValue/1000 as TimeInterval)  
69 - self.allTimeOfLive.setTitle("\(formatte.string(from: endDate!))", for: .normal)  
70 - if json["record"] != nil{  
71 - isRecord.isOn=json["record"].boolValue  
72 - }else{  
73 - isRecord.isOn=true  
74 - }  
75 - isLookOfEveryone.isOn=json["Public"].boolValue  
76 - if !isLookOfEveryone.isOn {  
77 - if self.zsdView != nil {  
78 - self.zsdView.passwordTextField.text=json["roompasswd"].stringValue  
79 - }else{  
80 - passWord=json["roompasswd"].stringValue  
81 - }  
82 - }  
83 - isEveryOneCouldSpeak.isOn=json["interactive"].boolValue  
84 - let doc = json["attachFiles"].arrayValue  
85 - for item in doc{  
86 - documentArray.append(FileInfor(json: item))  
87 - }  
88 - if documentArray.count>0 {  
89 - accessoryView.isHidden=false  
90 - documentTableViewHeight.constant=CGFloat(documentArray.count)*44  
91 - defaultHeight=defaultHeight+(CGFloat(documentArray.count)*44+50)  
92 - }  
93 - }  
94 - }  
95 - if defaultHeight >= getScreenHeight()-64{  
96 - scrollViewContentSizeY.constant = defaultHeight  
97 - }else{  
98 - scrollViewContentSizeY.constant = getScreenHeight()-64  
99 - }  
100 - }  
101 - override func viewWillAppear(_ animated: Bool) {  
102 - super.viewWillAppear(animated)  
103 - categoryLabel.text=categoryName  
104 - }  
105 - func KeyboardWillChangeFrame(_ noti:NSNotification){  
106 - if isSetPassWord{  
107 - let info = noti.userInfo  
108 - let endFrame = info![UIKeyboardFrameEndUserInfoKey] as! NSValue  
109 - let dur = info![UIKeyboardAnimationDurationUserInfoKey]  
110 - UIView.animate(withDuration: dur as! TimeInterval, animations: { () -> Void in  
111 - self.zsdView.frame.origin.y = (endFrame.cgRectValue.origin.y - 100)/2  
112 - })  
113 - }  
114 - }  
115 -  
116 - override func didReceiveMemoryWarning() {  
117 - super.didReceiveMemoryWarning()  
118 - // Dispose of any resources that can be recreated.  
119 - }  
120 - // MARK: - 点击直播封面设置按钮  
121 - @IBAction func liveImageTapAction(_ sender: AnyObject) {  
122 - self.view.endEditing(true)  
123 - let action=UIAlertController(title:nil,message:nil,preferredStyle:.actionSheet)  
124 - let cameraAction=UIAlertAction(title: "拍照", style: UIAlertActionStyle.default) { (action) in  
125 - if cameraOrPhotPermissions(1, view: self.view){  
126 - let vc = UIImagePickerController()  
127 - vc.delegate = self  
128 - vc.sourceType = .camera  
129 - self.present(vc, animated: true, completion: nil)  
130 - }  
131 - }  
132 - let photoAction=UIAlertAction(title: "从相册选择", style: UIAlertActionStyle.default) { (action) in  
133 - if cameraOrPhotPermissions(0, view: self.view){  
134 - let vc = UIImagePickerController()  
135 - vc.delegate = self  
136 - vc.sourceType = .photoLibrary  
137 - self.present(vc, animated: true, completion: nil)  
138 - }  
139 - }  
140 - let cancleAction=UIAlertAction(title: "取消", style: UIAlertActionStyle.cancel) { (action) in  
141 - }  
142 - action.addAction(cameraAction)  
143 - action.addAction(photoAction)  
144 - action.addAction(cancleAction)  
145 - self.present(action, animated: true, completion: nil)  
146 - }  
147 - // MARK: - 选择图片  
148 - func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {  
149 - picker.dismiss(animated: true, completion: { () -> Void in  
150 - var oimage = info[UIImagePickerControllerOriginalImage] as? UIImage  
151 - oimage = oimage!.imageScaledToScale()  
152 - let filePath=FilesManager.imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))  
153 - try? UIImageJPEGRepresentation(oimage!,0.7)!.write(to: URL(fileURLWithPath: filePath), options: [.atomic])  
154 - self.defaultImage.image = oimage  
155 - self.updateImage(file: filePath)  
156 - })  
157 - }  
158 - func updateImage(file:String){  
159 - SVProgressHUD.show(withStatus: "图片上传中...")  
160 - SVProgressHUD.setDefaultMaskType(.black)  
161 - AppDelegate.instance().httpServer.uploadFile(file: NSURL(fileURLWithPath: file)) { (str, error) in  
162 - SVProgressHUD.dismiss()  
163 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
164 - let str=json.contentData().arrayValue[0].stringValue  
165 - self.fileImage=str  
166 - }, failHandler: { (error) in  
167 - self.fileImage=""  
168 - self.view.makeToast("图片上传失败:\(error.localizedDescription)")  
169 - })  
170 - }  
171 - }  
172 - // MARK: - 点击直播分类选择分类  
173 - @IBAction func selectCategoryAction(_ sender: UIButton) {  
174 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MoreViewController") as! MoreViewController  
175 - vc.superVC=self  
176 - self.navigationController!.pushViewController(vc, animated: true)  
177 - }  
178 - // MARK: - 点击开始时间选择按钮  
179 - @IBAction func startTimeClickAction(_ sender: AnyObject) {  
180 - self.view.endEditing(true)  
181 - let datePicker=UIDatePicker()  
182 - datePicker.datePickerMode=UIDatePickerMode.dateAndTime  
183 - datePicker.date = Date(timeIntervalSinceNow: 60)  
184 - datePicker.frame=CGRect(x: 0,y: 40,width: 270,height: 150)  
185 - let alertController=UIAlertController(title: "请选择\n\n\n\n\n\n",message: nil,preferredStyle: .alert)  
186 - let callActionHandler = { (action:UIAlertAction!) -> Void in  
187 - let result = datePicker.date.compare(Date())  
188 - if result == ComparisonResult.orderedAscending {  
189 - self.view.makeToast("请选择正确开始时间")  
190 - self.startTime.setTitle("请选择", for: .normal)  
191 - self.startDate=nil  
192 - return  
193 - }  
194 - let formatte=DateFormatter()  
195 - formatte.dateFormat="yyyy-MM-dd HH:mm"  
196 - print("\(formatte.string(from: datePicker.date))")  
197 - self.startTime.setTitle("\(formatte.string(from: datePicker.date))", for: .normal)  
198 - self.startDate=datePicker.date  
199 - }  
200 - let cancelAction=UIAlertAction(title: "取消",style: .default, handler: nil)  
201 - let action=UIAlertAction(title: "确定",style: .default, handler: callActionHandler)  
202 - alertController.view.addSubview(datePicker)  
203 - alertController.addAction(cancelAction)  
204 - alertController.addAction(action)  
205 - self.present(alertController, animated: true, completion: nil)  
206 - }  
207 - // MARK: - 点击结束时间选择按钮  
208 - @IBAction func allTimeClickAction(_ sender: AnyObject) {  
209 - self.view.endEditing(true)  
210 - let datePicker=UIDatePicker()  
211 - datePicker.datePickerMode=UIDatePickerMode.dateAndTime  
212 - if startDate == nil{  
213 - datePicker.date = Date(timeIntervalSinceNow: 4*60*60)  
214 - }else{  
215 - datePicker.date = Date(timeInterval: 4*60*60, since: startDate!)  
216 - }  
217 - datePicker.frame=CGRect(x: 0,y: 40,width: 270,height: 150)  
218 - let locale = Locale(identifier: "zh_CH")  
219 - datePicker.locale = locale  
220 - let alertController=UIAlertController(title: "请选择\n\n\n\n\n\n",message: nil,preferredStyle: .alert)  
221 - let callActionHandler = { (action:UIAlertAction!) -> Void in  
222 - if let start=self.startDate{  
223 - let result = datePicker.date.compare(start)  
224 - if result == ComparisonResult.orderedAscending {  
225 - self.view.makeToast("请选择正确结束时间")  
226 - self.allTimeOfLive.setTitle("请选择", for: .normal)  
227 - self.endDate=nil  
228 - return  
229 - }else if datePicker.date.timeIntervalSince(start)>4*60*60 {  
230 - self.view.makeToast("直播时长最大为4小时")  
231 - return  
232 - }  
233 - let formatte=DateFormatter()  
234 - formatte.dateFormat="yyyy-MM-dd HH:mm"  
235 - self.allTimeOfLive.setTitle("\(formatte.string(from: datePicker.date))", for: .normal)  
236 - self.endDate=datePicker.date  
237 - }else{  
238 - self.view.makeToast("请选择正确开始时间")  
239 - }  
240 - }  
241 - let cancelAction=UIAlertAction(title: "取消",style: .default, handler: nil)  
242 - let action=UIAlertAction(title: "确定",style: .default, handler: callActionHandler)  
243 - alertController.view.addSubview(datePicker)  
244 - alertController.addAction(cancelAction)  
245 - alertController.addAction(action)  
246 - self.present(alertController, animated: true, completion: nil)  
247 - }  
248 - // MARK: - 文档TableViewDelegate,TableViewDataSource  
249 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
250 - //点击文档下载并打开  
251 - let item=documentArray[indexPath.row]  
252 - let down=DownLoad.share  
253 - down.superVC=self  
254 - down.downLoadWithUrl(url: item.url)  
255 - }  
256 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
257 - return documentArray.count  
258 - }  
259 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
260 - let item=documentArray[indexPath.row]  
261 - let cell=tableView.dequeueReusableCell(withIdentifier: "documentTableViewCell", for: indexPath) as! documentTableViewCell  
262 - cell.iconImageView.image=UIImage(named: selectImageFromString(string: item.name))  
263 - cell.titleLabel.text=item.name  
264 - return cell  
265 - }  
266 - // MARK: - 底部申请直播按钮  
267 - @IBAction func applyLiveBtnClickAction(_ sender: AnyObject) {  
268 - //申请直播  
269 - if liveNameLabel.text == ""{  
270 - AppDelegate.instance().window?.makeToast("直播间名字不能为空")  
271 - return  
272 - }  
273 - if category=="" {  
274 - AppDelegate.instance().window?.makeToast("直播间分类不能为空")  
275 - return  
276 - }  
277 - if fileImage == ""{  
278 - AppDelegate.instance().window?.makeToast("直播间封面图片不能为空")  
279 - return  
280 - }  
281 - if startDate == nil || endDate == nil{  
282 - AppDelegate.instance().window?.makeToast("直播间开始结束时间不能为空")  
283 - return  
284 - }  
285 - var loadText:String=""  
286 - var parameters:Dictionary<String,AnyObject>  
287 - if liveDetail != nil {  
288 - loadText="修改直播"  
289 - parameters=["f_Id":liveDetail!.f_Id as AnyObject,"f_LiveName":liveNameLabel.text! as AnyObject,"f_LiveImg":fileImage as AnyObject,"f_Description":toJSON() as AnyObject,"f_Category":category as AnyObject]  
290 - }else{  
291 - loadText="申请直播"  
292 - parameters=["f_LiveName":liveNameLabel.text! as AnyObject,"f_LiveImg":fileImage as AnyObject,"f_Description":toJSON() as AnyObject,"f_Category":category as AnyObject]  
293 - }  
294 - SVProgressHUD.show(withStatus: "\(loadText)...")  
295 - SVProgressHUD.setDefaultMaskType(.black)  
296 - if liveDetail != nil {  
297 - AppDelegate.instance().httpServer.postUpdateLive(parameters: parameters) { (str, error) in  
298 - SVProgressHUD.dismiss()  
299 - if error==nil {  
300 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
301 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
302 - self.navigationController!.popViewController(animated: true)  
303 - AppDelegate.instance().window?.makeToast("修改直播成功,请等待审核")  
304 - }, failHandler: { (error) in  
305 - self.view.makeToast("修改直播失败:\(error.localizedDescription)")  
306 - })  
307 - }else{  
308 - self.view.makeToast("修改直播失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
309 - }  
310 - }else{  
311 - self.view.makeToast("修改直播失败:\(error!.description)")  
312 - }  
313 - }  
314 - }else{  
315 - AppDelegate.instance().httpServer.postCreateLive(parameters: parameters) { (str, error) in  
316 - SVProgressHUD.dismiss()  
317 - if error==nil {  
318 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
319 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
320 - self.navigationController!.popToRootViewController(animated: true)  
321 - AppDelegate.instance().window?.makeToast("申请直播成功,请等待审核")  
322 - }, failHandler: { (error) in  
323 - self.view.makeToast("申请直播失败:\(error.localizedDescription)")  
324 - })  
325 - }else{  
326 - self.view.makeToast("申请直播失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
327 - }  
328 - }else{  
329 - self.view.makeToast("申请直播失败:\(error!.description)")  
330 - }  
331 - }  
332 - }  
333 - }  
334 - func toJSON()->String{  
335 - var info=Dictionary<String,AnyObject>()  
336 - info["announcement"]=groupAnnouncement.text as AnyObject?//公告  
337 - info["starttime"]=(startDate?.timeIntervalSince1970)!*1000 as AnyObject?//毫秒单位 long类型  
338 - info["endtime"]=(endDate?.timeIntervalSince1970)!*1000 as AnyObject?//结束时间 long类型  
339 - info["record"]=isRecord.isOn as AnyObject? //是否录制  
340 - info["Public"]=isLookOfEveryone.isOn as AnyObject? //是否公开  
341 - info["interactive"]=isEveryOneCouldSpeak.isOn as AnyObject? //是否互动  
342 - if !isLookOfEveryone.isOn {  
343 - info["roompasswd"] = self.zsdView != nil ? self.zsdView.passwordTextField.text! as AnyObject? : passWord as AnyObject? //房间密码  
344 - }  
345 - if documentArray.count>0 {  
346 - info["attachFiles"]=JSON.fromString(jsonString: liveDetail!.f_Description)!["attachFiles"].stringValue as AnyObject  
347 - }  
348 - return JSON(info).rawString() ?? "{}"  
349 - }  
350 - @IBAction func addFileClickAction(_ sender: AnyObject) {  
351 -  
352 - }  
353 - var zsdView:ZSDSetPasswordView!  
354 - var zsdbackView:UIView!  
355 - @IBAction func lookOfEveryoneBtnClickAction(_ sender: AnyObject) {  
356 - let switchs = sender as! UISwitch  
357 - isSetPassWord = true  
358 - if !switchs.isOn{  
359 - if zsdbackView == nil{  
360 - creatZSDView()  
361 - }else{  
362 - zsdView.clearUpPassword()  
363 - zsdView.fieldBecomeFirstResponder()  
364 - self.view.addSubview(zsdbackView)  
365 - }  
366 - }  
367 -  
368 - }  
369 -  
370 - func creatZSDView(){  
371 - let zsdViewWidth :CGFloat = 200  
372 - zsdbackView = UIView(frame: UIScreen.main.bounds)  
373 - zsdbackView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(LiveVideoSettingViewController.cancleZSDView)))  
374 - zsdbackView.backgroundColor = UIColor.black.withAlphaComponent(0.7)  
375 - zsdView = ZSDSetPasswordView(frame: CGRect(x: (getScreenWidth()-zsdViewWidth)/2, y: 0, width: zsdViewWidth, height: 90))  
376 - zsdView.delegate = self  
377 - zsdView.layer.masksToBounds = true  
378 - zsdView.layer.cornerRadius = 5  
379 - zsdView.fieldBecomeFirstResponder()  
380 - let title = UILabel(frame: CGRect(x: (zsdViewWidth - 100)/2, y: 5, width: 100, height: 30))  
381 - title.text = "请输入密码"  
382 - zsdView.addSubview(title)  
383 - zsdbackView.addSubview(zsdView)  
384 - self.view.addSubview(zsdbackView)  
385 - }  
386 -  
387 - func passwordView(_ passwordView: ZSDSetPasswordView!, inputPassword password: String!) {  
388 - passWord = password  
389 - removeZSDView()  
390 - }  
391 -  
392 - func cancleZSDView(){  
393 - if passWord == nil||passWord.characters.count < 4{  
394 - isLookOfEveryone.isOn = true  
395 - }  
396 - removeZSDView()  
397 - }  
398 -  
399 - func removeZSDView(){  
400 - isSetPassWord = false  
401 - zsdView.passwordTextField.resignFirstResponder()  
402 - zsdbackView.removeFromSuperview()  
403 -  
404 - }  
405 -  
406 - func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {  
407 - if text == "\n"{  
408 - textView.resignFirstResponder()  
409 - return false  
410 - }  
411 - return true  
412 - }  
413 - func textViewDidChange(_ textView: UITextView) {  
414 - var num = 40  
415 - var str = "直播间名字字数不能超过40字"  
416 - if textView == liveNameLabel{  
417 - hiddenLiveNameLabel.isHidden=(textView.text.characters.count > 0)  
418 - }else{  
419 - num = 200  
420 - str = "公告字数不能超过200字"  
421 - hiddenAnnouncementLabel.isHidden=(textView.text.characters.count > 0)  
422 - }  
423 - if textView.text.characters.count > num{  
424 - textView.text = (textView.text as NSString).substring(to: num)  
425 - textView.resignFirstResponder()  
426 - let alert = UIAlertController(title: "提示", message: str, preferredStyle: .alert)  
427 - alert.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))  
428 - self.present(alert, animated: true, completion: nil)  
429 - }  
430 - }  
431 -  
432 -}  
433 -class documentTableViewCell: UITableViewCell {  
434 - @IBOutlet var iconImageView: UIImageView!  
435 - @IBOutlet var titleLabel: UILabel!  
436 -}  
YouerLiveVideo/YouerLiveVideo/controller/Live/PassWordView.swift
@@ -1,61 +0,0 @@ @@ -1,61 +0,0 @@
1 -//  
2 -// PassWordView.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 17/1/22.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class PassWordView: UIView ,ZSDSetPasswordViewDelegate{  
12 -  
13 - @IBOutlet weak var zsdView: ZSDSetPasswordView!  
14 - var superVC:UIViewController!  
15 - var passWord:String!  
16 - var delegate:PassWordEnterViewDelegate!  
17 - /*  
18 - // Only override draw() if you perform custom drawing.  
19 - // An empty implementation adve rsely affects performance during animation.  
20 - override func draw(_ rect: CGRect) {  
21 - // Drawing code  
22 - }  
23 - */  
24 - override func awakeFromNib() {  
25 - NotificationCenter.default.addObserver(self, selector: #selector(PassWordView.KeyboardWillChangeFrame(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)  
26 - zsdView.delegate = self  
27 -  
28 - zsdView.frame = CGRect(x: (getScreenWidth()-200)/2, y: 0, width: 200, height: 90)  
29 - zsdView.layer.masksToBounds = true  
30 - zsdView.layer.cornerRadius = 5  
31 - zsdView.fieldBecomeFirstResponder()  
32 -  
33 - let title = UILabel(frame: CGRect(x: (200 - 100)/2, y: 5, width: 100, height: 30))  
34 - title.text = "请输入密码"  
35 - zsdView.addSubview(title)  
36 - self.addSubview(zsdView)  
37 - }  
38 -  
39 - func KeyboardWillChangeFrame(_ noti:NSNotification){  
40 - let info = noti.userInfo  
41 - let endFrame = info![UIKeyboardFrameEndUserInfoKey] as! NSValue  
42 - let dur = info![UIKeyboardAnimationDurationUserInfoKey]  
43 - UIView.animate(withDuration: dur as! TimeInterval, animations: { () -> Void in  
44 - self.zsdView.frame.origin.y = (endFrame.cgRectValue.origin.y - 100)/2  
45 - })  
46 - }  
47 -  
48 - @IBAction func tapClick(_ sender: Any) {  
49 - self.removeFromSuperview()  
50 - }  
51 -  
52 - func passwordView(_ passwordView: ZSDSetPasswordView!, inputPassword password: String!) {  
53 - if delegate != nil{  
54 - delegate.passwordView(password)  
55 - }  
56 - }  
57 -}  
58 -  
59 -public protocol PassWordEnterViewDelegate : NSObjectProtocol {  
60 - func passwordView(_ password: String!)  
61 -}  
YouerLiveVideo/YouerLiveVideo/controller/Live/PassWordView.xib
@@ -1,36 +0,0 @@ @@ -1,36 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
2 -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11542" systemVersion="15G31" 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="11524"/>  
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 contentMode="scaleToFill" id="iN0-l3-epB" customClass="PassWordView" customModule="YouerLiveVideo" customModuleProvider="target">  
14 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
15 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
16 - <subviews>  
17 - <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BEL-mr-Ny5" customClass="ZSDSetPasswordView">  
18 - <rect key="frame" x="87.5" y="288.5" width="200" height="90"/>  
19 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
20 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
21 - </view>  
22 - </subviews>  
23 - <color key="backgroundColor" white="0.0" alpha="0.22880595438918913" colorSpace="calibratedWhite"/>  
24 - <gestureRecognizers/>  
25 - <connections>  
26 - <outlet property="zsdView" destination="BEL-mr-Ny5" id="LDH-Il-CEp"/>  
27 - <outletCollection property="gestureRecognizers" destination="NkT-gQ-zHa" appends="YES" id="zen-Fy-QcB"/>  
28 - </connections>  
29 - </view>  
30 - <tapGestureRecognizer id="NkT-gQ-zHa">  
31 - <connections>  
32 - <action selector="tapClick:" destination="iN0-l3-epB" id="DDe-4T-dWB"/>  
33 - </connections>  
34 - </tapGestureRecognizer>  
35 - </objects>  
36 -</document>  
YouerLiveVideo/YouerLiveVideo/controller/LiveRoomDetailViewController.swift
@@ -1,57 +0,0 @@ @@ -1,57 +0,0 @@
1 -//  
2 -// LiveRoomDetailViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 16/11/11.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class LiveRoomDetailViewController: UIViewController {  
12 - @IBOutlet var personIcon: UIImageView!  
13 - @IBOutlet var personNameLabel: UILabel!  
14 - @IBOutlet var startTimeLabel: UILabel!  
15 - @IBOutlet var coverImage: UIImageView!  
16 - @IBOutlet var imageH: NSLayoutConstraint!  
17 - @IBOutlet var announcementLabel: UILabel!  
18 - @IBOutlet var startDetailTimeLabel: UILabel!  
19 - @IBOutlet var endDetailTimeLabel: UILabel!  
20 - @IBOutlet var isPublic: UILabel!  
21 - @IBOutlet var isInteractive: UILabel!  
22 - @IBOutlet var isExamineLabel: UILabel!  
23 - @IBOutlet var scrollContentViewH: NSLayoutConstraint!  
24 - @IBOutlet var attachViewH: NSLayoutConstraint!//附件所在View的高度  
25 - var item:LiveDetail!//直播间详情  
26 - let formatte=DateFormatter()  
27 - override func viewDidLoad() {  
28 - super.viewDidLoad()  
29 - attachViewH.constant=0  
30 - formatte.dateFormat="yyyy-MM-dd HH:mm:ss"  
31 - personNameLabel.text=AppDelegate.instance().accountManager.name()  
32 - startTimeLabel.text=formatte.string(from: Date(timeIntervalSince1970: JSON.fromString(jsonString: item.f_Description)!["starttime"].doubleValue/1000 as TimeInterval))  
33 - coverImage.sd_setImage(with: URL(string:item.f_LiveImg), placeholderImage: UIImage(named:"icon"))  
34 - announcementLabel.text=JSON.fromString(jsonString: item.f_Description)!["announcement"].stringValue  
35 - startDetailTimeLabel.text=formatte.string(from: Date(timeIntervalSince1970: JSON.fromString(jsonString: item.f_Description)!["starttime"].doubleValue/1000 as TimeInterval))  
36 - endDetailTimeLabel.text=formatte.string(from: Date(timeIntervalSince1970: JSON.fromString(jsonString: item.f_Description)!["endtime"].doubleValue/1000 as TimeInterval))  
37 - isPublic.text = JSON.fromString(jsonString: item.f_Description)!["Public"].boolValue ? "是" : "否"  
38 - isInteractive.text = JSON.fromString(jsonString: item.f_Description)!["interactive"].boolValue ? "是" : "否"  
39 - isExamineLabel.text = item.f_IsExamine==0 ? "待审核" : "审核未通过"  
40 - imageH.constant=getScreenWidth()  
41 - scrollContentViewH.constant=50+imageH.constant+250  
42 - }  
43 - @IBAction func backAction(_ sender: UIBarButtonItem) {  
44 - self.navigationController!.popViewController(animated: true)  
45 - }  
46 -  
47 -  
48 -  
49 -  
50 -  
51 -  
52 -  
53 -  
54 - override func didReceiveMemoryWarning() {  
55 - super.didReceiveMemoryWarning()  
56 - }  
57 -}  
YouerLiveVideo/YouerLiveVideo/controller/LiveTypeListViewController.swift
@@ -1,135 +0,0 @@ @@ -1,135 +0,0 @@
1 -//  
2 -// LiveTypeListViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/20.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class LiveTypeListViewController: UIViewController,UITableViewDelegate,UITableViewDataSource ,PassWordEnterViewDelegate{  
12 - var isType:Bool=true //Typ分类的,Org机构的  
13 - var F_OrganizeId:String=""  
14 - var F_LiveType:String=""  
15 - var Lives:[LiveDetail]=[]  
16 - var index:Int=0  
17 - @IBOutlet var tableView: UITableView!  
18 - var passWordView:PassWordView!  
19 - override func viewDidLoad() {  
20 - super.viewDidLoad()  
21 - passWordView = Bundle.main.loadNibNamed("PassWordView", owner: nil, options: nil)?[0] as! PassWordView  
22 - passWordView.delegate = self  
23 - tableView.register(UINib(nibName: "HomeTableViewCell", bundle: nil), forCellReuseIdentifier: "cell")  
24 - let header=MJRefreshNormalHeader(refreshingBlock: {  
25 - self.index=0  
26 - self.getHotLiveList { (success) in  
27 - self.tableView.mj_header.endRefreshing()  
28 - }  
29 - })  
30 - header?.lastUpdatedTimeLabel.isHidden=true  
31 - tableView.mj_header=header  
32 - tableView.mj_footer=MJRefreshBackNormalFooter(refreshingBlock: {  
33 - self.getHotLiveList { (success) in  
34 - self.tableView.mj_footer.endRefreshing()  
35 - }  
36 - })  
37 - getHotLiveList { (success) in  
38 - }  
39 - }  
40 - func getHotLiveList(completionHandler:@escaping (Bool) -> ()){  
41 - SVProgressHUD.show(withStatus: "加载中...")  
42 - SVProgressHUD.setDefaultMaskType(.black)  
43 - var parameters:Dictionary<String,AnyObject>=[:]  
44 - var name:String=""  
45 - if isType {  
46 - name="分类"  
47 - parameters=["PageIndex":index as AnyObject,"PageSize":10 as AnyObject,"WhatLive":"Typ" as AnyObject,"F_LiveType":F_LiveType as AnyObject]  
48 - }else{  
49 - name="学校"  
50 - parameters=["PageIndex":index as AnyObject,"PageSize":10 as AnyObject,"WhatLive":"Org" as AnyObject,"F_OrganizeId":F_OrganizeId as AnyObject]  
51 - }  
52 - AppDelegate.instance().httpServer.getLive(parameters: parameters, completionHandler: { (str, error) in  
53 - var success:Bool=true  
54 - SVProgressHUD.dismiss()  
55 - if error==nil {  
56 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
57 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
58 - success=true  
59 - let lives=LiveDetail.getAllLives(j: json)  
60 - if lives.count>0{  
61 - self.index+=1  
62 - if self.index==1 {  
63 - self.Lives=lives  
64 - }else{  
65 - self.Lives+=lives  
66 - }  
67 - }  
68 - self.tableView.reloadData()  
69 - }, failHandler: { (error) in  
70 - success=false  
71 - AppDelegate.instance().window?.makeToast("获取\(name)列表失败:\(error.localizedDescription)")  
72 - })  
73 - }else{  
74 - success=false  
75 - AppDelegate.instance().window?.makeToast("获取\(name)列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
76 - }  
77 - }else{  
78 - success=false  
79 - AppDelegate.instance().window?.makeToast("获取\(name)列表失败:\(error!.description)")  
80 - }  
81 - completionHandler(success)  
82 - })  
83 - }  
84 - var selectLiv:LiveDetail!  
85 -  
86 - // MARK: - UITableViewDataSource,UITableViewDelegate  
87 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
88 - selectLiv=Lives[indexPath.row]  
89 - let dic = JSON.fromString(jsonString: selectLiv.f_Description)!  
90 - if dic["Public"].boolValue{  
91 - persentToMoivePlayer(from: self, liv: selectLiv)  
92 - }else{  
93 - passWordView.passWord = dic["roompasswd"].stringValue  
94 - passWordView.zsdView.clearUpPassword()  
95 - passWordView.zsdView.passwordTextField.becomeFirstResponder()  
96 - self.view.addSubview(passWordView)  
97 - }  
98 -  
99 - }  
100 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
101 - return Lives.count  
102 - }  
103 - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  
104 - //return 70+getScreenWidth()/2  
105 - return 331  
106 - }  
107 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
108 - let cell=tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! HomeTableViewCell  
109 - cell.setUpWith(item: Lives[indexPath.row])  
110 - return cell  
111 - }  
112 -  
113 - func passwordView(_ password: String!) {  
114 - passWordView.zsdView.passwordTextField.resignFirstResponder()  
115 - persentToMoivePlayer(from: self, liv: selectLiv)  
116 - passWordView.removeFromSuperview()  
117 - }  
118 -  
119 - override func didReceiveMemoryWarning() {  
120 - super.didReceiveMemoryWarning()  
121 - // Dispose of any resources that can be recreated.  
122 - }  
123 -  
124 -  
125 - /*  
126 - // MARK: - Navigation  
127 -  
128 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
129 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {  
130 - // Get the new view controller using segue.destinationViewController.  
131 - // Pass the selected object to the new view controller.  
132 - }  
133 - */  
134 -  
135 -}  
YouerLiveVideo/YouerLiveVideo/controller/MainViewController.swift
@@ -1,94 +0,0 @@ @@ -1,94 +0,0 @@
1 -//  
2 -// MainViewController.swift  
3 -// XSTLive  
4 -//  
5 -// Created by 葛建军 on 16/11/9.  
6 -// Copyright © 2016年 HANGZHOUTEAM. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class MainViewController: UITabBarController,UITabBarControllerDelegate {  
12 - var button:UIButton!  
13 - override func viewDidLoad() {  
14 - super.viewDidLoad()  
15 - let backButton=UIBarButtonItem()  
16 - backButton.title="返回"  
17 - self.navigationItem.backBarButtonItem=backButton  
18 - self.title="教育视频云"  
19 - self.configTheme()  
20 - self.tabBar.tintColor = Theme.topBarColor()  
21 - tabBar.barTintColor = UIColor.white  
22 - // 添加突出按钮  
23 -// addCenterButtonWithImage(UIImage(named: "开始直播")!, selectedImage: UIImage(named: "psb.jpg")!)  
24 - // UITabBarControllerDelegate 指定为自己  
25 - self.delegate = self  
26 - //指定当前页——中间页  
27 - self.selectedIndex = 0  
28 - //设点button状态  
29 -// button.isSelected = true  
30 -  
31 - let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))  
32 - imageView.image = UIImage(named: "icon")  
33 - self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: imageView)  
34 - //1消息 2通讯录 3动态 4我的 storyboard里设置selectedImage没用,这里设置下,顺便排个序  
35 - let items=tabBar.items  
36 - tabBar.tintColor = Theme.topBarColor()  
37 - for item in items!{  
38 - switch item.tag{  
39 - case 1:  
40 - item.selectedImage=UIImage(named:"视窗")!.withRenderingMode(UIImageRenderingMode.alwaysTemplate)  
41 - case 2:  
42 - item.selectedImage=UIImage(named:"首页")!.withRenderingMode(UIImageRenderingMode.alwaysTemplate)  
43 - default:  
44 - break  
45 - }  
46 - }  
47 - }  
48 -// // MARK: - addCenterButton  
49 -// func addCenterButtonWithImage(_ buttonImage:UIImage,selectedImage:UIImage){  
50 -// button = UIButton(type: UIButtonType.custom)  
51 -// button.addTarget(self, action: #selector(MainViewController.pressChange(_:)), for: UIControlEvents.touchUpInside)  
52 -// button.autoresizingMask = [.flexibleRightMargin,.flexibleLeftMargin,.flexibleTopMargin,.flexibleBottomMargin]  
53 -// // 设定button大小为适应图片  
54 -// button.frame = CGRect(x: 0.0, y: 0.0, width: 75,height: 75)//buttonImage.size.width, buttonImage.size.height)  
55 -// button.setImage(buttonImage, for: UIControlState())  
56 -//// button.setImage(selectedImage, forState: UIControlState.Selected)  
57 -// // 这个比较恶心 去掉选中button时候的阴影  
58 -// button.adjustsImageWhenHighlighted = false  
59 -// /*  
60 -// * 核心代码:设置button的center 和 tabBar的 center 做对齐操作, 同时做出相对的上浮  
61 -// */  
62 -// var center = self.tabBar.center  
63 -// center.y = center.y - self.tabBar.frame.size.height/2  
64 -// button.center = center  
65 -// self.view.addSubview(button)  
66 -// }  
67 - //点击中间按钮  
68 -// func pressChange(_ sender:UIButton){  
69 -// buildLiveAction()  
70 -// }  
71 -  
72 - override var shouldAutorotate: Bool{  
73 - return false  
74 - }  
75 -  
76 -// //创建直播间或者登录账号  
77 -// func buildLiveAction(){  
78 -// if AppDelegate.instance().accountManager.isOnline() {  
79 -// let vc = UIStoryboard(name: "Live", bundle: nil).instantiateViewController(withIdentifier: "LiveVideoSettingViewControllerVC") as! LiveVideoSettingViewController  
80 -// vc.title = "直播设置"  
81 -// self.navigationController?.pushViewController(vc, animated: true)  
82 -// }else{  
83 -// let vc = UIStoryboard(name: "User", bundle: nil).instantiateViewController(withIdentifier: "LoginViewControllerVC") as! LoginViewController  
84 -// self.present(vc.wrapWithNavigationController(), animated: true, completion: nil)  
85 -// }  
86 -// }  
87 - // MARK: - TabBar Delegate  
88 - func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {  
89 - }  
90 - override func didReceiveMemoryWarning() {  
91 - super.didReceiveMemoryWarning()  
92 - }  
93 -  
94 -}  
YouerLiveVideo/YouerLiveVideo/controller/MoreViewController.swift
@@ -1,69 +0,0 @@ @@ -1,69 +0,0 @@
1 -//  
2 -// MoreViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/16.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class MoreViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {  
12 - var superVC:LiveVideoSettingViewController?  
13 - var liveTypeArray:[LiveType]=[]  
14 - var type:String="Live"  
15 - @IBOutlet var collectionView: UICollectionView!  
16 - override func viewDidLoad() {  
17 - super.viewDidLoad()  
18 - collectionView.register(UINib(nibName: "liveTitleCollectionCell", bundle: nil), forCellWithReuseIdentifier: "liveTitleCollectionCell")  
19 - getLiveTypeList()  
20 - }  
21 - func getLiveTypeList(){  
22 - AppDelegate.instance().httpServer.postLiveType(type: type) { (str, error) in  
23 - if error==nil {  
24 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
25 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
26 - self.liveTypeArray=LiveType.getAllLiveType(j: json)  
27 - self.collectionView.reloadData()  
28 - }, failHandler: { (error) in  
29 - NSLog("获取分类列表失败:\(error.localizedDescription)")  
30 - })  
31 - }else{  
32 - NSLog("获取分类列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
33 - }  
34 - }else{  
35 - NSLog("获取分类列表失败失败:\(error!.description)")  
36 - }  
37 - }  
38 - }  
39 - override func didReceiveMemoryWarning() {  
40 - super.didReceiveMemoryWarning()  
41 - }  
42 - //MARK: - UICollectionViewDelegateFlowLayout  
43 - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {  
44 - return CGSize(width: getScreenWidth()/4, height: getScreenWidth()/4)  
45 - }  
46 - //MARK: - UICollectionViewDelegate,UICollectionViewDataSource  
47 - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {  
48 - return liveTypeArray.count  
49 - }  
50 - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {  
51 - let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "liveTitleCollectionCell", for: indexPath) as! liveTitleCollectionCell  
52 - cell.setUpWith(type: liveTypeArray[indexPath.row])  
53 - return cell  
54 - }  
55 - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {  
56 - let item=liveTypeArray[indexPath.row]  
57 - if superVC != nil {  
58 - self.superVC!.category=item.f_Id  
59 - self.superVC!.categoryName=item.f_LiveTypeName  
60 - self.navigationController!.popViewController(animated: true)  
61 - return  
62 - }  
63 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LiveTypeListViewController") as! LiveTypeListViewController  
64 - vc.isType=true  
65 - vc.F_LiveType=item.f_Id  
66 - vc.title=item.f_LiveTypeName  
67 - self.navigationController!.pushViewController(vc, animated: true)  
68 - }  
69 -}  
YouerLiveVideo/YouerLiveVideo/controller/MyViewController.swift
@@ -1,87 +0,0 @@ @@ -1,87 +0,0 @@
1 -//  
2 -// MyViewController.swift  
3 -// XSTLive  
4 -//  
5 -// Created by 葛建军 on 16/11/9.  
6 -// Copyright © 2016年 HANGZHOUTEAM. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class MyViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {  
12 - var dataSet:[Live]=[Live(image:"直播列表",name:"直播列表",url:"直播列表的地址",type: LivesType.liveList),Live(image:"直播历史",name:"直播历史",url:"直播历史的地址",type: LivesType.liveHistory),Live(image:"我的关注",name:"我的关注",url:"关注地址",type: LivesType.other)]//,Live(image:"观看历史",name:"观看历史",url:"观看历史的地址",type: LivesType.watchHistory),Live(image:"我的充值",name:"我的充值",url:"处理充值",type: LivesType.other)  
13 - @IBOutlet var userView: UIView!  
14 - @IBOutlet var nouserLabel: UILabel!  
15 - @IBOutlet var iconImage: UIImageView!  
16 - @IBOutlet var nameLabel: UILabel!  
17 - @IBOutlet var numberLabel: UILabel!  
18 - @IBOutlet var tableView: UITableView!  
19 - override func viewDidLoad() {  
20 - super.viewDidLoad()  
21 - NotificationCenter.default.addObserver(self, selector: #selector(MyViewController.refreshUser), name: NSNotification.Name(rawValue: "refreshFirstVC"), object: nil)  
22 - }  
23 - override func viewWillAppear(_ animated: Bool) {  
24 - refreshUser()  
25 - }  
26 - func refreshUser(){  
27 - if !AppDelegate.instance().accountManager.isOnline() {  
28 - userView.isHidden=true  
29 - nouserLabel.isHidden=false  
30 - iconImage.image=UIImage(named:"defphoto")  
31 - }else{  
32 - userView.isHidden=false  
33 - nouserLabel.isHidden=true  
34 - iconImage.sd_setImage(with: URL(string: AppDelegate.instance().accountManager.photo()), placeholderImage: UIImage(named:"defphoto"))  
35 - nameLabel.text="昵称:"+AppDelegate.instance().accountManager.name()  
36 - numberLabel.text="账号:"+AppDelegate.instance().accountManager.phone()  
37 - }  
38 - }  
39 -  
40 - @IBAction func photoImageTapAction(_ sender: AnyObject) {  
41 - if !AppDelegate.instance().accountManager.isOnline(){  
42 - let vc = UIStoryboard(name: "User", bundle: nil).instantiateViewController(withIdentifier: "LoginViewControllerVC") as! LoginViewController  
43 - self.present(vc.wrapWithNavigationController(), animated: true, completion: nil)  
44 - }else{  
45 - //设置页面  
46 - let vc = UIStoryboard(name: "User", bundle: nil).instantiateViewController(withIdentifier: "PersonalSettingViewControllerVC") as! PersonalSettingViewController  
47 - self.navigationController!.pushViewController(vc, animated: true)  
48 - }  
49 - }  
50 - override func didReceiveMemoryWarning() {  
51 - super.didReceiveMemoryWarning()  
52 - }  
53 -  
54 - // MARK: -UITableViewDelegate UITableViewDataSource  
55 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
56 - return dataSet.count  
57 - }  
58 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
59 - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell  
60 - let list=dataSet[(indexPath as NSIndexPath).row]  
61 - cell.titleImage.image=UIImage(named: "\(list.image)")  
62 - cell.titleLabel.text=list.name  
63 - return cell  
64 - }  
65 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
66 - if AppDelegate.instance().accountManager.isOnline() {  
67 - let list=dataSet[(indexPath as NSIndexPath).row]  
68 - if indexPath.row==0 || indexPath.row==1{  
69 - let liveRoomsVC=Story.instantiateViewControllerWithIdentifier("LiveListViewController", storyName: "User") as! LiveListViewController  
70 - liveRoomsVC.type=list.type  
71 - liveRoomsVC.title=list.name  
72 - self.navigationController?.pushViewController(liveRoomsVC, animated: true)  
73 - }else if indexPath.row==2{  
74 - let schoolAttentionVC=Story.instantiateViewControllerWithIdentifier("MyAttentionViewController", storyName: "User") as! MyAttentionViewController  
75 - self.navigationController?.pushViewController(schoolAttentionVC, animated: true)  
76 - }else{  
77 - AppDelegate.instance().window?.makeToast("\(list.name)")  
78 - }  
79 - }else{  
80 - AppDelegate.instance().window?.makeToast("请先登录")  
81 - }  
82 - }  
83 -}  
84 -class MyTableViewCell: UITableViewCell {  
85 - @IBOutlet var titleImage: UIImageView!  
86 - @IBOutlet var titleLabel: UILabel!  
87 -}  
YouerLiveVideo/YouerLiveVideo/controller/UserCenter/LiveListViewController.swift
@@ -1,220 +0,0 @@ @@ -1,220 +0,0 @@
1 -//  
2 -// LiveListViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/17.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -enum LivesType:Int {  
11 - case liveList //直播列表  
12 - case liveHistory //直播历史  
13 - case watchHistory //观看历史  
14 - case other //其他  
15 -}  
16 -class LiveListViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,UITableViewDelegate,UITableViewDataSource {  
17 - @IBOutlet var iconImage: UIImageView!  
18 - @IBOutlet var nameLabel: UILabel!  
19 - @IBOutlet var numberLabel: UILabel!  
20 - var type:LivesType!  
21 - @IBOutlet var titleCollectionView: UICollectionView!  
22 - @IBOutlet var titleViewHeight: NSLayoutConstraint!  
23 - var titleDataSet:[String]=["全部","审核通过","审核未通过","待审核"]  
24 - @IBOutlet var liveListTableView: UITableView!  
25 - var allListRoom:[LiveDetail]=[]  
26 - var roomListDataSet:[LiveDetail]=[]  
27 - var currentType:Int=0//测试改变顶部状态时  
28 - override func viewDidLoad() {  
29 - super.viewDidLoad()  
30 - liveListTableView.register(UINib(nibName: "HomeTableViewCell", bundle: nil), forCellReuseIdentifier: "cell")  
31 - }  
32 - override func viewWillAppear(_ animated: Bool) {  
33 - super.viewWillAppear(animated)  
34 - refreshUser()  
35 - getListWithType()  
36 - }  
37 - //MARK: - 刷新个人信息  
38 - func refreshUser(){  
39 - //顶部collectionView的展示与否  
40 - if type==LivesType.liveList{  
41 - titleViewHeight.constant=40  
42 - }else{  
43 - titleViewHeight.constant=0  
44 - }  
45 - //这里必然在线,不用判断是否在线  
46 - iconImage.sd_setImage(with: URL(string: AppDelegate.instance().accountManager.photo()), placeholderImage: UIImage(named:"defphoto"))  
47 - nameLabel.text="昵称:"+AppDelegate.instance().accountManager.name()  
48 - numberLabel.text="账号:"+AppDelegate.instance().accountManager.phone()  
49 - }  
50 - //MARK: - 刷新直播列表信息  
51 - func getListWithType(){  
52 - SVProgressHUD.show(withStatus: "加载中...")  
53 - SVProgressHUD.setDefaultMaskType(.black)  
54 - //清空数据  
55 - switch type.hashValue {  
56 - case 0:  
57 - let parameters:Dictionary<String,AnyObject>=["PageIndex":0 as AnyObject,"PageSize":INT32_MAX as AnyObject,"WhatLive":"My" as AnyObject]  
58 - AppDelegate.instance().httpServer.getLive(parameters: parameters, completionHandler: { (str, error) in  
59 - SVProgressHUD.dismiss()  
60 - if error==nil {  
61 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
62 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
63 - self.allListRoom=LiveDetail.getAllLives(j: json)  
64 - self.roomListDataSet=self.allListRoom  
65 - self.liveListTableView.reloadData()  
66 - }, failHandler: { (error) in  
67 - self.view.makeToast("获取直播列表失败:\(error.localizedDescription)")  
68 - })  
69 - }else{  
70 - self.view.makeToast("获取直播列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
71 - }  
72 - }else{  
73 - self.view.makeToast("获取直播列表失败:\(error!.description)")  
74 - }  
75 - })  
76 - break  
77 - case 1:  
78 - let parameters:Dictionary<String,AnyObject>=["PageIndex":0 as AnyObject,"PageSize":INT32_MAX as AnyObject,"WhatLive":"My" as AnyObject]  
79 - AppDelegate.instance().httpServer.getLive(parameters: parameters, completionHandler: { (str, error) in  
80 - SVProgressHUD.dismiss()  
81 - if error==nil {  
82 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
83 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
84 - for item in LiveDetail.getAllLives(j: json){  
85 - if item.f_IsExamine==1{  
86 - self.allListRoom.append(item)  
87 - }  
88 - }  
89 - self.roomListDataSet=self.allListRoom  
90 - self.liveListTableView.reloadData()  
91 - }, failHandler: { (error) in  
92 - self.view.makeToast("获取直播列表失败:\(error.localizedDescription)")  
93 - })  
94 - }else{  
95 - self.view.makeToast("获取直播列表失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
96 - }  
97 - }else{  
98 - self.view.makeToast("获取直播列表失败:\(error!.description)")  
99 - }  
100 - })  
101 -// AppDelegate.instance().httpServer.getPlayHistory(completionHandler: { (str, error) in  
102 -// SVProgressHUD.dismiss()  
103 -// if error == nil&&JSON.fromString(jsonString: str)!["issuccess"].intValue == 1{  
104 -// //处理数据{"issuccess":1,"data":[{"name":"直播历史1"},{"name":"直播历史2"}]}  
105 -// }else{  
106 -// self.view.makeToast("获取直播历史失败")  
107 -// }  
108 -// })  
109 - break  
110 - case 2:  
111 - AppDelegate.instance().httpServer.getLiveHistory(completionHandler: { (str, error) in  
112 - SVProgressHUD.dismiss()  
113 - if error == nil&&JSON.fromString(jsonString: str)!["issuccess"].intValue == 1{  
114 - //处理数据{"issuccess":1,"data":[{"name":"直播历史1"},{"name":"直播历史2"}]}  
115 - }else{  
116 - self.view.makeToast("获取观看历史失败")  
117 - }  
118 -  
119 - })  
120 - break  
121 - default:  
122 - break  
123 - }  
124 - }  
125 - // MARK: - UITableViewDataSource,UITableViewDelegate  
126 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
127 - return roomListDataSet.count  
128 - }  
129 - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  
130 - //return 70+getScreenWidth()/2  
131 - return 331  
132 - }  
133 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
134 - let cell=tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! HomeTableViewCell  
135 - cell.setUpWith(type: type,item: roomListDataSet[indexPath.row])  
136 - return cell  
137 - }  
138 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
139 - let item=roomListDataSet[indexPath.row]  
140 - if type==LivesType.liveList{  
141 - if item.f_IsExamine == 1{  
142 - let vc = UIStoryboard(name: "Live", bundle: nil).instantiateViewController(withIdentifier: "LiveVideoSettingShareViewControllerVC") as! LiveVideoSettingShareViewController  
143 - vc.liveDetail = item  
144 - vc.title = "直播分享"  
145 - self.navigationController?.pushViewController(vc, animated: true)  
146 - return  
147 - }  
148 - let vc = Story.instantiateViewControllerWithIdentifier("LiveVideoSettingViewControllerVC", storyName: "Live") as! LiveVideoSettingViewController  
149 - vc.title = "直播设置"  
150 - vc.liveDetail=item  
151 - self.navigationController?.pushViewController(vc, animated: true)  
152 -  
153 -// let vc=Story.instantiateViewControllerWithIdentifier("LiveRoomDetailViewController", storyName: "Main") as! LiveRoomDetailViewController  
154 -// vc.item=item  
155 -// self.navigationController?.pushViewController(vc, animated: true)  
156 - return  
157 - }  
158 - }  
159 - // MARK: - UICollectionViewDelegate  
160 - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {  
161 - return titleDataSet.count  
162 - }  
163 - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {  
164 - return CGSize(width: getScreenWidth()/4, height: 40)  
165 - }  
166 - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {  
167 - let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "selectCell", for: indexPath) as! selectTypeCell  
168 - cell.titleLabel.text=titleDataSet[(indexPath as NSIndexPath).row]  
169 - if indexPath.row==currentType{  
170 - cell.titleLabel.textColor=Theme.topBarColor()  
171 - cell.currentLabel.isHidden=false  
172 - }else{  
173 - cell.titleLabel.textColor=UIColor.black  
174 - cell.currentLabel.isHidden=true  
175 - }  
176 - if (indexPath as NSIndexPath).row==3{  
177 - cell.lineLabel.isHidden=true  
178 - }else{  
179 - cell.lineLabel.isHidden=false  
180 - }  
181 - return cell  
182 - }  
183 - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {  
184 - var array:[LiveDetail]=[]  
185 - var type:Int=0  
186 - switch titleDataSet[indexPath.row] {  
187 - case "全部":  
188 - type = -1  
189 - array=self.allListRoom  
190 - case "审核通过":  
191 - type=1  
192 - case "审核未通过":  
193 - type=2  
194 - case "待审核":  
195 - type=0  
196 - default:  
197 - type=0  
198 - }  
199 - for item in self.allListRoom {  
200 - if item.f_IsExamine==type{  
201 - array.append(item)  
202 - }  
203 - }  
204 - self.roomListDataSet=array  
205 - currentType=indexPath.row  
206 - self.titleCollectionView.reloadData()  
207 - self.liveListTableView.reloadData()  
208 - }  
209 -  
210 - override func didReceiveMemoryWarning() {  
211 - super.didReceiveMemoryWarning()  
212 - }  
213 -  
214 -  
215 -}  
216 -class selectTypeCell: UICollectionViewCell {  
217 - @IBOutlet var titleLabel: UILabel!  
218 - @IBOutlet var lineLabel: UILabel!  
219 - @IBOutlet var currentLabel: UILabel!  
220 -}  
YouerLiveVideo/YouerLiveVideo/controller/UserCenter/LiveRoomsViewController.swift
@@ -1,259 +0,0 @@ @@ -1,259 +0,0 @@
1 -//  
2 -// LiveRoomsViewController.swift  
3 -// XSTLive  
4 -//  
5 -// Created by 葛建军 on 16/11/10.  
6 -// Copyright © 2016年 HANGZHOUTEAM. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class LiveRoomsViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {  
12 - @IBOutlet var iconImage: UIImageView!  
13 - @IBOutlet var nameLabel: UILabel!  
14 - @IBOutlet var numberLabel: UILabel!  
15 - var type:LivesType!  
16 - @IBOutlet var titleCollectionView: UICollectionView!  
17 - @IBOutlet var titleViewHeight: NSLayoutConstraint!  
18 - var titleDataSet:[String]=["全部","审核通过","审核未通过","待审核"]  
19 - @IBOutlet var roomListCollectionView: UICollectionView!  
20 - var allListRoom:[LiveDetail]=[]  
21 - var roomListDataSet:[LiveDetail]=[]  
22 - var currentType:Int=0//测试改变顶部状态时  
23 - override func viewWillAppear(_ animated: Bool) {  
24 - super.viewWillAppear(animated)  
25 - }  
26 - override func viewDidLoad() {  
27 - super.viewDidLoad()  
28 - refreshUser()  
29 - getListWithType()  
30 - }  
31 - func refreshUser(){  
32 - //顶部collectionView的展示与否  
33 - if type==LivesType.liveList{  
34 - titleViewHeight.constant=50  
35 - }else{  
36 - titleViewHeight.constant=0  
37 - }  
38 - //这里必然在线,不用判断是否在线  
39 - iconImage.sd_setImage(with: URL(string: AppDelegate.instance().accountManager.photo()), placeholderImage: UIImage(named:"defphoto"))  
40 - nameLabel.text=AppDelegate.instance().accountManager.name()  
41 - numberLabel.isHidden=false  
42 - numberLabel.text="账号: "+AppDelegate.instance().accountManager.phone()  
43 - }  
44 - func getListWithType(){  
45 - SVProgressHUD.show(withStatus: "加载中...")  
46 - SVProgressHUD.setDefaultMaskType(.black)  
47 - //清空数据  
48 - switch type.hashValue {  
49 - case 0:  
50 - let parameters:Dictionary<String,AnyObject>=["PageIndex":0 as AnyObject,"PageSize":10 as AnyObject,"WhatLive":"My" as AnyObject]  
51 - AppDelegate.instance().httpServer.getLive(parameters: parameters, completionHandler: { (str, error) in  
52 - SVProgressHUD.dismiss()  
53 - if error==nil {  
54 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
55 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
56 - for j in json["data"].arrayValue {  
57 - self.allListRoom.append(LiveDetail(j:j))  
58 - }  
59 - self.roomListDataSet=self.allListRoom  
60 - self.roomListCollectionView.reloadData()  
61 - }, failHandler: { (error) in  
62 - self.view.makeToast("获取直播列表失败失败:\(error.localizedDescription)")  
63 - })  
64 - }else{  
65 - self.view.makeToast("获取直播列表失败失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
66 - }  
67 - }else{  
68 - self.view.makeToast("获取直播列表失败失败:\(error!.description)")  
69 - }  
70 - })  
71 - break  
72 - case 1:  
73 -  
74 - break  
75 - case 2:  
76 -  
77 - break  
78 - default:  
79 - break  
80 - }  
81 - }  
82 - @IBAction func backAction(_ sender: UIBarButtonItem) {  
83 - self.navigationController!.popViewController(animated: true)  
84 - }  
85 -  
86 - // MARK: - UICollectionViewDelegate  
87 - func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {  
88 - if collectionView==roomListCollectionView{  
89 - return roomListDataSet.count  
90 - }else{  
91 - return titleDataSet.count  
92 - }  
93 - }  
94 - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {  
95 - var width:CGFloat!  
96 - var height:CGFloat!  
97 - if collectionView==roomListCollectionView{  
98 - width=(getScreenWidth()-4)/2  
99 - height=width+30  
100 - }else{  
101 - width=getScreenWidth()/4  
102 - height=50  
103 - }  
104 - return CGSize(width: width, height: height)  
105 - }  
106 - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {  
107 - if collectionView==roomListCollectionView{  
108 - let formatte=DateFormatter()  
109 - formatte.dateFormat="yyyy-MM-dd HH:mm:ss"  
110 - let item=roomListDataSet[indexPath.row]  
111 - let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "roomListCell", for: indexPath) as! roomLiveDetailCell  
112 -// XSTLiveManager.shareXSTLiveManager().fetchLiveMembers(roomId: item.f_RoomId, completion: { (success, members) in  
113 -// if success {  
114 -// cell.personNumberLabel.text=" \(members.count)"  
115 -// }else{  
116 -// cell.personNumberLabel.text=" 0"  
117 -// }  
118 -// })  
119 - cell.backgroundImage.sd_setImage(with: URL(string:item.f_LiveImg), placeholderImage: UIImage(named:"icon"))  
120 - cell.nameLabel.text=item.f_LiveName  
121 - cell.timeLabel.text=formatte.string(from: Date(timeIntervalSince1970: JSON.fromString(jsonString: item.f_Description)!["starttime"].doubleValue/1000 as TimeInterval))  
122 - if type==LivesType.liveList{  
123 - cell.passLabel.isHidden=false  
124 - cell.pageLabel.isHidden=true  
125 - if item.f_IsExamine==1 {  
126 - cell.passLabel.backgroundColor=UIColor.groupTableViewBackground  
127 - cell.passLabel.textColor=UIColor.gray  
128 - cell.passLabel.text="通过"  
129 - }else if item.f_IsExamine==2 {  
130 - cell.passLabel.backgroundColor=Theme.topBarColor()  
131 - cell.passLabel.textColor=UIColor.white  
132 - cell.passLabel.text="未通过"  
133 - }else{  
134 - cell.passLabel.backgroundColor=UIColor.groupTableViewBackground  
135 - cell.passLabel.textColor=UIColor.gray  
136 - cell.passLabel.text="待审核"  
137 - }  
138 - }else if type==LivesType.liveHistory{  
139 - cell.passLabel.isHidden=true  
140 - cell.pageLabel.isHidden=false  
141 - cell.pageLabel.text=" 直播历史\((indexPath as NSIndexPath).row+1) "  
142 - }else if type==LivesType.watchHistory{  
143 - cell.passLabel.isHidden=true  
144 - cell.pageLabel.isHidden=false  
145 - cell.pageLabel.text=" 观看历史\((indexPath as NSIndexPath).row+1) "  
146 - }  
147 - return cell  
148 - }else{  
149 - let cell=collectionView.dequeueReusableCell(withReuseIdentifier: "selectCell", for: indexPath) as! selectTypeCell  
150 - cell.titleLabel.text=titleDataSet[(indexPath as NSIndexPath).row]  
151 - if indexPath.row==currentType{  
152 - cell.titleLabel.textColor=Theme.topBarColor()  
153 - }else{  
154 - cell.titleLabel.textColor=UIColor.black  
155 - }  
156 - if (indexPath as NSIndexPath).row==3{  
157 - cell.lineLabel.isHidden=true  
158 - }else{  
159 - cell.lineLabel.isHidden=false  
160 - }  
161 - return cell  
162 - }  
163 - }  
164 - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {  
165 - if collectionView==roomListCollectionView{  
166 - let item=roomListDataSet[indexPath.row]  
167 - if type==LivesType.liveList{  
168 - if item.f_IsExamine == 1{  
169 - let vc = UIStoryboard(name: "Live", bundle: nil).instantiateViewController(withIdentifier: "LiveVideoSettingShareViewControllerVC") as! LiveVideoSettingShareViewController  
170 - vc.liveDetail = item  
171 - vc.title = "直播分享"  
172 - self.navigationController?.pushViewController(vc, animated: true)  
173 - return  
174 - }  
175 - let vc=Story.instantiateViewControllerWithIdentifier("LiveRoomDetailViewController", storyName: "Main") as! LiveRoomDetailViewController  
176 - vc.item=item  
177 - self.navigationController?.pushViewController(vc, animated: true)  
178 - return  
179 - }  
180 - }else{  
181 - var array:[LiveDetail]=[]  
182 - var type:Int=0  
183 - switch titleDataSet[indexPath.row] {  
184 - case "全部":  
185 - type = -1  
186 - array=self.allListRoom  
187 - case "审核通过":  
188 - type=1  
189 - case "审核未通过":  
190 - type=2  
191 - case "待审核":  
192 - type=0  
193 - default:  
194 - type=0  
195 - }  
196 - for item in self.allListRoom {  
197 - if item.f_IsExamine==type{  
198 - array.append(item)  
199 - }  
200 - }  
201 - self.roomListDataSet=array  
202 - currentType=indexPath.row  
203 - self.titleCollectionView.reloadData()  
204 - self.roomListCollectionView.reloadData()  
205 - }  
206 - }  
207 -  
208 -  
209 - @IBAction func showAlertMenu(_ sender: UILongPressGestureRecognizer) {  
210 - let p=sender.location(in: sender.view)  
211 - if let indexPath=self.roomListCollectionView.indexPathForItem(at: p){  
212 - let cell=self.roomListCollectionView.cellForItem(at: indexPath) as! roomLiveDetailCell  
213 - cell.becomeFirstResponder()  
214 - if sender.state==UIGestureRecognizerState.began{  
215 - let menu=UIMenuController.shared  
216 - let item=indexUIMenuItem(title:"拷贝",action:#selector(LiveRoomsViewController.copyAction(_:)))  
217 - item.indexPath=indexPath  
218 - menu.menuItems=[item]  
219 - menu.setTargetRect(cell.bounds, in: cell)  
220 - menu.arrowDirection=UIMenuControllerArrowDirection.down  
221 - menu.update()  
222 - menu.isMenuVisible=true }  
223 - }  
224 - }  
225 - override var canBecomeFirstResponder : Bool {  
226 - return true  
227 - }  
228 - func copyAction(_ item:UIMenuController){  
229 - let alert=AlertController.creatAlert("拷贝\(((item.menuItems![0] as! indexUIMenuItem).indexPath! as NSIndexPath).row+1)号房间")  
230 - self.present(alert, animated: true, completion: nil)  
231 - }  
232 -  
233 -  
234 -  
235 -  
236 -  
237 -  
238 -  
239 -  
240 -  
241 -  
242 -  
243 -  
244 -  
245 - override func didReceiveMemoryWarning() {  
246 - super.didReceiveMemoryWarning()  
247 - }  
248 -}  
249 -class roomLiveDetailCell: UICollectionViewCell {  
250 -  
251 - @IBOutlet var backgroundImage: UIImageView!  
252 - @IBOutlet var passLabel: UILabel!  
253 - @IBOutlet var pageLabel: UILabel!  
254 - @IBOutlet var nameLabel: UILabel!  
255 - @IBOutlet var personNumberLabel: UILabel!  
256 - @IBOutlet var timeLabel: UILabel!  
257 -  
258 -  
259 -}  
YouerLiveVideo/YouerLiveVideo/controller/UserCenter/LoginViewController.swift
@@ -1,145 +0,0 @@ @@ -1,145 +0,0 @@
1 -//  
2 -// LoginViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 16/11/11.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class LoginViewController: UIViewController,UITextFieldDelegate {  
12 - @IBOutlet var changeViewTop: NSLayoutConstraint!  
13 - @IBOutlet var phoneNumberTextField: UITextField!  
14 - @IBOutlet var passwordTextField: UITextField!  
15 - override func viewDidLoad() {  
16 - super.viewDidLoad()  
17 - let numberPlaceholder=NSMutableAttributedString(string: "请输入11位数的手机号码")  
18 - numberPlaceholder.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: NSMakeRange(0, 12))  
19 - phoneNumberTextField.attributedPlaceholder=numberPlaceholder  
20 - phoneNumberTextField.tintColor=Theme.topBarColor()  
21 - let passwordPlaceholder=NSMutableAttributedString(string: "请输入6位以上的密码")  
22 - passwordPlaceholder.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: NSMakeRange(0, 10))  
23 - passwordTextField.attributedPlaceholder=passwordPlaceholder  
24 - passwordTextField.tintColor=Theme.topBarColor()  
25 -  
26 - NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.refreshUser), name: NSNotification.Name(rawValue: "refreshLoginUser"), object: nil)  
27 - NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.keyboardWIllChange), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)  
28 -// let leftbtn = UIBarButtonItem(title: "返回", style: .plain, target: self, action: #selector(LoginViewController.back))  
29 -// self.navigationItem.title = "登录"  
30 -// self.navigationItem.leftBarButtonItem = leftbtn  
31 - changeViewTop.constant=(getScreenHeight()-64-220)/3  
32 - }  
33 - //点击页面回收键盘  
34 - @IBAction func touchAction(_ sender: AnyObject) {  
35 - self.view.endEditing(true)//回收键盘  
36 - }  
37 - override var preferredStatusBarStyle: UIStatusBarStyle{  
38 - return UIStatusBarStyle.lightContent  
39 - }  
40 - //输入密码点击return回收键盘  
41 - func textFieldShouldReturn(_ textField: UITextField) -> Bool {  
42 - textField.resignFirstResponder()  
43 - return true  
44 - }  
45 - //注册完了后自动填充账号  
46 - func refreshUser(noti:Notification){  
47 - phoneNumberTextField.text = "\(noti.object!)"  
48 - }  
49 - //点击登录按钮  
50 - @IBAction func loginBtnClickAction(_ sender: Any) {  
51 - self.view.endEditing(true)  
52 - if phoneNumberTextField.text!.isMobilePhoneNumber() {  
53 - SVProgressHUD.show(withStatus: "登录...")  
54 - SVProgressHUD.setDefaultMaskType(.black)  
55 - let parameters:Dictionary<String,AnyObject>=["grant_type":"password" as AnyObject,"username":phoneNumberTextField.text! as AnyObject,"password":passwordTextField.text! as AnyObject]  
56 - AppDelegate.instance().httpServer.login(parameters: parameters) { (str, error) in  
57 - let json=JSON.fromString(jsonString: str)  
58 - if let ret=json{  
59 - let er=ret["error"].string  
60 - if let errorStr=er{  
61 - SVProgressHUD.dismiss()  
62 - let Strings=errorStr.components(separatedBy:":")  
63 - if Strings.count >= 2 {  
64 - switch Strings[1] {  
65 - //用户关联多个身份,请使用学事号登录:100  
66 - case "101"://用户认证身份不存在:101  
67 - AppDelegate.instance().window?.makeToast("用户认证身份不存在,请进行账号激活。")  
68 - break  
69 - //用户帐号或密码错误:102  
70 - case "103":// 用户不存在:103  
71 - AppDelegate.instance().window?.makeToast("该号码不存在,请联系客服400-826-2468")  
72 - break  
73 - default:  
74 - AppDelegate.instance().window?.makeToast("\(errorStr)")  
75 - break  
76 - }  
77 - }else{  
78 - AppDelegate.instance().window?.makeToast("\(errorStr)")  
79 - }  
80 - }else if ret["access_token"].stringValue != ""{  
81 - AppDelegate.instance().accountManager.setTokenInfo(tokenInfo: ret)  
82 - AppDelegate.instance().accountManager.saveToken(tokenInfo: ret)  
83 - AppDelegate.instance().accountManager.refreshUserInfo(completionHandler: { (finish) in  
84 - if finish{  
85 - self.loadUserInfo()  
86 - }else{  
87 - AppDelegate.instance().window?.makeToast("身份获取失败")  
88 - SVProgressHUD.dismiss()  
89 - }  
90 - })  
91 - }else{  
92 - SVProgressHUD.dismiss()  
93 - AppDelegate.instance().window?.makeToast("登录失败,请稍后重试")  
94 - }  
95 - }else{  
96 - SVProgressHUD.dismiss()  
97 - AppDelegate.instance().window?.makeToast("登录失败")  
98 - }  
99 - }  
100 - }else{  
101 - self.view.makeToast("请输入正确手机号")  
102 - }  
103 - }  
104 - func loadUserInfo(){  
105 - XSTLiveManager.shareXSTLiveManager().login(userId: self.phoneNumberTextField.text!, completion: { (success) in  
106 - if !success{  
107 - AppDelegate.instance().window?.makeToast("聊天服务登录失败,请连接网络重试")  
108 - SVProgressHUD.dismiss()  
109 - }else{  
110 - SVProgressHUD.dismiss()  
111 - self.back()  
112 - }  
113 - })  
114 - }  
115 - func back(){  
116 - self.dismiss(animated: true, completion: nil)  
117 - LeadViewController.instance.removeAll()  
118 - LeadViewController.instance.showMain()  
119 - }  
120 -  
121 - override func didReceiveMemoryWarning() {  
122 - super.didReceiveMemoryWarning()  
123 - // Dispose of any resources that can be recreated.  
124 - }  
125 - //点击注册按钮  
126 - @IBAction func registerBtnClickAction(_ sender: AnyObject) {  
127 - let vc = UIStoryboard(name: "User", bundle: nil).instantiateViewController(withIdentifier: "RegisterViewControllerVC") as! RegisterViewController  
128 - vc.title = "注册"  
129 - self.navigationController?.pushViewController(vc, animated: true)  
130 - }  
131 - //键盘监听  
132 - func keyboardWIllChange(noti: NSNotification){  
133 - let userInfo:NSDictionary=noti.userInfo! as NSDictionary  
134 - let endFrame=(userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue  
135 - if endFrame?.origin.y==getScreenHeight() {  
136 - changeViewTop.constant=(getScreenHeight()-64-220)/3  
137 - }else{  
138 - let y = (getScreenHeight()-64-220)/3+CGFloat(64+220)  
139 - if (endFrame?.origin.y)! < y {  
140 - changeViewTop.constant=getScreenHeight()-64-(endFrame?.size.height)!-220  
141 - }  
142 - }  
143 - }  
144 -  
145 -}  
YouerLiveVideo/YouerLiveVideo/controller/UserCenter/MyAttentionViewController.swift
@@ -1,67 +0,0 @@ @@ -1,67 +0,0 @@
1 -//  
2 -// MyAttentionViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 葛建军 on 17/1/18.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class MyAttentionViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {  
12 - var allSchool:[OrganizeListSchool]=[]  
13 - @IBOutlet var tableView: UITableView!  
14 - override func viewDidLoad() {  
15 - super.viewDidLoad()  
16 - tableView.register(UINib(nibName: "AttentionTableViewCell", bundle: nil), forCellReuseIdentifier: "AttentionTableViewCell")  
17 - getActSchoolList()  
18 - }  
19 - func getActSchoolList(){  
20 - SVProgressHUD.show(withStatus: "加载中...")  
21 - SVProgressHUD.setDefaultMaskType(.black)  
22 - AppDelegate.instance().httpServer.postLiveOrganizeList(type:"Act") { (str, error) in  
23 - if error==nil {  
24 - SVProgressHUD.dismiss()  
25 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
26 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
27 - self.allSchool=OrganizeListSchool.getAllSchool(j: json)  
28 - self.tableView.reloadData()  
29 - }, failHandler: { (error) in  
30 - NSLog("获取关注学校失败:\(error.localizedDescription)")  
31 - })  
32 - }else{  
33 - NSLog("获取关注学校失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
34 - }  
35 - }else{  
36 - NSLog("获取关注学校失败:\(error!.description)")  
37 - }  
38 - }  
39 - }  
40 - // MARK: - UITableViewDelegate,UITableViewDataSource  
41 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
42 - return allSchool.count  
43 - }  
44 - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  
45 - return 80  
46 - }  
47 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
48 - let cell=tableView.dequeueReusableCell(withIdentifier: "AttentionTableViewCell") as! AttentionTableViewCell  
49 - cell.setupWith(item: allSchool[indexPath.row],isMy: true)  
50 - cell.superVC=self  
51 - return cell  
52 - }  
53 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
54 - let item=allSchool[indexPath.row]  
55 - let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LiveTypeListViewController") as! LiveTypeListViewController  
56 - vc.isType=false  
57 - vc.F_OrganizeId=item.f_Id  
58 - vc.title=item.f_FullName  
59 - self.navigationController!.pushViewController(vc, animated: true)  
60 - }  
61 - override func didReceiveMemoryWarning() {  
62 - super.didReceiveMemoryWarning()  
63 - }  
64 -  
65 -  
66 -}  
67 -  
YouerLiveVideo/YouerLiveVideo/controller/UserCenter/PersonalSettingViewController.swift
@@ -1,238 +0,0 @@ @@ -1,238 +0,0 @@
1 -//  
2 -// PersonalSettingViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 16/11/12.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class PersonalSettingViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource,UINavigationControllerDelegate,UIImagePickerControllerDelegate{  
12 - @IBOutlet weak var userSettingTableView: UITableView!  
13 - @IBOutlet var rightBarBtn: UIBarButtonItem!  
14 - @IBOutlet var loginoutBtn: UIButton!  
15 - var titleArr:[String] = ["头像","昵称","手机号(账号)"]//["头像","账号","昵称","性别"]  
16 - var user:Contact!  
17 - var isUserActivity:Bool=false  
18 - override func viewDidLoad() {  
19 - super.viewDidLoad()  
20 - user = Contact()  
21 - }  
22 -  
23 - override func didReceiveMemoryWarning() {  
24 - super.didReceiveMemoryWarning()  
25 - }  
26 -  
27 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
28 - switch indexPath.row {  
29 - case 0:  
30 - let sheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)  
31 - sheet.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))  
32 - sheet.addAction(UIAlertAction(title: "拍照", style: .default, handler: { (action) in  
33 - if cameraOrPhotPermissions(1, view: self.view){  
34 - let vc = UIImagePickerController()  
35 - vc.delegate = self  
36 - vc.sourceType = .camera  
37 - self.present(vc, animated: true, completion: nil)  
38 - }else{  
39 -  
40 - }  
41 - self.userSettingTableView.reloadData()  
42 - }))  
43 - sheet.addAction(UIAlertAction(title: "从相册选择", style: .default, handler: { (action) in  
44 - if cameraOrPhotPermissions(1, view: self.view){  
45 - let vc = UIImagePickerController()  
46 - vc.delegate = self  
47 - vc.sourceType = .photoLibrary  
48 - self.present(vc, animated: true, completion: nil)  
49 - }else{  
50 -  
51 - }  
52 - self.userSettingTableView.reloadData()  
53 - }))  
54 - self.present(sheet, animated: true, completion: nil)  
55 - break  
56 - case 1:  
57 - let alert = UIAlertController(title: "修改昵称", message: "", preferredStyle: .alert)  
58 - alert.addAction(UIAlertAction(title: "确定", style: .default, handler: { (action) in  
59 - if alert.textFields![0].text == ""{  
60 - return  
61 - }  
62 - if (alert.textFields![0].text?.characters.count)!>15{  
63 - self.user.nickName = (alert.textFields![0].text! as NSString).substring(to: 15)  
64 - }else{  
65 - self.user.nickName = alert.textFields![0].text  
66 - }  
67 - self.userSettingTableView.reloadData()  
68 - }))  
69 - alert.addAction(UIAlertAction(title: "取消", style: .default, handler: nil))  
70 - alert.addTextField { (text) in  
71 - text.placeholder = "请输入昵称,且不能超过15个字符"  
72 - }  
73 - self.present(alert, animated: true, completion: nil)  
74 - break  
75 - case 3:  
76 - let sheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)  
77 - sheet.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))  
78 - sheet.addAction(UIAlertAction(title: "男", style: .default, handler: { (action) in  
79 - self.user.userSex = "男"  
80 - self.userSettingTableView.reloadData()  
81 - }))  
82 - sheet.addAction(UIAlertAction(title: "女", style: .default, handler: { (action) in  
83 - self.user.userSex = "女"  
84 - self.userSettingTableView.reloadData()  
85 - }))  
86 - self.present(sheet, animated: true, completion: nil)  
87 - break  
88 - default:  
89 - break  
90 - }  
91 - }  
92 -  
93 -  
94 - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
95 - return titleArr.count  
96 - }  
97 -  
98 - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {  
99 - return 44  
100 - }  
101 -  
102 - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
103 - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! PersonalSettingCell  
104 - cell.nameTitleLabel.text = titleArr[indexPath.row]  
105 - cell.nameLabelRightSpace.constant = 8  
106 - cell.imagePhoto.isHidden = true  
107 - cell.namelabel.isHidden = false  
108 - cell.rightArrow.isHidden = false  
109 - cell.isUserInteractionEnabled = true  
110 - if isUserActivity {  
111 - cell.isUserInteractionEnabled=true  
112 - }else{  
113 - cell.isUserInteractionEnabled=false  
114 - }  
115 - switch indexPath.row {  
116 - case 0:  
117 - cell.imagePhoto.isHidden = false  
118 - cell.namelabel.isHidden = true  
119 - cell.imagePhoto.sd_setImage(with: URL(string: user.imageURL), placeholderImage: UIImage(named: "defphoto"))  
120 - break  
121 - case 1:  
122 - cell.namelabel.text = user.nickName//AppDelegate.instance().accountManager.name()  
123 - break  
124 - case 2:  
125 - cell.nameLabelRightSpace.constant = -10  
126 - cell.rightArrow.isHidden = true  
127 - cell.isUserInteractionEnabled = false  
128 - cell.namelabel.text = user.userId//AppDelegate.instance().accountManager.phone()  
129 - break  
130 - case 3:  
131 - cell.namelabel.text = user.userSex  
132 - break  
133 -  
134 - default:  
135 - break  
136 - }  
137 - return cell  
138 - }  
139 -  
140 - func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {  
141 - picker.dismiss(animated: true, completion: { () -> Void in  
142 - var oimage = info[UIImagePickerControllerOriginalImage] as? UIImage  
143 - oimage = oimage!.imageScaledToScale()  
144 - let filePath=FilesManager.imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))  
145 - try? UIImageJPEGRepresentation(oimage!,0.5)!.write(to: URL(fileURLWithPath: filePath), options: [.atomic])  
146 - self.updateImage(file: filePath)  
147 - })  
148 - }  
149 - func updateImage(file:String){  
150 - SVProgressHUD.show(withStatus: "图片上传中...")  
151 - SVProgressHUD.setDefaultMaskType(.black)  
152 - AppDelegate.instance().httpServer.uploadFile(file: NSURL(fileURLWithPath: file)) { (str, error) in  
153 - SVProgressHUD.dismiss()  
154 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
155 - let str=json.contentData().arrayValue[0].stringValue  
156 - self.user.imageURL=str  
157 - }, failHandler: { (error) in  
158 - self.user.imageURL=""  
159 - self.view.makeToast("图片上传失败:\(error.localizedDescription)")  
160 - })  
161 - self.userSettingTableView.reloadData()  
162 - }  
163 - }  
164 - // MARK: - 退出登录按钮点击事件  
165 - @IBAction func ExsitBtnClickAction(_ sender: Any) {  
166 - AppDelegate.instance().accountManager.logOut()  
167 - }  
168 - // MARK: - 完成按钮点击事件  
169 - @IBAction func finishAction(_ sender: UIBarButtonItem) {  
170 - if isUserActivity {  
171 - //需要新的接口来修改个人信息  
172 - SVProgressHUD.show(withStatus: "修改个人信息...")  
173 - SVProgressHUD.setDefaultMaskType(.black)  
174 - let parameters:Dictionary<String,AnyObject>=["f_RealName":self.user.nickName as AnyObject,"f_HeadIcon":self.user.imageURL as AnyObject]  
175 - AppDelegate.instance().httpServer.updataUserInfo(parameters: parameters, completionHandler: { (str, error) in  
176 - SVProgressHUD.dismiss()  
177 - if error==nil {  
178 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
179 - //把账号信息存储下来,暂时这样修改。若以后个人信息中有其他元素,需加新的接口来更新个人信息。  
180 - // var dic=Setting.getUserInfo()?.dictionaryValue["data"]?.dictionaryObject  
181 - // _=dic?.updateValue(self.user.nickName, forKey: "f_RealName")  
182 - // _=dic?.updateValue(self.user.imageURL, forKey: "f_HeadIcon")  
183 - // let userInfo:Dictionary<String,AnyObject>=["status":1 as AnyObject,"data":dic as AnyObject]  
184 - // AppDelegate.instance().accountManager.rawUserInfo=JSON(userInfo)  
185 - // _=Setting.saveUserInfo(JSON(userInfo).rawString())  
186 - XSTLiveManager.shareXSTLiveManager().setUpPersonInfo(name: self.user.nickName, icon: self.user.imageURL)  
187 - AppDelegate.instance().window?.makeToast("修改个人信息成功")  
188 - self.rightBarBtn.title="修改"  
189 - self.isUserActivity=false  
190 - self.loginoutBtn.isHidden=false  
191 - self.userSettingTableView.reloadData()  
192 - AppDelegate.instance().accountManager.refreshUserInfo(completionHandler: { (finish) in  
193 - if !finish{  
194 - AppDelegate.instance().window?.makeToast("身份获取失败")  
195 - }  
196 - })  
197 - }else{  
198 - self.view.makeToast("修改个人信息失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
199 - }  
200 - }else{  
201 - self.view.makeToast("修改个人信息失败:\(error!.description)")  
202 - }  
203 - })  
204 - }else{  
205 - self.rightBarBtn.title="保存"  
206 - self.isUserActivity=true  
207 - self.loginoutBtn.isHidden=true  
208 - self.userSettingTableView.reloadData()  
209 - }  
210 - }  
211 -  
212 -}  
213 -  
214 -class PersonalSettingCell: UITableViewCell {  
215 -  
216 -  
217 - @IBOutlet weak var nameLabelRightSpace: NSLayoutConstraint!  
218 -  
219 - @IBOutlet weak var rightArrow: UIImageView!  
220 - @IBOutlet weak var namelabel: UILabel!  
221 - @IBOutlet weak var imagePhoto: UIImageView!  
222 - @IBOutlet weak var nameTitleLabel: UILabel!  
223 -  
224 -  
225 -}  
226 -  
227 -class Contact {  
228 - var nickName:String!  
229 - var userId:String!  
230 - var userSex:String!  
231 - var imageURL:String!  
232 - init() {  
233 - nickName = AppDelegate.instance().accountManager.name()  
234 - userId = AppDelegate.instance().accountManager.phone()  
235 - userSex = "男"  
236 - imageURL = AppDelegate.instance().accountManager.photo()  
237 - }  
238 -}  
YouerLiveVideo/YouerLiveVideo/controller/UserCenter/RegisterViewController.swift
@@ -1,173 +0,0 @@ @@ -1,173 +0,0 @@
1 -//  
2 -// RegisterViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 16/11/9.  
6 -// Copyright © 2016年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class RegisterViewController: UIViewController,UIAlertViewDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UITextFieldDelegate{  
12 -  
13 -  
14 - @IBOutlet weak var sendVerificationCode: UIButton!  
15 - @IBOutlet var nikeNameTextFiled: UITextField! //昵称  
16 - @IBOutlet var passwordTextField: UITextField! //输入密码  
17 - @IBOutlet var confirmPasswordTextField: UITextField!//确认密码  
18 - @IBOutlet weak var phoneNumber: UITextField!  
19 - @IBOutlet weak var inputVerificationCode: UITextField!//验证码  
20 - @IBOutlet weak var registerBtn: UIButton!  
21 - @IBOutlet weak var nickNameLabel: UILabel!  
22 - @IBOutlet weak var sendPhotoImage: UIImageView!  
23 - var iconImage: UIImage?  
24 - var name: String=""  
25 - override func viewDidLoad() {  
26 - super.viewDidLoad()  
27 - // Do any additional setup after loading the view.  
28 - }  
29 -  
30 - @IBAction func touchAction(_ sender: AnyObject) {  
31 - self.view.endEditing(true)//回收键盘  
32 - }  
33 - override func didReceiveMemoryWarning() {  
34 - super.didReceiveMemoryWarning()  
35 - // Dispose of any resources that can be recreated.  
36 - }  
37 - func textFieldShouldReturn(_ textField: UITextField) -> Bool {  
38 - textField.resignFirstResponder()  
39 - return true  
40 - }  
41 -  
42 - @IBAction func sendVerificationCodeClickAction(_ sender: AnyObject) {//发验证码  
43 - self.view.endEditing(true)  
44 - if nikeNameTextFiled.text!.characters.count<11{  
45 - if passwordTextField.text!.characters.count>=6 && passwordTextField.text!.characters.count<=8 && confirmPasswordTextField.text!.characters.count>=6 && confirmPasswordTextField.text!.characters.count<=8{  
46 - if passwordTextField.text!==confirmPasswordTextField.text!{  
47 - if (phoneNumber.text?.isMobilePhoneNumber())! {  
48 - SVProgressHUD.show(withStatus: "获取验证码...")  
49 - SVProgressHUD.setDefaultMaskType(.black)  
50 - AppDelegate.instance().httpServer.getChangePhoneCaptcha(mobile: phoneNumber.text!, completionHandler: { (str, error) in  
51 - SVProgressHUD.dismiss()  
52 - if error==nil {  
53 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
54 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
55 - self.view.makeToast("验证码发送成功")  
56 - self.nikeNameTextFiled.isUserInteractionEnabled=false  
57 - self.phoneNumber.isUserInteractionEnabled=false  
58 - self.passwordTextField.isUserInteractionEnabled=false  
59 - self.confirmPasswordTextField.isUserInteractionEnabled=false  
60 - }, failHandler: { (error) in  
61 - self.view.makeToast("验证码发送失败:\(error.localizedDescription)")  
62 - })  
63 - }else{  
64 - self.view.makeToast("验证码发送失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
65 - }  
66 - }else{  
67 - self.view.makeToast("验证码发送失败:\(error!.description)")  
68 - }  
69 - })  
70 - }else{  
71 - self.view.makeToast("请输入正确手机号")  
72 - }  
73 - }else{  
74 - self.view.makeToast("两次输入密码不一致")  
75 - }  
76 - }else{  
77 - self.view.makeToast("密码必须为6-8位字符或者数字")  
78 - }  
79 - }else{  
80 - self.view.makeToast("昵称必须小于11位")  
81 - }  
82 - }  
83 -  
84 - @IBAction func registerBtnAction(_ sender: AnyObject) {//注册  
85 - if inputVerificationCode.text!.characters.count == 4{  
86 - SVProgressHUD.show(withStatus: "注册...")  
87 - SVProgressHUD.setDefaultMaskType(.black)  
88 - let parameters:Dictionary<String,AnyObject>=["f_Account":phoneNumber.text! as AnyObject,"f_UserPassword":passwordTextField.text! as AnyObject,"f_RealName": (nikeNameTextFiled.text!=="" ? phoneNumber.text! : nikeNameTextFiled.text!) as AnyObject,"f_MobilePhone":phoneNumber.text! as AnyObject,"f_VerCode":inputVerificationCode.text! as AnyObject]  
89 - AppDelegate.instance().httpServer.getCreateUser(parameters: parameters) { (str, error) in  
90 - SVProgressHUD.dismiss()  
91 - self.nikeNameTextFiled.isUserInteractionEnabled=true  
92 - self.phoneNumber.isUserInteractionEnabled=true  
93 - self.passwordTextField.isUserInteractionEnabled=true  
94 - self.confirmPasswordTextField.isUserInteractionEnabled=true  
95 - if error==nil {  
96 - if JSON.fromString(jsonString: str)!["status"].intValue == 1{  
97 - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in  
98 - self.navigationController!.popToRootViewController(animated: true)  
99 - AppDelegate.instance().window?.makeToast("注册成功")  
100 - NotificationCenter.default.post(name: NSNotification.Name(rawValue: "refreshLoginUser"), object: self.phoneNumber.text!)  
101 - //是否登录  
102 - }, failHandler: { (error) in  
103 - self.view.makeToast("注册失败:\(error.localizedDescription)")  
104 - })  
105 - }else{  
106 - self.view.makeToast("注册失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")  
107 - }  
108 - }else{  
109 - self.view.makeToast("注册失败:\(error!.description)")  
110 - }  
111 - }  
112 - }else{  
113 - self.view.makeToast("验证码必须是四位数字")  
114 - }  
115 - }  
116 -  
117 -  
118 - @IBAction func loginBtnClickAction(_ sender: AnyObject) {  
119 - self.navigationController!.popViewController(animated: false)  
120 - }  
121 -  
122 - @IBAction func nickNameSetTapAction(_ sender: AnyObject) {  
123 - let alert = UIAlertController(title: "设置昵称", message: "", preferredStyle: .alert)  
124 - alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil))  
125 - alert.addAction(UIAlertAction(title: "确定", style: .default, handler: { (action) in  
126 - if alert.textFields![0].text == ""{  
127 - return  
128 - }  
129 - self.name = alert.textFields![0].text!  
130 - self.nickNameLabel.text = alert.textFields![0].text  
131 - }))  
132 -  
133 - alert.addTextField { (text) in  
134 - text.placeholder = "请输入昵称"  
135 - }  
136 - self.present(alert, animated: true, completion: nil)  
137 - }  
138 -  
139 - @IBAction func sendPhotoImageTapAction(_ sender: AnyObject) {  
140 - if cameraOrPhotPermissions(0, view: self.view){  
141 - let vc = UIImagePickerController()  
142 - vc.delegate = self  
143 - vc.sourceType = .photoLibrary  
144 - self.present(vc, animated: true, completion: nil)  
145 - }else{  
146 -  
147 - }  
148 - }  
149 -  
150 - func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {  
151 - picker.dismiss(animated: true, completion: { () -> Void in  
152 - var oimage = info[UIImagePickerControllerOriginalImage] as? UIImage  
153 - oimage = oimage!.imageScaledToScale()  
154 - let filePath=FilesManager.imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))  
155 - try? UIImageJPEGRepresentation(oimage!,0.5)!.write(to: URL(fileURLWithPath: filePath), options: [.atomic])  
156 - self.sendPhotoImage.layer.masksToBounds = true  
157 - self.sendPhotoImage.layer.cornerRadius = 25  
158 - self.sendPhotoImage.image = oimage  
159 - self.iconImage = oimage  
160 - })  
161 - }  
162 -  
163 - /*  
164 - // MARK: - Navigation  
165 -  
166 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
167 - override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {  
168 - // Get the new view controller using segue.destinationViewController.  
169 - // Pass the selected object to the new view controller.  
170 - }  
171 - */  
172 -  
173 -}  
YouerLiveVideo/YouerLiveVideo/controller/UserCenter/User.storyboard
@@ -1,1490 +0,0 @@ @@ -1,1490 +0,0 @@
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 - <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="Aspect ratio constraints" minToolsVersion="5.1"/>  
9 - <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>  
10 - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>  
11 - </dependencies>  
12 - <scenes>  
13 - <!--Login View Controller-->  
14 - <scene sceneID="orQ-wB-ipa">  
15 - <objects>  
16 - <viewController storyboardIdentifier="LoginViewControllerVC" id="fvc-9c-Gca" customClass="LoginViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
17 - <layoutGuides>  
18 - <viewControllerLayoutGuide type="top" id="M3F-7t-f1g"/>  
19 - <viewControllerLayoutGuide type="bottom" id="agc-xf-u2B"/>  
20 - </layoutGuides>  
21 - <view key="view" contentMode="scaleToFill" id="rVC-Df-GKu">  
22 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
23 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
24 - <subviews>  
25 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="loginBackGround" translatesAutoresizingMaskIntoConstraints="NO" id="Bob-Ef-450">  
26 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
27 - </imageView>  
28 - <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tqb-X5-ujR" customClass="UIControl">  
29 - <rect key="frame" x="0.0" y="186" width="375" height="220"/>  
30 - <subviews>  
31 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eXd-TY-qlW">  
32 - <rect key="frame" x="62.5" y="0.0" width="250" height="112"/>  
33 - <subviews>  
34 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EAC-sg-BLE">  
35 - <rect key="frame" x="0.0" y="0.0" width="250" height="56"/>  
36 - <subviews>  
37 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NJW-yg-XQM">  
38 - <rect key="frame" x="0.0" y="55" width="250" height="1"/>  
39 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
40 - <constraints>  
41 - <constraint firstAttribute="height" constant="1" id="GtD-JL-A0z"/>  
42 - </constraints>  
43 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
44 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
45 - <nil key="highlightedColor"/>  
46 - </label>  
47 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="userId.png" translatesAutoresizingMaskIntoConstraints="NO" id="1xZ-bM-AMz">  
48 - <rect key="frame" x="8" y="12.5" width="20" height="31"/>  
49 - <constraints>  
50 - <constraint firstAttribute="width" constant="20" id="3hd-Sx-hPC"/>  
51 - <constraint firstAttribute="width" secondItem="1xZ-bM-AMz" secondAttribute="height" multiplier="9:14" id="DCg-L0-4Lx"/>  
52 - </constraints>  
53 - </imageView>  
54 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入11位数的手机号码 " minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="IzH-dB-I9H">  
55 - <rect key="frame" x="36" y="18.5" width="214" height="19"/>  
56 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
57 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
58 - <textInputTraits key="textInputTraits" keyboardType="numberPad"/>  
59 - <connections>  
60 - <outlet property="delegate" destination="fvc-9c-Gca" id="l7n-F4-FsF"/>  
61 - </connections>  
62 - </textField>  
63 - </subviews>  
64 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
65 - <constraints>  
66 - <constraint firstAttribute="trailing" secondItem="IzH-dB-I9H" secondAttribute="trailing" id="DIX-3U-BQG"/>  
67 - <constraint firstAttribute="height" constant="56" id="Ff7-2n-071"/>  
68 - <constraint firstItem="IzH-dB-I9H" firstAttribute="leading" secondItem="1xZ-bM-AMz" secondAttribute="trailing" constant="8" id="Mi3-ud-m0O"/>  
69 - <constraint firstItem="IzH-dB-I9H" firstAttribute="centerY" secondItem="EAC-sg-BLE" secondAttribute="centerY" id="Ud1-tF-ivz"/>  
70 - <constraint firstItem="1xZ-bM-AMz" firstAttribute="leading" secondItem="EAC-sg-BLE" secondAttribute="leading" constant="8" id="Z77-MJ-BF0"/>  
71 - <constraint firstAttribute="bottom" secondItem="NJW-yg-XQM" secondAttribute="bottom" id="i3N-yW-fre"/>  
72 - <constraint firstAttribute="trailing" secondItem="NJW-yg-XQM" secondAttribute="trailing" id="ued-ca-1l3"/>  
73 - <constraint firstItem="1xZ-bM-AMz" firstAttribute="centerY" secondItem="EAC-sg-BLE" secondAttribute="centerY" id="xd6-hf-JPu"/>  
74 - <constraint firstItem="NJW-yg-XQM" firstAttribute="leading" secondItem="EAC-sg-BLE" secondAttribute="leading" id="xlc-R5-T0J"/>  
75 - </constraints>  
76 - </view>  
77 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xba-Rv-jIe">  
78 - <rect key="frame" x="0.0" y="56" width="250" height="56"/>  
79 - <subviews>  
80 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BcZ-u5-RFA">  
81 - <rect key="frame" x="0.0" y="55" width="250" height="1"/>  
82 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
83 - <constraints>  
84 - <constraint firstAttribute="height" constant="1" id="aAz-El-TeO"/>  
85 - </constraints>  
86 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
87 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
88 - <nil key="highlightedColor"/>  
89 - </label>  
90 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="userPassword.png" translatesAutoresizingMaskIntoConstraints="NO" id="oON-zY-4HS">  
91 - <rect key="frame" x="8" y="15" width="20" height="26"/>  
92 - <constraints>  
93 - <constraint firstAttribute="width" secondItem="oON-zY-4HS" secondAttribute="height" multiplier="31:41" id="hSc-3U-3kl"/>  
94 - <constraint firstAttribute="width" constant="20" id="vb3-Wd-N14"/>  
95 - </constraints>  
96 - </imageView>  
97 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入6位以上的密码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="nVn-EA-yWM">  
98 - <rect key="frame" x="36" y="18.5" width="214" height="19"/>  
99 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
100 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
101 - <textInputTraits key="textInputTraits" secureTextEntry="YES"/>  
102 - <connections>  
103 - <outlet property="delegate" destination="fvc-9c-Gca" id="tMS-9N-o09"/>  
104 - </connections>  
105 - </textField>  
106 - </subviews>  
107 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
108 - <constraints>  
109 - <constraint firstItem="oON-zY-4HS" firstAttribute="leading" secondItem="xba-Rv-jIe" secondAttribute="leading" constant="8" id="6sV-zB-qIs"/>  
110 - <constraint firstItem="nVn-EA-yWM" firstAttribute="centerY" secondItem="xba-Rv-jIe" secondAttribute="centerY" id="HaD-wa-ZFb"/>  
111 - <constraint firstAttribute="trailing" secondItem="BcZ-u5-RFA" secondAttribute="trailing" id="KDU-ei-Izn"/>  
112 - <constraint firstItem="nVn-EA-yWM" firstAttribute="leading" secondItem="oON-zY-4HS" secondAttribute="trailing" constant="8" id="LHP-bs-Kee"/>  
113 - <constraint firstAttribute="bottom" secondItem="BcZ-u5-RFA" secondAttribute="bottom" id="N41-uo-obj"/>  
114 - <constraint firstItem="oON-zY-4HS" firstAttribute="centerY" secondItem="xba-Rv-jIe" secondAttribute="centerY" id="Sf8-w6-WiM"/>  
115 - <constraint firstAttribute="trailing" secondItem="nVn-EA-yWM" secondAttribute="trailing" id="UTj-My-xsB"/>  
116 - <constraint firstItem="BcZ-u5-RFA" firstAttribute="leading" secondItem="xba-Rv-jIe" secondAttribute="leading" id="gei-H3-PPW"/>  
117 - </constraints>  
118 - </view>  
119 - </subviews>  
120 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
121 - <constraints>  
122 - <constraint firstAttribute="trailing" secondItem="xba-Rv-jIe" secondAttribute="trailing" id="0A8-Lv-KWd"/>  
123 - <constraint firstAttribute="height" constant="112" id="0mn-L0-Qpr"/>  
124 - <constraint firstItem="EAC-sg-BLE" firstAttribute="top" secondItem="eXd-TY-qlW" secondAttribute="top" id="Bsa-ry-Tmn"/>  
125 - <constraint firstItem="xba-Rv-jIe" firstAttribute="top" secondItem="EAC-sg-BLE" secondAttribute="bottom" id="OKE-Ch-lJc"/>  
126 - <constraint firstAttribute="bottom" secondItem="xba-Rv-jIe" secondAttribute="bottom" id="aCK-P5-ecJ"/>  
127 - <constraint firstItem="xba-Rv-jIe" firstAttribute="leading" secondItem="eXd-TY-qlW" secondAttribute="leading" id="aap-4K-zSS"/>  
128 - <constraint firstItem="EAC-sg-BLE" firstAttribute="leading" secondItem="eXd-TY-qlW" secondAttribute="leading" id="e0b-LG-hBZ"/>  
129 - <constraint firstAttribute="trailing" secondItem="EAC-sg-BLE" secondAttribute="trailing" id="uOA-y7-ZUY"/>  
130 - </constraints>  
131 - </view>  
132 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qs2-9k-jbh">  
133 - <rect key="frame" x="62.5" y="144" width="250" height="30"/>  
134 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
135 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
136 - <state key="normal" title="登录">  
137 - <color key="titleColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
138 - </state>  
139 - <userDefinedRuntimeAttributes>  
140 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
141 - <integer key="value" value="15"/>  
142 - </userDefinedRuntimeAttribute>  
143 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
144 - </userDefinedRuntimeAttributes>  
145 - <connections>  
146 - <action selector="loginBtnClickAction:" destination="fvc-9c-Gca" eventType="touchUpInside" id="INl-Rf-lsr"/>  
147 - </connections>  
148 - </button>  
149 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pzO-1N-Vrz">  
150 - <rect key="frame" x="62.5" y="182" width="250" height="30"/>  
151 - <subviews>  
152 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="忘记密码" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="v6n-Br-sBy">  
153 - <rect key="frame" x="0.0" y="0.0" width="53.5" height="30"/>  
154 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
155 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
156 - <nil key="highlightedColor"/>  
157 - </label>  
158 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注册" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7fx-1i-VwW">  
159 - <rect key="frame" x="223" y="0.0" width="27" height="30"/>  
160 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
161 - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
162 - <nil key="highlightedColor"/>  
163 - </label>  
164 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ps0-yz-uMV">  
165 - <rect key="frame" x="0.0" y="0.0" width="250" height="30"/>  
166 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
167 - <state key="normal">  
168 - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
169 - </state>  
170 - <connections>  
171 - <action selector="registerBtnClickAction:" destination="fvc-9c-Gca" eventType="touchUpInside" id="joQ-gk-ZzE"/>  
172 - </connections>  
173 - </button>  
174 - </subviews>  
175 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
176 - <constraints>  
177 - <constraint firstItem="ps0-yz-uMV" firstAttribute="top" secondItem="pzO-1N-Vrz" secondAttribute="top" id="7G1-mO-jQj"/>  
178 - <constraint firstAttribute="trailing" secondItem="7fx-1i-VwW" secondAttribute="trailing" id="8ot-xx-BFo"/>  
179 - <constraint firstAttribute="bottom" secondItem="7fx-1i-VwW" secondAttribute="bottom" id="Byb-9b-kOd"/>  
180 - <constraint firstAttribute="height" constant="30" id="TT4-WL-hYa"/>  
181 - <constraint firstItem="7fx-1i-VwW" firstAttribute="top" secondItem="pzO-1N-Vrz" secondAttribute="top" id="VzP-hc-s7a"/>  
182 - <constraint firstAttribute="bottom" secondItem="ps0-yz-uMV" secondAttribute="bottom" id="d8H-p3-iy8"/>  
183 - <constraint firstAttribute="trailing" secondItem="ps0-yz-uMV" secondAttribute="trailing" id="eo1-LL-5jy"/>  
184 - <constraint firstAttribute="bottom" secondItem="v6n-Br-sBy" secondAttribute="bottom" id="gbJ-jU-WFB"/>  
185 - <constraint firstItem="v6n-Br-sBy" firstAttribute="top" secondItem="pzO-1N-Vrz" secondAttribute="top" id="hj5-hs-ep4"/>  
186 - <constraint firstItem="ps0-yz-uMV" firstAttribute="leading" secondItem="pzO-1N-Vrz" secondAttribute="leading" id="uJt-wq-oTh"/>  
187 - <constraint firstItem="v6n-Br-sBy" firstAttribute="leading" secondItem="pzO-1N-Vrz" secondAttribute="leading" id="xdM-JA-UcQ"/>  
188 - </constraints>  
189 - </view>  
190 - </subviews>  
191 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
192 - <constraints>  
193 - <constraint firstItem="eXd-TY-qlW" firstAttribute="width" secondItem="tqb-X5-ujR" secondAttribute="width" multiplier="2:3" id="28b-2f-9yl"/>  
194 - <constraint firstAttribute="bottom" secondItem="pzO-1N-Vrz" secondAttribute="bottom" constant="8" id="AcS-52-YRY"/>  
195 - <constraint firstAttribute="height" constant="220" id="JHj-W0-zAJ"/>  
196 - <constraint firstItem="pzO-1N-Vrz" firstAttribute="width" secondItem="Qs2-9k-jbh" secondAttribute="width" id="RHT-EX-Fz6"/>  
197 - <constraint firstItem="eXd-TY-qlW" firstAttribute="centerX" secondItem="tqb-X5-ujR" secondAttribute="centerX" id="Yap-fj-Sza"/>  
198 - <constraint firstItem="pzO-1N-Vrz" firstAttribute="top" secondItem="Qs2-9k-jbh" secondAttribute="bottom" constant="8" id="YqV-mN-jUi"/>  
199 - <constraint firstItem="Qs2-9k-jbh" firstAttribute="centerX" secondItem="tqb-X5-ujR" secondAttribute="centerX" id="icb-A7-CtC"/>  
200 - <constraint firstItem="Qs2-9k-jbh" firstAttribute="width" secondItem="eXd-TY-qlW" secondAttribute="width" id="ipD-di-CWB"/>  
201 - <constraint firstItem="pzO-1N-Vrz" firstAttribute="centerX" secondItem="tqb-X5-ujR" secondAttribute="centerX" id="o6l-Fj-Cb6"/>  
202 - <constraint firstItem="eXd-TY-qlW" firstAttribute="top" secondItem="tqb-X5-ujR" secondAttribute="top" id="uPt-SF-Tbq"/>  
203 - </constraints>  
204 - </view>  
205 - </subviews>  
206 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
207 - <gestureRecognizers/>  
208 - <constraints>  
209 - <constraint firstItem="agc-xf-u2B" firstAttribute="top" secondItem="Bob-Ef-450" secondAttribute="bottom" id="1po-1a-xaB"/>  
210 - <constraint firstItem="Bob-Ef-450" firstAttribute="leading" secondItem="rVC-Df-GKu" secondAttribute="leading" id="7Sq-vg-TJG"/>  
211 - <constraint firstAttribute="trailing" secondItem="tqb-X5-ujR" secondAttribute="trailing" id="F9s-LV-2UW"/>  
212 - <constraint firstItem="tqb-X5-ujR" firstAttribute="top" secondItem="M3F-7t-f1g" secondAttribute="bottom" constant="166" id="Oea-d4-0BB"/>  
213 - <constraint firstItem="Bob-Ef-450" firstAttribute="top" secondItem="rVC-Df-GKu" secondAttribute="top" id="TCI-Vu-vUz"/>  
214 - <constraint firstAttribute="trailing" secondItem="Bob-Ef-450" secondAttribute="trailing" id="y4W-E4-8L6"/>  
215 - <constraint firstItem="tqb-X5-ujR" firstAttribute="leading" secondItem="rVC-Df-GKu" secondAttribute="leading" id="zlD-w4-YPr"/>  
216 - </constraints>  
217 - <connections>  
218 - <outletCollection property="gestureRecognizers" destination="X5v-TO-Lu5" appends="YES" id="QuA-4X-qlp"/>  
219 - </connections>  
220 - </view>  
221 - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>  
222 - <size key="freeformSize" width="375" height="667"/>  
223 - <connections>  
224 - <outlet property="changeViewTop" destination="Oea-d4-0BB" id="FSX-wE-ENn"/>  
225 - <outlet property="passwordTextField" destination="nVn-EA-yWM" id="k8J-rx-Oub"/>  
226 - <outlet property="phoneNumberTextField" destination="IzH-dB-I9H" id="7Kd-jZ-pC2"/>  
227 - </connections>  
228 - </viewController>  
229 - <placeholder placeholderIdentifier="IBFirstResponder" id="4gl-mL-off" userLabel="First Responder" sceneMemberID="firstResponder"/>  
230 - <tapGestureRecognizer id="X5v-TO-Lu5">  
231 - <connections>  
232 - <action selector="touchAction:" destination="fvc-9c-Gca" id="oP2-EM-bgW"/>  
233 - </connections>  
234 - </tapGestureRecognizer>  
235 - </objects>  
236 - <point key="canvasLocation" x="-1468" y="1534.1829085457273"/>  
237 - </scene>  
238 - <!--个人设置-->  
239 - <scene sceneID="7Fy-nr-XeV">  
240 - <objects>  
241 - <viewController storyboardIdentifier="PersonalSettingViewControllerVC" id="zag-ex-Ns7" customClass="PersonalSettingViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
242 - <layoutGuides>  
243 - <viewControllerLayoutGuide type="top" id="UCq-di-1FE"/>  
244 - <viewControllerLayoutGuide type="bottom" id="6c4-3r-MCg"/>  
245 - </layoutGuides>  
246 - <view key="view" contentMode="scaleToFill" id="ohI-ec-VmG">  
247 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
248 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
249 - <subviews>  
250 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="zVa-Jq-aTu">  
251 - <rect key="frame" x="0.0" y="64" width="375" height="535"/>  
252 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
253 - <view key="tableFooterView" contentMode="scaleToFill" id="12C-tj-ZV7">  
254 - <rect key="frame" x="0.0" y="72" width="375" height="1"/>  
255 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
256 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
257 - </view>  
258 - <prototypes>  
259 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="P7c-Ko-kqd" customClass="PersonalSettingCell" customModule="YouerLiveVideo" customModuleProvider="target">  
260 - <rect key="frame" x="0.0" y="28" width="375" height="44"/>  
261 - <autoresizingMask key="autoresizingMask"/>  
262 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="P7c-Ko-kqd" id="Raa-86-9ng">  
263 - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>  
264 - <autoresizingMask key="autoresizingMask"/>  
265 - <subviews>  
266 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="手机号(账号)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="juK-fe-Y7f">  
267 - <rect key="frame" x="15" y="12" width="105" height="20.5"/>  
268 - <constraints>  
269 - <constraint firstAttribute="width" constant="105" id="Lby-yz-Twy"/>  
270 - </constraints>  
271 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
272 - <nil key="textColor"/>  
273 - <nil key="highlightedColor"/>  
274 - </label>  
275 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="收拢.png" translatesAutoresizingMaskIntoConstraints="NO" id="k9H-ER-871">  
276 - <rect key="frame" x="350" y="13.5" width="10" height="17"/>  
277 - <constraints>  
278 - <constraint firstAttribute="width" secondItem="k9H-ER-871" secondAttribute="height" multiplier="3:5" id="34k-Gi-2Ee"/>  
279 - <constraint firstAttribute="width" constant="10" id="zRD-Rc-v5U"/>  
280 - </constraints>  
281 - </imageView>  
282 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pMa-ZG-7NM">  
283 - <rect key="frame" x="121" y="12" width="221" height="20.5"/>  
284 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
285 - <color key="textColor" red="0.65098039220000004" green="0.65098039220000004" blue="0.6588235294" alpha="1" colorSpace="calibratedRGB"/>  
286 - <nil key="highlightedColor"/>  
287 - </label>  
288 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="oH0-ty-ODc">  
289 - <rect key="frame" x="312" y="7" width="30" height="30"/>  
290 - <constraints>  
291 - <constraint firstAttribute="width" constant="30" id="QjD-M0-idc"/>  
292 - </constraints>  
293 - <userDefinedRuntimeAttributes>  
294 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
295 - <integer key="value" value="15"/>  
296 - </userDefinedRuntimeAttribute>  
297 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
298 - </userDefinedRuntimeAttributes>  
299 - </imageView>  
300 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YOS-pR-e5K">  
301 - <rect key="frame" x="0.0" y="43" width="375" height="1"/>  
302 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
303 - <constraints>  
304 - <constraint firstAttribute="height" constant="1" id="XMZ-BJ-Nya"/>  
305 - </constraints>  
306 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
307 - <nil key="textColor"/>  
308 - <nil key="highlightedColor"/>  
309 - </label>  
310 - </subviews>  
311 - <constraints>  
312 - <constraint firstItem="oH0-ty-ODc" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="0Ml-yS-EZ4"/>  
313 - <constraint firstItem="pMa-ZG-7NM" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="9i5-Ih-kN3"/>  
314 - <constraint firstItem="oH0-ty-ODc" firstAttribute="width" secondItem="oH0-ty-ODc" secondAttribute="height" multiplier="1:1" id="L8W-NL-DGV"/>  
315 - <constraint firstItem="juK-fe-Y7f" firstAttribute="leading" secondItem="Raa-86-9ng" secondAttribute="leading" constant="15" id="PDU-zE-jvH"/>  
316 - <constraint firstItem="k9H-ER-871" firstAttribute="leading" secondItem="oH0-ty-ODc" secondAttribute="trailing" constant="8" id="PPI-rR-Ewq"/>  
317 - <constraint firstItem="YOS-pR-e5K" firstAttribute="leading" secondItem="Raa-86-9ng" secondAttribute="leading" id="bQa-xi-SKl"/>  
318 - <constraint firstItem="k9H-ER-871" firstAttribute="leading" secondItem="pMa-ZG-7NM" secondAttribute="trailing" constant="8" id="cZi-Wn-11t"/>  
319 - <constraint firstAttribute="trailing" secondItem="YOS-pR-e5K" secondAttribute="trailing" id="ecZ-Tm-SQO"/>  
320 - <constraint firstItem="juK-fe-Y7f" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="hBl-MZ-jo2"/>  
321 - <constraint firstAttribute="bottom" secondItem="YOS-pR-e5K" secondAttribute="bottom" id="k7i-5l-x8C"/>  
322 - <constraint firstItem="pMa-ZG-7NM" firstAttribute="leading" secondItem="juK-fe-Y7f" secondAttribute="trailing" constant="1" id="oSX-xs-mQG"/>  
323 - <constraint firstItem="k9H-ER-871" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="x0P-SE-6dn"/>  
324 - <constraint firstAttribute="trailing" secondItem="k9H-ER-871" secondAttribute="trailing" constant="15" id="yL7-gI-6Bh"/>  
325 - </constraints>  
326 - </tableViewCellContentView>  
327 - <connections>  
328 - <outlet property="imagePhoto" destination="oH0-ty-ODc" id="iQv-S2-ItJ"/>  
329 - <outlet property="nameLabelRightSpace" destination="cZi-Wn-11t" id="Wls-8Y-XeT"/>  
330 - <outlet property="nameTitleLabel" destination="juK-fe-Y7f" id="eMi-cJ-35W"/>  
331 - <outlet property="namelabel" destination="pMa-ZG-7NM" id="3FP-fk-MfF"/>  
332 - <outlet property="rightArrow" destination="k9H-ER-871" id="pH9-he-yub"/>  
333 - </connections>  
334 - </tableViewCell>  
335 - </prototypes>  
336 - <connections>  
337 - <outlet property="dataSource" destination="zag-ex-Ns7" id="h0H-BT-k7B"/>  
338 - <outlet property="delegate" destination="zag-ex-Ns7" id="7qk-li-aJ4"/>  
339 - </connections>  
340 - </tableView>  
341 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zoh-gF-GRC">  
342 - <rect key="frame" x="0.0" y="599" width="375" height="68"/>  
343 - <subviews>  
344 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O66-bx-WBX">  
345 - <rect key="frame" x="137.5" y="14" width="100" height="40"/>  
346 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
347 - <constraints>  
348 - <constraint firstAttribute="height" constant="40" id="bXw-Ag-yrj"/>  
349 - <constraint firstAttribute="width" constant="100" id="gZN-aT-Qe6"/>  
350 - </constraints>  
351 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
352 - <state key="normal" title="退出登录">  
353 - <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>  
354 - </state>  
355 - <userDefinedRuntimeAttributes>  
356 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
357 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
358 - <integer key="value" value="5"/>  
359 - </userDefinedRuntimeAttribute>  
360 - </userDefinedRuntimeAttributes>  
361 - <connections>  
362 - <action selector="ExsitBtnClickAction:" destination="zag-ex-Ns7" eventType="touchUpInside" id="cvZ-aV-t5N"/>  
363 - </connections>  
364 - </button>  
365 - </subviews>  
366 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
367 - <constraints>  
368 - <constraint firstItem="O66-bx-WBX" firstAttribute="centerX" secondItem="Zoh-gF-GRC" secondAttribute="centerX" id="Vgd-7C-PCW"/>  
369 - <constraint firstAttribute="height" constant="68" id="c9N-lN-Lbb"/>  
370 - <constraint firstItem="O66-bx-WBX" firstAttribute="centerY" secondItem="Zoh-gF-GRC" secondAttribute="centerY" id="gPv-om-cWX"/>  
371 - </constraints>  
372 - </view>  
373 - </subviews>  
374 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
375 - <constraints>  
376 - <constraint firstAttribute="trailing" secondItem="Zoh-gF-GRC" secondAttribute="trailing" id="28G-9t-FM1"/>  
377 - <constraint firstItem="Zoh-gF-GRC" firstAttribute="top" secondItem="zVa-Jq-aTu" secondAttribute="bottom" id="5df-U2-nj5"/>  
378 - <constraint firstItem="zVa-Jq-aTu" firstAttribute="top" secondItem="UCq-di-1FE" secondAttribute="bottom" id="QDW-Hg-bFk"/>  
379 - <constraint firstAttribute="trailing" secondItem="zVa-Jq-aTu" secondAttribute="trailing" id="gmi-IS-fwG"/>  
380 - <constraint firstItem="6c4-3r-MCg" firstAttribute="top" secondItem="Zoh-gF-GRC" secondAttribute="bottom" id="oJI-li-9v7"/>  
381 - <constraint firstItem="Zoh-gF-GRC" firstAttribute="leading" secondItem="ohI-ec-VmG" secondAttribute="leading" id="w19-By-97X"/>  
382 - <constraint firstItem="zVa-Jq-aTu" firstAttribute="leading" secondItem="ohI-ec-VmG" secondAttribute="leading" id="yos-vH-UlZ"/>  
383 - </constraints>  
384 - </view>  
385 - <navigationItem key="navigationItem" title="个人设置" id="oam-jc-du0">  
386 - <barButtonItem key="rightBarButtonItem" title="修改" id="HPL-MW-tPy">  
387 - <connections>  
388 - <action selector="finishAction:" destination="zag-ex-Ns7" id="vYu-XV-Oz1"/>  
389 - </connections>  
390 - </barButtonItem>  
391 - </navigationItem>  
392 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
393 - <connections>  
394 - <outlet property="loginoutBtn" destination="O66-bx-WBX" id="yBh-45-PmW"/>  
395 - <outlet property="rightBarBtn" destination="HPL-MW-tPy" id="iWY-Ng-b1p"/>  
396 - <outlet property="userSettingTableView" destination="zVa-Jq-aTu" id="62H-Yg-00D"/>  
397 - </connections>  
398 - </viewController>  
399 - <placeholder placeholderIdentifier="IBFirstResponder" id="Kw5-Rz-kOp" userLabel="First Responder" sceneMemberID="firstResponder"/>  
400 - </objects>  
401 - <point key="canvasLocation" x="-774" y="1534"/>  
402 - </scene>  
403 - <!--Register View Controller-->  
404 - <scene sceneID="81Y-IJ-Kye">  
405 - <objects>  
406 - <viewController storyboardIdentifier="RegisterViewControllerVC" id="tCx-JF-YJm" customClass="RegisterViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
407 - <layoutGuides>  
408 - <viewControllerLayoutGuide type="top" id="o4V-sv-MMh"/>  
409 - <viewControllerLayoutGuide type="bottom" id="T9H-hV-piI"/>  
410 - </layoutGuides>  
411 - <view key="view" contentMode="scaleToFill" id="i7O-Dj-x5S" customClass="UIControl">  
412 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
413 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
414 - <subviews>  
415 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="403-Gp-RaZ" customClass="UIControl">  
416 - <rect key="frame" x="0.0" y="20" width="375" height="168"/>  
417 - <subviews>  
418 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8h8-sS-iJ1">  
419 - <rect key="frame" x="138" y="15" width="99" height="99"/>  
420 - <subviews>  
421 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="上传头像" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MjO-1h-doT">  
422 - <rect key="frame" x="15" y="73" width="69.5" height="20.5"/>  
423 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
424 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
425 - <nil key="highlightedColor"/>  
426 - </label>  
427 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="上传头像.png" translatesAutoresizingMaskIntoConstraints="NO" id="1fC-6m-eDG">  
428 - <rect key="frame" x="24.5" y="15" width="50" height="50"/>  
429 - <constraints>  
430 - <constraint firstAttribute="width" secondItem="1fC-6m-eDG" secondAttribute="height" multiplier="1:1" id="nya-81-raI"/>  
431 - <constraint firstAttribute="height" constant="50" id="uJA-jF-kBe"/>  
432 - </constraints>  
433 - </imageView>  
434 - </subviews>  
435 - <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
436 - <gestureRecognizers/>  
437 - <constraints>  
438 - <constraint firstAttribute="width" secondItem="8h8-sS-iJ1" secondAttribute="height" multiplier="1:1" id="1dO-fX-vcH"/>  
439 - <constraint firstItem="1fC-6m-eDG" firstAttribute="top" secondItem="8h8-sS-iJ1" secondAttribute="top" constant="15" id="AZr-hi-5Ga"/>  
440 - <constraint firstAttribute="height" constant="99" id="EKP-qi-zdc"/>  
441 - <constraint firstAttribute="bottom" secondItem="1fC-6m-eDG" secondAttribute="bottom" constant="8" id="HCk-K2-bD9"/>  
442 - <constraint firstItem="MjO-1h-doT" firstAttribute="top" secondItem="1fC-6m-eDG" secondAttribute="bottom" constant="8" id="gDm-wv-uVd"/>  
443 - <constraint firstItem="MjO-1h-doT" firstAttribute="centerX" secondItem="8h8-sS-iJ1" secondAttribute="centerX" id="lEb-LK-Ayk"/>  
444 - <constraint firstItem="1fC-6m-eDG" firstAttribute="centerX" secondItem="8h8-sS-iJ1" secondAttribute="centerX" id="nF9-Di-ODB"/>  
445 - <constraint firstAttribute="bottom" secondItem="MjO-1h-doT" secondAttribute="bottom" constant="16" id="sgC-7Y-LpN"/>  
446 - </constraints>  
447 - <variation key="default">  
448 - <mask key="constraints">  
449 - <exclude reference="HCk-K2-bD9"/>  
450 - <exclude reference="sgC-7Y-LpN"/>  
451 - </mask>  
452 - </variation>  
453 - <connections>  
454 - <outletCollection property="gestureRecognizers" destination="aUf-CI-Y7V" appends="YES" id="6fC-6y-84F"/>  
455 - </connections>  
456 - </view>  
457 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HCl-PT-sCJ">  
458 - <rect key="frame" x="130.5" y="118" width="114.5" height="30"/>  
459 - <subviews>  
460 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="编辑.png" translatesAutoresizingMaskIntoConstraints="NO" id="YJG-jG-Ix8">  
461 - <rect key="frame" x="85.5" y="4.5" width="21" height="21"/>  
462 - <constraints>  
463 - <constraint firstAttribute="width" secondItem="YJG-jG-Ix8" secondAttribute="height" multiplier="1:1" id="nDw-SN-tx9"/>  
464 - <constraint firstAttribute="height" constant="21" id="qhY-Et-icJ"/>  
465 - </constraints>  
466 - </imageView>  
467 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="设置昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gj6-hl-Apj">  
468 - <rect key="frame" x="8" y="5" width="69.5" height="20.5"/>  
469 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
470 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
471 - <nil key="highlightedColor"/>  
472 - </label>  
473 - </subviews>  
474 - <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
475 - <gestureRecognizers/>  
476 - <constraints>  
477 - <constraint firstItem="YJG-jG-Ix8" firstAttribute="centerY" secondItem="HCl-PT-sCJ" secondAttribute="centerY" id="3WR-sv-c0Q"/>  
478 - <constraint firstItem="gj6-hl-Apj" firstAttribute="centerY" secondItem="HCl-PT-sCJ" secondAttribute="centerY" id="Dwp-Af-mLC"/>  
479 - <constraint firstItem="YJG-jG-Ix8" firstAttribute="leading" secondItem="gj6-hl-Apj" secondAttribute="trailing" constant="8" id="Yb9-mh-0fe"/>  
480 - <constraint firstItem="gj6-hl-Apj" firstAttribute="leading" secondItem="HCl-PT-sCJ" secondAttribute="leading" constant="8" id="kI8-65-C8Y"/>  
481 - <constraint firstAttribute="height" constant="30" id="laK-t9-f5W"/>  
482 - <constraint firstAttribute="trailing" secondItem="YJG-jG-Ix8" secondAttribute="trailing" constant="8" id="peS-OS-VwR"/>  
483 - </constraints>  
484 - <connections>  
485 - <outletCollection property="gestureRecognizers" destination="hfJ-NM-sst" appends="YES" id="AW1-A1-TlG"/>  
486 - </connections>  
487 - </view>  
488 - </subviews>  
489 - <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
490 - <constraints>  
491 - <constraint firstItem="8h8-sS-iJ1" firstAttribute="top" secondItem="403-Gp-RaZ" secondAttribute="top" constant="15" id="2WG-wR-ZQY"/>  
492 - <constraint firstItem="HCl-PT-sCJ" firstAttribute="centerX" secondItem="403-Gp-RaZ" secondAttribute="centerX" id="Ctu-87-5Xl"/>  
493 - <constraint firstItem="HCl-PT-sCJ" firstAttribute="top" secondItem="8h8-sS-iJ1" secondAttribute="bottom" constant="4" id="GK6-Qh-dBO"/>  
494 - <constraint firstItem="HCl-PT-sCJ" firstAttribute="top" secondItem="8h8-sS-iJ1" secondAttribute="bottom" constant="8" id="QPI-Mk-b8n"/>  
495 - <constraint firstAttribute="height" constant="168" id="yi6-JV-ObE"/>  
496 - <constraint firstItem="8h8-sS-iJ1" firstAttribute="centerX" secondItem="403-Gp-RaZ" secondAttribute="centerX" id="yrY-zt-nHi"/>  
497 - </constraints>  
498 - <variation key="default">  
499 - <mask key="constraints">  
500 - <exclude reference="QPI-Mk-b8n"/>  
501 - </mask>  
502 - </variation>  
503 - </view>  
504 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xNc-I3-UL6">  
505 - <rect key="frame" x="0.0" y="20" width="375" height="168"/>  
506 - <subviews>  
507 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Cp-hz-9O4">  
508 - <rect key="frame" x="0.0" y="0.0" width="375" height="56"/>  
509 - <subviews>  
510 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o5G-fF-wVL">  
511 - <rect key="frame" x="0.0" y="55" width="375" height="1"/>  
512 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
513 - <constraints>  
514 - <constraint firstAttribute="height" constant="1" id="lXH-lx-MSn"/>  
515 - </constraints>  
516 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
517 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
518 - <nil key="highlightedColor"/>  
519 - </label>  
520 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O8o-oN-LAH">  
521 - <rect key="frame" x="8" y="19" width="73" height="18"/>  
522 - <constraints>  
523 - <constraint firstAttribute="width" constant="73" id="bAz-Uv-bTd"/>  
524 - </constraints>  
525 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
526 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
527 - <nil key="highlightedColor"/>  
528 - </label>  
529 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入昵称 " minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="q7i-9n-2oP">  
530 - <rect key="frame" x="89" y="18.5" width="278" height="19"/>  
531 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
532 - <textInputTraits key="textInputTraits" returnKeyType="done"/>  
533 - </textField>  
534 - </subviews>  
535 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
536 - <constraints>  
537 - <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="56" id="Ctl-Pt-CPh"/>  
538 - <constraint firstItem="o5G-fF-wVL" firstAttribute="leading" secondItem="1Cp-hz-9O4" secondAttribute="leading" id="RLm-KI-JX6"/>  
539 - <constraint firstAttribute="height" constant="56" id="UfT-BQ-siu"/>  
540 - <constraint firstItem="O8o-oN-LAH" firstAttribute="leading" secondItem="1Cp-hz-9O4" secondAttribute="leading" constant="8" id="XGD-rw-eCb"/>  
541 - <constraint firstAttribute="trailing" secondItem="q7i-9n-2oP" secondAttribute="trailing" constant="8" id="YdO-o5-5VF"/>  
542 - <constraint firstAttribute="bottom" secondItem="o5G-fF-wVL" secondAttribute="bottom" id="f6j-pG-Rae"/>  
543 - <constraint firstItem="q7i-9n-2oP" firstAttribute="centerY" secondItem="1Cp-hz-9O4" secondAttribute="centerY" id="fKp-1x-vbL"/>  
544 - <constraint firstItem="q7i-9n-2oP" firstAttribute="leading" secondItem="O8o-oN-LAH" secondAttribute="trailing" constant="8" id="gEm-U9-rh0"/>  
545 - <constraint firstItem="O8o-oN-LAH" firstAttribute="centerY" secondItem="1Cp-hz-9O4" secondAttribute="centerY" id="t0o-1a-As6"/>  
546 - <constraint firstAttribute="trailing" secondItem="o5G-fF-wVL" secondAttribute="trailing" id="wvf-Cp-571"/>  
547 - </constraints>  
548 - </view>  
549 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="keu-Ke-SrA">  
550 - <rect key="frame" x="0.0" y="56" width="375" height="56"/>  
551 - <subviews>  
552 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hwy-QV-ob8">  
553 - <rect key="frame" x="0.0" y="55" width="375" height="1"/>  
554 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
555 - <constraints>  
556 - <constraint firstAttribute="height" constant="1" id="1bP-ob-qdI"/>  
557 - </constraints>  
558 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
559 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
560 - <nil key="highlightedColor"/>  
561 - </label>  
562 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="密码" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xBV-ds-Ub9">  
563 - <rect key="frame" x="8" y="19" width="73" height="18"/>  
564 - <constraints>  
565 - <constraint firstAttribute="width" constant="73" id="SAa-QZ-uJF"/>  
566 - </constraints>  
567 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
568 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
569 - <nil key="highlightedColor"/>  
570 - </label>  
571 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="i3R-4H-gzp">  
572 - <rect key="frame" x="89" y="18.5" width="278" height="19"/>  
573 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
574 - <textInputTraits key="textInputTraits" keyboardType="alphabet" returnKeyType="done"/>  
575 - <connections>  
576 - <outlet property="delegate" destination="tCx-JF-YJm" id="Awg-pn-DAx"/>  
577 - </connections>  
578 - </textField>  
579 - </subviews>  
580 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
581 - <constraints>  
582 - <constraint firstAttribute="bottom" secondItem="Hwy-QV-ob8" secondAttribute="bottom" id="Cf7-PL-DRi"/>  
583 - <constraint firstItem="xBV-ds-Ub9" firstAttribute="leading" secondItem="keu-Ke-SrA" secondAttribute="leading" constant="8" id="F8L-Q3-KCF"/>  
584 - <constraint firstAttribute="trailing" secondItem="i3R-4H-gzp" secondAttribute="trailing" constant="8" id="XnD-Fb-exn"/>  
585 - <constraint firstAttribute="trailing" secondItem="Hwy-QV-ob8" secondAttribute="trailing" id="cUW-Va-u0h"/>  
586 - <constraint firstItem="i3R-4H-gzp" firstAttribute="leading" secondItem="xBV-ds-Ub9" secondAttribute="trailing" constant="8" id="cZ8-V2-oKV"/>  
587 - <constraint firstAttribute="height" constant="56" id="it2-lJ-vPD"/>  
588 - <constraint firstItem="i3R-4H-gzp" firstAttribute="centerY" secondItem="keu-Ke-SrA" secondAttribute="centerY" id="j86-kg-M0P"/>  
589 - <constraint firstItem="xBV-ds-Ub9" firstAttribute="centerY" secondItem="keu-Ke-SrA" secondAttribute="centerY" id="lQ9-Xe-gvX"/>  
590 - <constraint firstItem="Hwy-QV-ob8" firstAttribute="leading" secondItem="keu-Ke-SrA" secondAttribute="leading" id="ws3-Zb-SqH"/>  
591 - </constraints>  
592 - </view>  
593 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cnM-5P-fhN">  
594 - <rect key="frame" x="0.0" y="112" width="375" height="56"/>  
595 - <subviews>  
596 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7YJ-fu-e63">  
597 - <rect key="frame" x="0.0" y="55" width="375" height="1"/>  
598 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
599 - <constraints>  
600 - <constraint firstAttribute="height" constant="1" id="Ypb-br-LFg"/>  
601 - </constraints>  
602 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
603 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
604 - <nil key="highlightedColor"/>  
605 - </label>  
606 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="确认密码" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xtu-Lb-h46">  
607 - <rect key="frame" x="8" y="19" width="73" height="18"/>  
608 - <constraints>  
609 - <constraint firstAttribute="width" constant="73" id="A5Z-hk-VeN"/>  
610 - </constraints>  
611 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
612 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
613 - <nil key="highlightedColor"/>  
614 - </label>  
615 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请确认密码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="4Ko-iM-kKY">  
616 - <rect key="frame" x="89" y="18.5" width="278" height="19"/>  
617 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
618 - <textInputTraits key="textInputTraits" keyboardType="alphabet" returnKeyType="done"/>  
619 - <connections>  
620 - <outlet property="delegate" destination="tCx-JF-YJm" id="kVV-m8-92v"/>  
621 - </connections>  
622 - </textField>  
623 - </subviews>  
624 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
625 - <constraints>  
626 - <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="56" id="48F-9G-Fge"/>  
627 - <constraint firstAttribute="trailing" secondItem="4Ko-iM-kKY" secondAttribute="trailing" constant="8" id="4fh-zG-9vl"/>  
628 - <constraint firstAttribute="bottom" secondItem="7YJ-fu-e63" secondAttribute="bottom" id="9wD-aU-bMP"/>  
629 - <constraint firstAttribute="trailing" secondItem="7YJ-fu-e63" secondAttribute="trailing" id="EjA-4T-fxE"/>  
630 - <constraint firstItem="xtu-Lb-h46" firstAttribute="centerY" secondItem="cnM-5P-fhN" secondAttribute="centerY" id="HSA-Ou-onT"/>  
631 - <constraint firstItem="4Ko-iM-kKY" firstAttribute="leading" secondItem="xtu-Lb-h46" secondAttribute="trailing" constant="8" id="aYk-72-GQD"/>  
632 - <constraint firstItem="xtu-Lb-h46" firstAttribute="leading" secondItem="cnM-5P-fhN" secondAttribute="leading" constant="8" id="kbK-3X-65q"/>  
633 - <constraint firstItem="7YJ-fu-e63" firstAttribute="leading" secondItem="cnM-5P-fhN" secondAttribute="leading" id="rhc-YS-Jug"/>  
634 - <constraint firstAttribute="height" constant="56" id="ucM-EP-0Bc"/>  
635 - <constraint firstItem="4Ko-iM-kKY" firstAttribute="centerY" secondItem="cnM-5P-fhN" secondAttribute="centerY" id="wja-1l-Xos"/>  
636 - </constraints>  
637 - </view>  
638 - </subviews>  
639 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
640 - <constraints>  
641 - <constraint firstItem="keu-Ke-SrA" firstAttribute="top" secondItem="1Cp-hz-9O4" secondAttribute="bottom" id="Pee-iB-XUj"/>  
642 - <constraint firstItem="cnM-5P-fhN" firstAttribute="leading" secondItem="xNc-I3-UL6" secondAttribute="leading" id="R9s-jK-AYa"/>  
643 - <constraint firstAttribute="trailing" secondItem="1Cp-hz-9O4" secondAttribute="trailing" id="Rib-CM-97d"/>  
644 - <constraint firstAttribute="height" constant="168" id="SWN-6C-I6R"/>  
645 - <constraint firstAttribute="trailing" secondItem="cnM-5P-fhN" secondAttribute="trailing" id="U6d-yM-lM8"/>  
646 - <constraint firstItem="1Cp-hz-9O4" firstAttribute="top" secondItem="xNc-I3-UL6" secondAttribute="top" id="elW-dc-FcY"/>  
647 - <constraint firstItem="keu-Ke-SrA" firstAttribute="leading" secondItem="xNc-I3-UL6" secondAttribute="leading" id="gcJ-t2-OJH"/>  
648 - <constraint firstItem="cnM-5P-fhN" firstAttribute="top" secondItem="keu-Ke-SrA" secondAttribute="bottom" id="hnn-cd-Hsj"/>  
649 - <constraint firstAttribute="bottom" secondItem="cnM-5P-fhN" secondAttribute="bottom" id="k46-eB-0tn"/>  
650 - <constraint firstAttribute="trailing" secondItem="keu-Ke-SrA" secondAttribute="trailing" id="lAV-sR-cpV"/>  
651 - <constraint firstItem="1Cp-hz-9O4" firstAttribute="leading" secondItem="xNc-I3-UL6" secondAttribute="leading" id="o9e-5H-Do7"/>  
652 - </constraints>  
653 - </view>  
654 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rSF-LZ-Bnl">  
655 - <rect key="frame" x="0.0" y="188" width="375" height="112"/>  
656 - <subviews>  
657 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vkP-pb-ydp">  
658 - <rect key="frame" x="0.0" y="0.0" width="375" height="56"/>  
659 - <subviews>  
660 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MEf-rE-fBh">  
661 - <rect key="frame" x="0.0" y="55" width="375" height="1"/>  
662 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
663 - <constraints>  
664 - <constraint firstAttribute="height" constant="1" id="cle-RJ-6tm"/>  
665 - </constraints>  
666 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
667 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
668 - <nil key="highlightedColor"/>  
669 - </label>  
670 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="+86" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ae8-Wz-CYH">  
671 - <rect key="frame" x="8" y="19" width="73" height="18"/>  
672 - <constraints>  
673 - <constraint firstAttribute="width" constant="73" id="gFs-fM-1Vg"/>  
674 - </constraints>  
675 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
676 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
677 - <nil key="highlightedColor"/>  
678 - </label>  
679 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入手机号码 " minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="nVJ-81-bXY">  
680 - <rect key="frame" x="89" y="18.5" width="123.5" height="19"/>  
681 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
682 - <textInputTraits key="textInputTraits" keyboardType="numberPad" returnKeyType="done"/>  
683 - <connections>  
684 - <outlet property="delegate" destination="tCx-JF-YJm" id="xWv-of-0Wb"/>  
685 - </connections>  
686 - </textField>  
687 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hwv-0n-dsf">  
688 - <rect key="frame" x="274" y="13" width="93" height="30"/>  
689 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
690 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
691 - <state key="normal" title=" 发送验证码 ">  
692 - <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
693 - </state>  
694 - <userDefinedRuntimeAttributes>  
695 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
696 - <integer key="value" value="15"/>  
697 - </userDefinedRuntimeAttribute>  
698 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
699 - </userDefinedRuntimeAttributes>  
700 - <connections>  
701 - <action selector="sendVerificationCodeClickAction:" destination="tCx-JF-YJm" eventType="touchUpInside" id="Agj-2K-dbp"/>  
702 - </connections>  
703 - </button>  
704 - </subviews>  
705 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
706 - <constraints>  
707 - <constraint firstItem="MEf-rE-fBh" firstAttribute="leading" secondItem="vkP-pb-ydp" secondAttribute="leading" id="2A5-sj-MgA"/>  
708 - <constraint firstItem="ae8-Wz-CYH" firstAttribute="centerY" secondItem="vkP-pb-ydp" secondAttribute="centerY" id="Dfi-Pp-DOa"/>  
709 - <constraint firstItem="nVJ-81-bXY" firstAttribute="centerY" secondItem="vkP-pb-ydp" secondAttribute="centerY" id="Q9B-BF-wWO"/>  
710 - <constraint firstAttribute="height" constant="56" id="d5e-TR-xj8"/>  
711 - <constraint firstItem="ae8-Wz-CYH" firstAttribute="leading" secondItem="vkP-pb-ydp" secondAttribute="leading" constant="8" id="fAZ-jT-eye"/>  
712 - <constraint firstAttribute="trailing" secondItem="hwv-0n-dsf" secondAttribute="trailing" constant="8" id="jCe-9b-HiL"/>  
713 - <constraint firstItem="hwv-0n-dsf" firstAttribute="centerY" secondItem="vkP-pb-ydp" secondAttribute="centerY" id="mgL-oA-0oG"/>  
714 - <constraint firstAttribute="trailing" secondItem="MEf-rE-fBh" secondAttribute="trailing" id="nEG-6h-NXY"/>  
715 - <constraint firstAttribute="bottom" secondItem="MEf-rE-fBh" secondAttribute="bottom" id="y9Q-1X-3wy"/>  
716 - <constraint firstItem="nVJ-81-bXY" firstAttribute="leading" secondItem="ae8-Wz-CYH" secondAttribute="trailing" constant="8" id="zxS-jB-eC8"/>  
717 - </constraints>  
718 - </view>  
719 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IlU-p3-aLY">  
720 - <rect key="frame" x="0.0" y="56" width="375" height="56"/>  
721 - <subviews>  
722 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SOB-G4-Kln">  
723 - <rect key="frame" x="0.0" y="55" width="375" height="1"/>  
724 - <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
725 - <constraints>  
726 - <constraint firstAttribute="height" constant="1" id="3yq-4f-vDW"/>  
727 - </constraints>  
728 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
729 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
730 - <nil key="highlightedColor"/>  
731 - </label>  
732 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="验证码" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KmI-sz-jsA">  
733 - <rect key="frame" x="8" y="19" width="73" height="18"/>  
734 - <constraints>  
735 - <constraint firstAttribute="width" constant="73" id="ngh-2s-quJ"/>  
736 - </constraints>  
737 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
738 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
739 - <nil key="highlightedColor"/>  
740 - </label>  
741 - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入验证码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="GHW-G9-uIT">  
742 - <rect key="frame" x="89" y="18.5" width="278" height="19"/>  
743 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
744 - <textInputTraits key="textInputTraits" keyboardType="numberPad" returnKeyType="done"/>  
745 - <connections>  
746 - <outlet property="delegate" destination="tCx-JF-YJm" id="deX-i0-lZv"/>  
747 - </connections>  
748 - </textField>  
749 - </subviews>  
750 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
751 - <constraints>  
752 - <constraint firstItem="SOB-G4-Kln" firstAttribute="leading" secondItem="IlU-p3-aLY" secondAttribute="leading" id="Bpm-Op-035"/>  
753 - <constraint firstAttribute="bottom" secondItem="SOB-G4-Kln" secondAttribute="bottom" id="KjW-FI-dyR"/>  
754 - <constraint firstItem="GHW-G9-uIT" firstAttribute="leading" secondItem="KmI-sz-jsA" secondAttribute="trailing" constant="8" id="NWt-4e-GXU"/>  
755 - <constraint firstAttribute="height" constant="56" id="QZA-UG-aso"/>  
756 - <constraint firstItem="GHW-G9-uIT" firstAttribute="centerY" secondItem="IlU-p3-aLY" secondAttribute="centerY" id="SGD-Xp-h5t"/>  
757 - <constraint firstAttribute="trailing" secondItem="SOB-G4-Kln" secondAttribute="trailing" id="ZSY-bN-JsM"/>  
758 - <constraint firstItem="KmI-sz-jsA" firstAttribute="centerY" secondItem="IlU-p3-aLY" secondAttribute="centerY" id="dtC-at-TCi"/>  
759 - <constraint firstItem="KmI-sz-jsA" firstAttribute="leading" secondItem="IlU-p3-aLY" secondAttribute="leading" constant="8" id="e2w-KQ-6sS"/>  
760 - <constraint firstAttribute="trailing" secondItem="GHW-G9-uIT" secondAttribute="trailing" constant="8" id="y7F-Ik-Roe"/>  
761 - </constraints>  
762 - </view>  
763 - </subviews>  
764 - <color key="backgroundColor" red="1" green="0.42445692709999999" blue="0.35047448450000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
765 - <constraints>  
766 - <constraint firstAttribute="trailing" secondItem="IlU-p3-aLY" secondAttribute="trailing" id="4ga-Jf-7Ee"/>  
767 - <constraint firstAttribute="height" constant="112" id="7NK-ZN-nyz"/>  
768 - <constraint firstItem="vkP-pb-ydp" firstAttribute="leading" secondItem="rSF-LZ-Bnl" secondAttribute="leading" id="84d-gX-XI3"/>  
769 - <constraint firstItem="IlU-p3-aLY" firstAttribute="top" secondItem="vkP-pb-ydp" secondAttribute="bottom" id="AEt-bb-mHP"/>  
770 - <constraint firstItem="IlU-p3-aLY" firstAttribute="leading" secondItem="rSF-LZ-Bnl" secondAttribute="leading" id="OBc-tM-vGz"/>  
771 - <constraint firstItem="vkP-pb-ydp" firstAttribute="top" secondItem="rSF-LZ-Bnl" secondAttribute="top" id="Ppf-3Y-BG7"/>  
772 - <constraint firstAttribute="trailing" secondItem="vkP-pb-ydp" secondAttribute="trailing" id="Ygd-yH-f2B"/>  
773 - <constraint firstAttribute="bottom" secondItem="IlU-p3-aLY" secondAttribute="bottom" id="cjh-Sk-yPh"/>  
774 - </constraints>  
775 - </view>  
776 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="R1Y-16-Th7">  
777 - <rect key="frame" x="62.5" y="400" width="250" height="40"/>  
778 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
779 - <constraints>  
780 - <constraint firstAttribute="height" constant="40" id="Kvn-w3-Juc"/>  
781 - </constraints>  
782 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
783 - <state key="normal" title="注册">  
784 - <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
785 - </state>  
786 - <userDefinedRuntimeAttributes>  
787 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
788 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
789 - <integer key="value" value="20"/>  
790 - </userDefinedRuntimeAttribute>  
791 - </userDefinedRuntimeAttributes>  
792 - <connections>  
793 - <action selector="registerBtnAction:" destination="tCx-JF-YJm" eventType="touchUpInside" id="pSt-yE-eTL"/>  
794 - </connections>  
795 - </button>  
796 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DJH-vy-tj1">  
797 - <rect key="frame" x="325" y="315" width="35" height="30"/>  
798 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
799 - <state key="normal" title="登 录">  
800 - <color key="titleColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
801 - </state>  
802 - <connections>  
803 - <action selector="loginBtnClickAction:" destination="tCx-JF-YJm" eventType="touchUpInside" id="KlD-u3-W3P"/>  
804 - </connections>  
805 - </button>  
806 - </subviews>  
807 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
808 - <gestureRecognizers/>  
809 - <constraints>  
810 - <constraint firstItem="R1Y-16-Th7" firstAttribute="top" secondItem="rSF-LZ-Bnl" secondAttribute="bottom" constant="100" id="2qf-Db-EkQ"/>  
811 - <constraint firstItem="403-Gp-RaZ" firstAttribute="top" secondItem="o4V-sv-MMh" secondAttribute="bottom" id="3fC-Wg-KMc"/>  
812 - <constraint firstItem="xNc-I3-UL6" firstAttribute="top" secondItem="o4V-sv-MMh" secondAttribute="bottom" id="4fl-gQ-WZe"/>  
813 - <constraint firstAttribute="trailing" secondItem="rSF-LZ-Bnl" secondAttribute="trailing" id="9jK-fu-KKs"/>  
814 - <constraint firstItem="rSF-LZ-Bnl" firstAttribute="leading" secondItem="i7O-Dj-x5S" secondAttribute="leading" id="OoN-NJ-ZEk"/>  
815 - <constraint firstAttribute="trailing" secondItem="DJH-vy-tj1" secondAttribute="trailing" constant="15" id="ZYR-Wd-fZz"/>  
816 - <constraint firstAttribute="trailing" secondItem="xNc-I3-UL6" secondAttribute="trailing" id="eo3-7l-3Ju"/>  
817 - <constraint firstAttribute="trailing" secondItem="403-Gp-RaZ" secondAttribute="trailing" id="fOh-GD-xiW"/>  
818 - <constraint firstItem="R1Y-16-Th7" firstAttribute="centerX" secondItem="i7O-Dj-x5S" secondAttribute="centerX" id="kcC-PE-Lwx"/>  
819 - <constraint firstItem="DJH-vy-tj1" firstAttribute="top" secondItem="rSF-LZ-Bnl" secondAttribute="bottom" constant="15" id="lBh-92-VTX"/>  
820 - <constraint firstItem="R1Y-16-Th7" firstAttribute="width" secondItem="i7O-Dj-x5S" secondAttribute="width" multiplier="2:3" id="pCE-Ek-rOS"/>  
821 - <constraint firstItem="403-Gp-RaZ" firstAttribute="leading" secondItem="i7O-Dj-x5S" secondAttribute="leading" id="stz-Fg-4Iv"/>  
822 - <constraint firstItem="rSF-LZ-Bnl" firstAttribute="top" secondItem="xNc-I3-UL6" secondAttribute="bottom" id="wPx-ce-6he"/>  
823 - <constraint firstItem="xNc-I3-UL6" firstAttribute="leading" secondItem="i7O-Dj-x5S" secondAttribute="leading" id="x7N-Bs-2t1"/>  
824 - </constraints>  
825 - <connections>  
826 - <outletCollection property="gestureRecognizers" destination="ZEf-mm-u9e" appends="YES" id="Gmm-Kb-eQb"/>  
827 - </connections>  
828 - </view>  
829 - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>  
830 - <size key="freeformSize" width="375" height="667"/>  
831 - <connections>  
832 - <outlet property="confirmPasswordTextField" destination="4Ko-iM-kKY" id="Mwh-Ik-lD3"/>  
833 - <outlet property="inputVerificationCode" destination="GHW-G9-uIT" id="W2X-QF-3qb"/>  
834 - <outlet property="nickNameLabel" destination="gj6-hl-Apj" id="chL-uV-xBk"/>  
835 - <outlet property="nikeNameTextFiled" destination="q7i-9n-2oP" id="DME-KX-Y6Y"/>  
836 - <outlet property="passwordTextField" destination="i3R-4H-gzp" id="qTl-bd-eRR"/>  
837 - <outlet property="phoneNumber" destination="nVJ-81-bXY" id="24J-2q-PGO"/>  
838 - <outlet property="registerBtn" destination="R1Y-16-Th7" id="ccz-JJ-Zfd"/>  
839 - <outlet property="sendPhotoImage" destination="1fC-6m-eDG" id="xoB-Hr-23D"/>  
840 - <outlet property="sendVerificationCode" destination="hwv-0n-dsf" id="5zD-Jx-K5j"/>  
841 - </connections>  
842 - </viewController>  
843 - <placeholder placeholderIdentifier="IBFirstResponder" id="Fzg-cR-i34" userLabel="First Responder" sceneMemberID="firstResponder"/>  
844 - <tapGestureRecognizer id="hfJ-NM-sst">  
845 - <connections>  
846 - <action selector="nickNameSetTapAction:" destination="tCx-JF-YJm" id="OeS-RA-5JC"/>  
847 - </connections>  
848 - </tapGestureRecognizer>  
849 - <tapGestureRecognizer id="aUf-CI-Y7V">  
850 - <connections>  
851 - <action selector="sendPhotoImageTapAction:" destination="tCx-JF-YJm" id="eAT-uh-KLY"/>  
852 - </connections>  
853 - </tapGestureRecognizer>  
854 - <tapGestureRecognizer id="ZEf-mm-u9e">  
855 - <connections>  
856 - <action selector="touchAction:" destination="tCx-JF-YJm" id="1ww-Nt-fgk"/>  
857 - </connections>  
858 - </tapGestureRecognizer>  
859 - </objects>  
860 - <point key="canvasLocation" x="-2161" y="1534"/>  
861 - </scene>  
862 - <!--直播列表-->  
863 - <scene sceneID="XKW-WN-QdT">  
864 - <objects>  
865 - <viewController storyboardIdentifier="LiveRoomsViewController" id="TRk-zG-DtG" customClass="LiveRoomsViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
866 - <layoutGuides>  
867 - <viewControllerLayoutGuide type="top" id="F8t-oe-SiB"/>  
868 - <viewControllerLayoutGuide type="bottom" id="uxW-te-E5M"/>  
869 - </layoutGuides>  
870 - <view key="view" contentMode="scaleToFill" id="872-q1-Iaa">  
871 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
872 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
873 - <subviews>  
874 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zXz-qM-Acq">  
875 - <rect key="frame" x="0.0" y="64" width="375" height="170"/>  
876 - <subviews>  
877 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hv8-Qa-aBF">  
878 - <rect key="frame" x="187" y="0.0" width="1" height="170"/>  
879 - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>  
880 - <constraints>  
881 - <constraint firstAttribute="width" constant="1" id="dza-AE-Lso"/>  
882 - </constraints>  
883 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
884 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
885 - <nil key="highlightedColor"/>  
886 - </label>  
887 - <imageView contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="0Gk-gW-ew3">  
888 - <rect key="frame" x="147.5" y="8" width="80" height="80"/>  
889 - <gestureRecognizers/>  
890 - <constraints>  
891 - <constraint firstAttribute="width" constant="80" id="lWg-Fx-hsx"/>  
892 - <constraint firstAttribute="height" constant="80" id="wOV-ke-Q1B"/>  
893 - </constraints>  
894 - <userDefinedRuntimeAttributes>  
895 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
896 - <integer key="value" value="40"/>  
897 - </userDefinedRuntimeAttribute>  
898 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
899 - </userDefinedRuntimeAttributes>  
900 - </imageView>  
901 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学事通" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3TP-D6-7hD">  
902 - <rect key="frame" x="0.0" y="100" width="375" height="21"/>  
903 - <constraints>  
904 - <constraint firstAttribute="height" constant="21" id="30Q-8E-jJ7"/>  
905 - </constraints>  
906 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
907 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
908 - <nil key="highlightedColor"/>  
909 - </label>  
910 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CtS-7Q-u1u">  
911 - <rect key="frame" x="0.0" y="96" width="375" height="25"/>  
912 - <constraints>  
913 - <constraint firstAttribute="height" constant="25" id="wYi-pE-S5H"/>  
914 - </constraints>  
915 - <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="15"/>  
916 - <inset key="titleEdgeInsets" minX="-120" minY="0.0" maxX="0.0" maxY="0.0"/>  
917 - <inset key="imageEdgeInsets" minX="95" minY="0.0" maxX="0.0" maxY="0.0"/>  
918 - <state key="normal">  
919 - <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
920 - </state>  
921 - </button>  
922 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="账号:18625774807" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZEw-g1-Yma">  
923 - <rect key="frame" x="0.0" y="129" width="375" height="21"/>  
924 - <constraints>  
925 - <constraint firstAttribute="height" constant="21" id="pzG-gH-nk5"/>  
926 - </constraints>  
927 - <fontDescription key="fontDescription" type="system" pointSize="13"/>  
928 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
929 - <nil key="highlightedColor"/>  
930 - </label>  
931 - <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="编辑.png" translatesAutoresizingMaskIntoConstraints="NO" id="Prt-1z-bT6">  
932 - <rect key="frame" x="214" y="100" width="20" height="20"/>  
933 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
934 - </imageView>  
935 - </subviews>  
936 - <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
937 - <constraints>  
938 - <constraint firstItem="CtS-7Q-u1u" firstAttribute="top" secondItem="0Gk-gW-ew3" secondAttribute="bottom" constant="8" id="4J5-K4-e0H"/>  
939 - <constraint firstItem="0Gk-gW-ew3" firstAttribute="centerX" secondItem="zXz-qM-Acq" secondAttribute="centerX" id="52h-CK-9Q4"/>  
940 - <constraint firstItem="hv8-Qa-aBF" firstAttribute="top" secondItem="zXz-qM-Acq" secondAttribute="top" id="AGC-wU-6In"/>  
941 - <constraint firstAttribute="height" constant="170" id="BQo-Kp-CAZ"/>  
942 - <constraint firstItem="ZEw-g1-Yma" firstAttribute="leading" secondItem="zXz-qM-Acq" secondAttribute="leading" id="Ckg-Dh-49u"/>  
943 - <constraint firstItem="CtS-7Q-u1u" firstAttribute="leading" secondItem="zXz-qM-Acq" secondAttribute="leading" id="G2O-76-hLf"/>  
944 - <constraint firstItem="hv8-Qa-aBF" firstAttribute="centerY" secondItem="zXz-qM-Acq" secondAttribute="centerY" id="KHQ-Nn-pOq"/>  
945 - <constraint firstAttribute="bottom" secondItem="hv8-Qa-aBF" secondAttribute="bottom" id="RFM-s7-4TJ"/>  
946 - <constraint firstAttribute="trailing" secondItem="CtS-7Q-u1u" secondAttribute="trailing" id="RHy-V2-7Zr"/>  
947 - <constraint firstItem="ZEw-g1-Yma" firstAttribute="top" secondItem="CtS-7Q-u1u" secondAttribute="bottom" constant="8" id="RIr-e5-c0g"/>  
948 - <constraint firstItem="3TP-D6-7hD" firstAttribute="leading" secondItem="zXz-qM-Acq" secondAttribute="leading" id="aR3-jf-TMa"/>  
949 - <constraint firstAttribute="trailing" secondItem="ZEw-g1-Yma" secondAttribute="trailing" id="bJ0-BI-Qv3"/>  
950 - <constraint firstItem="3TP-D6-7hD" firstAttribute="top" secondItem="0Gk-gW-ew3" secondAttribute="bottom" constant="12" id="fTq-1T-IoT"/>  
951 - <constraint firstAttribute="trailing" secondItem="3TP-D6-7hD" secondAttribute="trailing" id="mzr-Lx-WwS"/>  
952 - <constraint firstItem="CtS-7Q-u1u" firstAttribute="centerX" secondItem="zXz-qM-Acq" secondAttribute="centerX" id="qqe-eT-yC5"/>  
953 - <constraint firstItem="hv8-Qa-aBF" firstAttribute="centerX" secondItem="zXz-qM-Acq" secondAttribute="centerX" id="vZf-z2-TYe"/>  
954 - <constraint firstItem="0Gk-gW-ew3" firstAttribute="top" secondItem="zXz-qM-Acq" secondAttribute="top" constant="8" id="zMS-XP-xLS"/>  
955 - <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="170" id="zf1-5x-wDm"/>  
956 - </constraints>  
957 - </view>  
958 - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="MSW-uR-PzG">  
959 - <rect key="frame" x="0.0" y="234" width="375" height="50"/>  
960 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
961 - <constraints>  
962 - <constraint firstAttribute="height" constant="50" id="6Lg-sB-5MW"/>  
963 - </constraints>  
964 - <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="RUP-s6-4QP">  
965 - <size key="itemSize" width="50" height="50"/>  
966 - <size key="headerReferenceSize" width="0.0" height="0.0"/>  
967 - <size key="footerReferenceSize" width="0.0" height="0.0"/>  
968 - <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>  
969 - </collectionViewFlowLayout>  
970 - <cells>  
971 - <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="selectCell" id="ByM-Yz-laB" customClass="selectTypeCell" customModule="YouerLiveVideo" customModuleProvider="target">  
972 - <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>  
973 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
974 - <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">  
975 - <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>  
976 - <autoresizingMask key="autoresizingMask"/>  
977 - <subviews>  
978 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cIR-al-lVF">  
979 - <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>  
980 - <fontDescription key="fontDescription" type="system" pointSize="12"/>  
981 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
982 - <nil key="highlightedColor"/>  
983 - </label>  
984 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uda-An-pcw">  
985 - <rect key="frame" x="49" y="0.0" width="1" height="50"/>  
986 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
987 - <constraints>  
988 - <constraint firstAttribute="width" constant="1" id="nDj-Xd-cpM"/>  
989 - </constraints>  
990 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
991 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
992 - <nil key="highlightedColor"/>  
993 - </label>  
994 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0hQ-IS-VH8">  
995 - <rect key="frame" x="0.0" y="49" width="50" height="1"/>  
996 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
997 - <constraints>  
998 - <constraint firstAttribute="height" constant="1" id="YZN-9q-eax"/>  
999 - </constraints>  
1000 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1001 - <nil key="textColor"/>  
1002 - <nil key="highlightedColor"/>  
1003 - </label>  
1004 - </subviews>  
1005 - </view>  
1006 - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>  
1007 - <constraints>  
1008 - <constraint firstItem="Uda-An-pcw" firstAttribute="top" secondItem="ByM-Yz-laB" secondAttribute="top" id="2PS-Ij-cah"/>  
1009 - <constraint firstAttribute="bottom" secondItem="cIR-al-lVF" secondAttribute="bottom" id="3Ze-wI-7u6"/>  
1010 - <constraint firstItem="cIR-al-lVF" firstAttribute="leading" secondItem="ByM-Yz-laB" secondAttribute="leading" id="4Pw-3q-ycf"/>  
1011 - <constraint firstAttribute="trailing" secondItem="Uda-An-pcw" secondAttribute="trailing" id="56p-FD-l9M"/>  
1012 - <constraint firstAttribute="bottom" secondItem="0hQ-IS-VH8" secondAttribute="bottom" id="9lr-L2-yEQ"/>  
1013 - <constraint firstItem="0hQ-IS-VH8" firstAttribute="leading" secondItem="ByM-Yz-laB" secondAttribute="leading" id="Bj0-Ra-FS3"/>  
1014 - <constraint firstAttribute="trailing" secondItem="0hQ-IS-VH8" secondAttribute="trailing" id="E6o-Ec-dYB"/>  
1015 - <constraint firstItem="cIR-al-lVF" firstAttribute="top" secondItem="ByM-Yz-laB" secondAttribute="top" id="WJW-7b-hNu"/>  
1016 - <constraint firstAttribute="trailing" secondItem="cIR-al-lVF" secondAttribute="trailing" id="ijN-E7-xI0"/>  
1017 - <constraint firstAttribute="bottom" secondItem="Uda-An-pcw" secondAttribute="bottom" id="zLp-XV-NSL"/>  
1018 - </constraints>  
1019 - <connections>  
1020 - <outlet property="lineLabel" destination="Uda-An-pcw" id="i0M-0I-yGC"/>  
1021 - <outlet property="titleLabel" destination="cIR-al-lVF" id="srt-YU-2L0"/>  
1022 - </connections>  
1023 - </collectionViewCell>  
1024 - </cells>  
1025 - <connections>  
1026 - <outlet property="dataSource" destination="TRk-zG-DtG" id="zGC-ba-Oek"/>  
1027 - <outlet property="delegate" destination="TRk-zG-DtG" id="F9X-CU-Z6M"/>  
1028 - </connections>  
1029 - </collectionView>  
1030 - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="nMl-1w-hhg">  
1031 - <rect key="frame" x="0.0" y="284" width="375" height="383"/>  
1032 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1033 - <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="1" minimumInteritemSpacing="1" id="6WK-c9-xsa">  
1034 - <size key="itemSize" width="171" height="276"/>  
1035 - <size key="headerReferenceSize" width="0.0" height="0.0"/>  
1036 - <size key="footerReferenceSize" width="0.0" height="0.0"/>  
1037 - <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>  
1038 - </collectionViewFlowLayout>  
1039 - <cells>  
1040 - <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="roomListCell" id="znO-HR-pdB" customClass="roomLiveDetailCell" customModule="YouerLiveVideo" customModuleProvider="target">  
1041 - <rect key="frame" x="0.0" y="0.0" width="171" height="276"/>  
1042 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
1043 - <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">  
1044 - <rect key="frame" x="0.0" y="0.0" width="171" height="276"/>  
1045 - <autoresizingMask key="autoresizingMask"/>  
1046 - <subviews>  
1047 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1eI-eh-N3I">  
1048 - <rect key="frame" x="0.0" y="0.0" width="171" height="246"/>  
1049 - <subviews>  
1050 - <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="psb.jpg" translatesAutoresizingMaskIntoConstraints="NO" id="XcQ-PZ-5vi">  
1051 - <rect key="frame" x="0.0" y="0.0" width="171" height="246"/>  
1052 - </imageView>  
1053 - <label opaque="NO" userInteractionEnabled="NO" alpha="0.80000001192092896" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="顺治直播" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5bV-Q9-QBq">  
1054 - <rect key="frame" x="0.0" y="226" width="171" height="20"/>  
1055 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
1056 - <constraints>  
1057 - <constraint firstAttribute="height" constant="20" id="v5R-gm-4ZU"/>  
1058 - </constraints>  
1059 - <fontDescription key="fontDescription" type="system" pointSize="14"/>  
1060 - <nil key="highlightedColor"/>  
1061 - </label>  
1062 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="未通过" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MwN-q1-p8I">  
1063 - <rect key="frame" x="8" y="8" width="45" height="20"/>  
1064 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1065 - <constraints>  
1066 - <constraint firstAttribute="height" constant="20" id="ZNb-9o-7dy"/>  
1067 - <constraint firstAttribute="width" constant="45" id="zE3-2c-Lnq"/>  
1068 - </constraints>  
1069 - <fontDescription key="fontDescription" type="system" pointSize="12"/>  
1070 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1071 - <nil key="highlightedColor"/>  
1072 - <userDefinedRuntimeAttributes>  
1073 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
1074 - <integer key="value" value="10"/>  
1075 - </userDefinedRuntimeAttribute>  
1076 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
1077 - </userDefinedRuntimeAttributes>  
1078 - </label>  
1079 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播历史1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3kG-Uk-Ebo">  
1080 - <rect key="frame" x="108" y="8" width="55" height="20"/>  
1081 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1082 - <constraints>  
1083 - <constraint firstAttribute="height" constant="20" id="7gR-Ze-JOx"/>  
1084 - </constraints>  
1085 - <fontDescription key="fontDescription" type="system" pointSize="12"/>  
1086 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1087 - <nil key="highlightedColor"/>  
1088 - <userDefinedRuntimeAttributes>  
1089 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
1090 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
1091 - <integer key="value" value="10"/>  
1092 - </userDefinedRuntimeAttribute>  
1093 - </userDefinedRuntimeAttributes>  
1094 - </label>  
1095 - </subviews>  
1096 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1097 - <constraints>  
1098 - <constraint firstAttribute="trailing" secondItem="5bV-Q9-QBq" secondAttribute="trailing" id="B2F-4V-Wzi"/>  
1099 - <constraint firstAttribute="trailing" secondItem="3kG-Uk-Ebo" secondAttribute="trailing" constant="8" id="EMb-1i-r9c"/>  
1100 - <constraint firstAttribute="trailing" secondItem="XcQ-PZ-5vi" secondAttribute="trailing" id="Iro-Ie-Mzf"/>  
1101 - <constraint firstItem="MwN-q1-p8I" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="top" constant="8" id="Njs-r0-U3F"/>  
1102 - <constraint firstItem="MwN-q1-p8I" firstAttribute="leading" secondItem="1eI-eh-N3I" secondAttribute="leading" constant="8" id="XbX-F5-TSb"/>  
1103 - <constraint firstAttribute="bottom" secondItem="XcQ-PZ-5vi" secondAttribute="bottom" id="bEn-qE-mTE"/>  
1104 - <constraint firstItem="XcQ-PZ-5vi" firstAttribute="leading" secondItem="1eI-eh-N3I" secondAttribute="leading" id="kSr-BD-Q7c"/>  
1105 - <constraint firstAttribute="bottom" secondItem="5bV-Q9-QBq" secondAttribute="bottom" id="pTo-Um-VFC"/>  
1106 - <constraint firstItem="5bV-Q9-QBq" firstAttribute="leading" secondItem="1eI-eh-N3I" secondAttribute="leading" id="qP1-Fu-lHn"/>  
1107 - <constraint firstItem="XcQ-PZ-5vi" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="top" id="v3T-sO-sWi"/>  
1108 - <constraint firstItem="3kG-Uk-Ebo" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="top" constant="8" id="xhC-S7-ph6"/>  
1109 - </constraints>  
1110 - </view>  
1111 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zf5-sW-pq6">  
1112 - <rect key="frame" x="0.0" y="246" width="171" height="30"/>  
1113 - <subviews>  
1114 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100000" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DN7-Bl-0sn">  
1115 - <rect key="frame" x="31" y="4.5" width="30.5" height="21"/>  
1116 - <constraints>  
1117 - <constraint firstAttribute="height" constant="21" id="dPs-Vr-J5F"/>  
1118 - </constraints>  
1119 - <fontDescription key="fontDescription" type="system" pointSize="8"/>  
1120 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1121 - <nil key="highlightedColor"/>  
1122 - </label>  
1123 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2016-11-10 10:58:50" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FLt-yg-yap">  
1124 - <rect key="frame" x="80.5" y="10" width="82.5" height="10"/>  
1125 - <fontDescription key="fontDescription" type="system" pointSize="8"/>  
1126 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1127 - <nil key="highlightedColor"/>  
1128 - </label>  
1129 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="观看.png" translatesAutoresizingMaskIntoConstraints="NO" id="zAE-Rj-l2k">  
1130 - <rect key="frame" x="8" y="7.5" width="20" height="15"/>  
1131 - <constraints>  
1132 - <constraint firstAttribute="width" constant="20" id="OeC-BX-gj2"/>  
1133 - <constraint firstAttribute="height" constant="15" id="sNv-Mf-wqS"/>  
1134 - </constraints>  
1135 - </imageView>  
1136 - </subviews>  
1137 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
1138 - <constraints>  
1139 - <constraint firstItem="zAE-Rj-l2k" firstAttribute="leading" secondItem="zf5-sW-pq6" secondAttribute="leading" constant="8" id="4I4-Ad-LFC"/>  
1140 - <constraint firstItem="zAE-Rj-l2k" firstAttribute="centerY" secondItem="zf5-sW-pq6" secondAttribute="centerY" id="4oe-14-f8F"/>  
1141 - <constraint firstItem="FLt-yg-yap" firstAttribute="centerY" secondItem="zf5-sW-pq6" secondAttribute="centerY" id="8b4-g2-wg6"/>  
1142 - <constraint firstAttribute="trailing" secondItem="FLt-yg-yap" secondAttribute="trailing" constant="8" id="9lh-yF-apc"/>  
1143 - <constraint firstAttribute="height" constant="30" id="MbG-VU-7bB"/>  
1144 - <constraint firstItem="DN7-Bl-0sn" firstAttribute="centerY" secondItem="zf5-sW-pq6" secondAttribute="centerY" id="nMy-KR-EGQ"/>  
1145 - <constraint firstItem="DN7-Bl-0sn" firstAttribute="leading" secondItem="zAE-Rj-l2k" secondAttribute="trailing" constant="3" id="wZD-yd-641"/>  
1146 - </constraints>  
1147 - </view>  
1148 - </subviews>  
1149 - </view>  
1150 - <gestureRecognizers/>  
1151 - <constraints>  
1152 - <constraint firstItem="zf5-sW-pq6" firstAttribute="leading" secondItem="znO-HR-pdB" secondAttribute="leading" id="61a-fa-c9J"/>  
1153 - <constraint firstItem="zf5-sW-pq6" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="bottom" id="EIo-Vb-H9W"/>  
1154 - <constraint firstItem="1eI-eh-N3I" firstAttribute="top" secondItem="znO-HR-pdB" secondAttribute="top" id="Ywu-15-5fc"/>  
1155 - <constraint firstAttribute="trailing" secondItem="1eI-eh-N3I" secondAttribute="trailing" id="iHg-3V-D1l"/>  
1156 - <constraint firstAttribute="bottom" secondItem="zf5-sW-pq6" secondAttribute="bottom" id="nwS-Ps-NEb"/>  
1157 - <constraint firstAttribute="trailing" secondItem="zf5-sW-pq6" secondAttribute="trailing" id="peQ-5W-lFV"/>  
1158 - <constraint firstItem="1eI-eh-N3I" firstAttribute="leading" secondItem="znO-HR-pdB" secondAttribute="leading" id="s2Q-SV-Wa1"/>  
1159 - </constraints>  
1160 - <connections>  
1161 - <outlet property="backgroundImage" destination="XcQ-PZ-5vi" id="PZn-O3-2wr"/>  
1162 - <outlet property="nameLabel" destination="5bV-Q9-QBq" id="6cI-L0-KNI"/>  
1163 - <outlet property="pageLabel" destination="3kG-Uk-Ebo" id="TAP-lv-Ehz"/>  
1164 - <outlet property="passLabel" destination="MwN-q1-p8I" id="5QH-TX-YNW"/>  
1165 - <outlet property="personNumberLabel" destination="DN7-Bl-0sn" id="C46-Ic-kp4"/>  
1166 - <outlet property="timeLabel" destination="FLt-yg-yap" id="73q-DQ-xDb"/>  
1167 - </connections>  
1168 - </collectionViewCell>  
1169 - </cells>  
1170 - <connections>  
1171 - <outlet property="dataSource" destination="TRk-zG-DtG" id="lqH-kS-ppP"/>  
1172 - <outlet property="delegate" destination="TRk-zG-DtG" id="biA-Bk-fA8"/>  
1173 - </connections>  
1174 - </collectionView>  
1175 - </subviews>  
1176 - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1177 - <gestureRecognizers/>  
1178 - <constraints>  
1179 - <constraint firstItem="zXz-qM-Acq" firstAttribute="leading" secondItem="872-q1-Iaa" secondAttribute="leading" id="A06-pz-cNK"/>  
1180 - <constraint firstItem="nMl-1w-hhg" firstAttribute="top" secondItem="MSW-uR-PzG" secondAttribute="bottom" id="E7P-YI-DOl"/>  
1181 - <constraint firstItem="zXz-qM-Acq" firstAttribute="top" secondItem="F8t-oe-SiB" secondAttribute="bottom" id="HCW-rj-PId"/>  
1182 - <constraint firstAttribute="trailing" secondItem="zXz-qM-Acq" secondAttribute="trailing" id="e2e-cq-Hap"/>  
1183 - <constraint firstItem="MSW-uR-PzG" firstAttribute="top" secondItem="zXz-qM-Acq" secondAttribute="bottom" id="fj7-Hc-YG2"/>  
1184 - <constraint firstItem="uxW-te-E5M" firstAttribute="top" secondItem="nMl-1w-hhg" secondAttribute="bottom" id="fq8-QB-60Q"/>  
1185 - <constraint firstItem="MSW-uR-PzG" firstAttribute="leading" secondItem="872-q1-Iaa" secondAttribute="leading" id="hMN-Xe-tdh"/>  
1186 - <constraint firstItem="nMl-1w-hhg" firstAttribute="leading" secondItem="872-q1-Iaa" secondAttribute="leading" id="jhB-ax-iCp"/>  
1187 - <constraint firstAttribute="trailing" secondItem="MSW-uR-PzG" secondAttribute="trailing" id="udE-bT-3AA"/>  
1188 - <constraint firstAttribute="trailing" secondItem="nMl-1w-hhg" secondAttribute="trailing" id="yQc-58-PeL"/>  
1189 - </constraints>  
1190 - <connections>  
1191 - <outletCollection property="gestureRecognizers" destination="XgT-x8-vAD" appends="YES" id="EXq-HP-LGR"/>  
1192 - </connections>  
1193 - </view>  
1194 - <navigationItem key="navigationItem" title="直播列表" id="khA-xa-evf"/>  
1195 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
1196 - <connections>  
1197 - <outlet property="iconImage" destination="0Gk-gW-ew3" id="29g-By-ogu"/>  
1198 - <outlet property="nameLabel" destination="3TP-D6-7hD" id="tmI-yP-QI4"/>  
1199 - <outlet property="numberLabel" destination="ZEw-g1-Yma" id="pgU-Yw-Mrd"/>  
1200 - <outlet property="roomListCollectionView" destination="nMl-1w-hhg" id="otY-oI-2JI"/>  
1201 - <outlet property="titleCollectionView" destination="MSW-uR-PzG" id="M9L-C5-VB1"/>  
1202 - <outlet property="titleViewHeight" destination="6Lg-sB-5MW" id="6m2-b2-Ys4"/>  
1203 - </connections>  
1204 - </viewController>  
1205 - <placeholder placeholderIdentifier="IBFirstResponder" id="2zw-zY-MHj" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1206 - <pongPressGestureRecognizer allowableMovement="10" minimumPressDuration="0.5" id="XgT-x8-vAD">  
1207 - <connections>  
1208 - <action selector="showAlertMenu:" destination="TRk-zG-DtG" id="p9e-Pt-bNd"/>  
1209 - </connections>  
1210 - </pongPressGestureRecognizer>  
1211 - </objects>  
1212 - <point key="canvasLocation" x="554" y="1534"/>  
1213 - </scene>  
1214 - <!--直播列表-->  
1215 - <scene sceneID="wpU-Ou-gWp">  
1216 - <objects>  
1217 - <viewController storyboardIdentifier="LiveListViewController" id="lqb-XV-ZVz" customClass="LiveListViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1218 - <layoutGuides>  
1219 - <viewControllerLayoutGuide type="top" id="brV-vZ-9W3"/>  
1220 - <viewControllerLayoutGuide type="bottom" id="cR5-Gc-hQY"/>  
1221 - </layoutGuides>  
1222 - <view key="view" contentMode="scaleToFill" id="Nko-iq-QeO">  
1223 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
1224 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1225 - <subviews>  
1226 - <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="isf-zi-cli">  
1227 - <rect key="frame" x="0.0" y="64" width="375" height="170"/>  
1228 - <subviews>  
1229 - <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default" translatesAutoresizingMaskIntoConstraints="NO" id="ngj-9g-5hs">  
1230 - <rect key="frame" x="0.0" y="0.0" width="375" height="170"/>  
1231 - </imageView>  
1232 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HQy-b9-ePQ">  
1233 - <rect key="frame" x="187" y="0.0" width="1" height="170"/>  
1234 - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>  
1235 - <constraints>  
1236 - <constraint firstAttribute="width" constant="1" id="hp0-BE-R8t"/>  
1237 - </constraints>  
1238 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1239 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1240 - <nil key="highlightedColor"/>  
1241 - </label>  
1242 - <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nhf-PK-1ec">  
1243 - <rect key="frame" x="0.0" y="130" width="375" height="21"/>  
1244 - <subviews>  
1245 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称:学事通" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gd5-Oe-oPN">  
1246 - <rect key="frame" x="0.0" y="0.0" width="179" height="21"/>  
1247 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1248 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1249 - <nil key="highlightedColor"/>  
1250 - </label>  
1251 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="账号:18625774807" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8tX-Ga-zhU">  
1252 - <rect key="frame" x="196" y="0.0" width="179" height="21"/>  
1253 - <fontDescription key="fontDescription" type="system" pointSize="15"/>  
1254 - <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1255 - <nil key="highlightedColor"/>  
1256 - </label>  
1257 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qyb-mf-TZD">  
1258 - <rect key="frame" x="187" y="0.0" width="1" height="21"/>  
1259 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1260 - <constraints>  
1261 - <constraint firstAttribute="width" constant="1" id="L9M-ks-l68"/>  
1262 - <constraint firstAttribute="height" constant="21" id="e2e-8L-6ck"/>  
1263 - </constraints>  
1264 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1265 - <nil key="textColor"/>  
1266 - <nil key="highlightedColor"/>  
1267 - </label>  
1268 - </subviews>  
1269 - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>  
1270 - <constraints>  
1271 - <constraint firstItem="8tX-Ga-zhU" firstAttribute="leading" secondItem="qyb-mf-TZD" secondAttribute="trailing" constant="8" id="4zg-kG-yk5"/>  
1272 - <constraint firstAttribute="height" constant="21" id="7ar-AL-Ral"/>  
1273 - <constraint firstItem="gd5-Oe-oPN" firstAttribute="top" secondItem="nhf-PK-1ec" secondAttribute="top" id="957-1D-eE0"/>  
1274 - <constraint firstAttribute="trailing" secondItem="8tX-Ga-zhU" secondAttribute="trailing" id="BJQ-l9-S7J"/>  
1275 - <constraint firstItem="gd5-Oe-oPN" firstAttribute="leading" secondItem="nhf-PK-1ec" secondAttribute="leading" id="WNI-1e-htv"/>  
1276 - <constraint firstItem="qyb-mf-TZD" firstAttribute="leading" secondItem="gd5-Oe-oPN" secondAttribute="trailing" constant="8" id="bUf-Ti-6Ic"/>  
1277 - <constraint firstItem="qyb-mf-TZD" firstAttribute="centerY" secondItem="nhf-PK-1ec" secondAttribute="centerY" id="huQ-6k-n2Z"/>  
1278 - <constraint firstItem="8tX-Ga-zhU" firstAttribute="top" secondItem="nhf-PK-1ec" secondAttribute="top" id="iRE-hF-Zb2"/>  
1279 - <constraint firstAttribute="bottom" secondItem="8tX-Ga-zhU" secondAttribute="bottom" id="nGu-jK-iMz"/>  
1280 - <constraint firstItem="qyb-mf-TZD" firstAttribute="centerX" secondItem="nhf-PK-1ec" secondAttribute="centerX" id="nzA-SV-wGC"/>  
1281 - <constraint firstAttribute="bottom" secondItem="gd5-Oe-oPN" secondAttribute="bottom" id="thv-04-jSX"/>  
1282 - </constraints>  
1283 - </view>  
1284 - <imageView contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="9sO-7j-ngT">  
1285 - <rect key="frame" x="147.5" y="30" width="80" height="80"/>  
1286 - <gestureRecognizers/>  
1287 - <constraints>  
1288 - <constraint firstAttribute="width" constant="80" id="aaT-WV-MjZ"/>  
1289 - <constraint firstAttribute="height" constant="80" id="bHl-VP-qSd"/>  
1290 - </constraints>  
1291 - <userDefinedRuntimeAttributes>  
1292 - <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">  
1293 - <integer key="value" value="40"/>  
1294 - </userDefinedRuntimeAttribute>  
1295 - <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>  
1296 - </userDefinedRuntimeAttributes>  
1297 - </imageView>  
1298 - </subviews>  
1299 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1300 - <constraints>  
1301 - <constraint firstItem="9sO-7j-ngT" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="top" constant="30" id="BJf-HM-jZp"/>  
1302 - <constraint firstAttribute="trailing" secondItem="nhf-PK-1ec" secondAttribute="trailing" id="Hhd-aT-EKJ"/>  
1303 - <constraint firstAttribute="trailing" secondItem="ngj-9g-5hs" secondAttribute="trailing" id="Lqf-5R-Vof"/>  
1304 - <constraint firstAttribute="bottom" secondItem="HQy-b9-ePQ" secondAttribute="bottom" id="OOY-Xj-O3f"/>  
1305 - <constraint firstItem="ngj-9g-5hs" firstAttribute="leading" secondItem="isf-zi-cli" secondAttribute="leading" id="QOW-6w-e4w"/>  
1306 - <constraint firstItem="nhf-PK-1ec" firstAttribute="leading" secondItem="isf-zi-cli" secondAttribute="leading" id="S5N-UG-TPg"/>  
1307 - <constraint firstItem="nhf-PK-1ec" firstAttribute="top" secondItem="9sO-7j-ngT" secondAttribute="bottom" constant="20" id="Sd1-f8-8MO"/>  
1308 - <constraint firstAttribute="bottom" secondItem="ngj-9g-5hs" secondAttribute="bottom" id="Z4Q-vc-VSM"/>  
1309 - <constraint firstItem="ngj-9g-5hs" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="top" id="doS-z4-SAG"/>  
1310 - <constraint firstItem="9sO-7j-ngT" firstAttribute="centerX" secondItem="isf-zi-cli" secondAttribute="centerX" id="eO5-ic-tZN"/>  
1311 - <constraint firstAttribute="height" constant="170" id="oir-ns-qxW"/>  
1312 - <constraint firstItem="HQy-b9-ePQ" firstAttribute="centerY" secondItem="isf-zi-cli" secondAttribute="centerY" id="pbA-aE-HU6"/>  
1313 - <constraint firstItem="HQy-b9-ePQ" firstAttribute="centerX" secondItem="isf-zi-cli" secondAttribute="centerX" id="sAd-ka-Cv5"/>  
1314 - <constraint firstItem="HQy-b9-ePQ" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="top" id="t0Y-B2-cX2"/>  
1315 - </constraints>  
1316 - </view>  
1317 - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="nIY-nN-A62">  
1318 - <rect key="frame" x="0.0" y="234" width="375" height="50"/>  
1319 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
1320 - <constraints>  
1321 - <constraint firstAttribute="height" constant="50" id="cYW-6s-rjR"/>  
1322 - </constraints>  
1323 - <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="nKo-gM-IVo">  
1324 - <size key="itemSize" width="50" height="50"/>  
1325 - <size key="headerReferenceSize" width="0.0" height="0.0"/>  
1326 - <size key="footerReferenceSize" width="0.0" height="0.0"/>  
1327 - <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>  
1328 - </collectionViewFlowLayout>  
1329 - <cells>  
1330 - <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="selectCell" id="zB6-cu-Maa" customClass="selectTypeCell" customModule="YouerLiveVideo" customModuleProvider="target">  
1331 - <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>  
1332 - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>  
1333 - <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">  
1334 - <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>  
1335 - <autoresizingMask key="autoresizingMask"/>  
1336 - <subviews>  
1337 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Pk-up-2ih">  
1338 - <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>  
1339 - <fontDescription key="fontDescription" type="system" pointSize="12"/>  
1340 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1341 - <nil key="highlightedColor"/>  
1342 - </label>  
1343 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="suc-N0-vzy">  
1344 - <rect key="frame" x="49" y="0.0" width="1" height="50"/>  
1345 - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>  
1346 - <constraints>  
1347 - <constraint firstAttribute="width" constant="1" id="SSB-k1-YBs"/>  
1348 - </constraints>  
1349 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1350 - <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>  
1351 - <nil key="highlightedColor"/>  
1352 - </label>  
1353 - <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="WXf-Tu-oay">  
1354 - <rect key="frame" x="0.0" y="47" width="50" height="3"/>  
1355 - <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>  
1356 - <constraints>  
1357 - <constraint firstAttribute="height" constant="3" id="mmI-NI-hys"/>  
1358 - </constraints>  
1359 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
1360 - <nil key="textColor"/>  
1361 - <nil key="highlightedColor"/>  
1362 - </label>  
1363 - </subviews>  
1364 - </view>  
1365 - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>  
1366 - <constraints>  
1367 - <constraint firstAttribute="trailing" secondItem="WXf-Tu-oay" secondAttribute="trailing" id="1DM-BI-kJ0"/>  
1368 - <constraint firstAttribute="bottom" secondItem="suc-N0-vzy" secondAttribute="bottom" id="1g5-P1-2B4"/>  
1369 - <constraint firstItem="3Pk-up-2ih" firstAttribute="top" secondItem="zB6-cu-Maa" secondAttribute="top" id="51r-YX-JTH"/>  
1370 - <constraint firstItem="3Pk-up-2ih" firstAttribute="leading" secondItem="zB6-cu-Maa" secondAttribute="leading" id="Fj8-by-KJ7"/>  
1371 - <constraint firstAttribute="trailing" secondItem="3Pk-up-2ih" secondAttribute="trailing" id="IVf-hi-Sp1"/>  
1372 - <constraint firstAttribute="trailing" secondItem="suc-N0-vzy" secondAttribute="trailing" id="Neu-CK-hfI"/>  
1373 - <constraint firstAttribute="bottom" secondItem="3Pk-up-2ih" secondAttribute="bottom" id="Se6-22-LPP"/>  
1374 - <constraint firstAttribute="bottom" secondItem="WXf-Tu-oay" secondAttribute="bottom" id="Uu3-5u-5pk"/>  
1375 - <constraint firstItem="suc-N0-vzy" firstAttribute="top" secondItem="zB6-cu-Maa" secondAttribute="top" id="hqo-pn-dz0"/>  
1376 - <constraint firstItem="WXf-Tu-oay" firstAttribute="leading" secondItem="zB6-cu-Maa" secondAttribute="leading" id="kKZ-BG-uZK"/>  
1377 - </constraints>  
1378 - <connections>  
1379 - <outlet property="currentLabel" destination="WXf-Tu-oay" id="UEG-W5-jCM"/>  
1380 - <outlet property="lineLabel" destination="suc-N0-vzy" id="pLb-HV-fJG"/>  
1381 - <outlet property="titleLabel" destination="3Pk-up-2ih" id="pmn-6t-PlP"/>  
1382 - </connections>  
1383 - </collectionViewCell>  
1384 - </cells>  
1385 - <connections>  
1386 - <outlet property="dataSource" destination="lqb-XV-ZVz" id="Qtm-ca-MEF"/>  
1387 - <outlet property="delegate" destination="lqb-XV-ZVz" id="JnV-MO-A85"/>  
1388 - </connections>  
1389 - </collectionView>  
1390 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="qbV-V4-1Wb">  
1391 - <rect key="frame" x="0.0" y="284" width="375" height="383"/>  
1392 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1393 - <prototypes>  
1394 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="W7l-gM-baV">  
1395 - <rect key="frame" x="0.0" y="28" width="375" height="44"/>  
1396 - <autoresizingMask key="autoresizingMask"/>  
1397 - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="W7l-gM-baV" id="fqd-mq-zcm">  
1398 - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>  
1399 - <autoresizingMask key="autoresizingMask"/>  
1400 - </tableViewCellContentView>  
1401 - </tableViewCell>  
1402 - </prototypes>  
1403 - <connections>  
1404 - <outlet property="dataSource" destination="lqb-XV-ZVz" id="LLR-GW-UNE"/>  
1405 - <outlet property="delegate" destination="lqb-XV-ZVz" id="dTl-a0-wgn"/>  
1406 - </connections>  
1407 - </tableView>  
1408 - </subviews>  
1409 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1410 - <constraints>  
1411 - <constraint firstItem="nIY-nN-A62" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="bottom" id="3JH-pc-PD9"/>  
1412 - <constraint firstAttribute="trailing" secondItem="qbV-V4-1Wb" secondAttribute="trailing" id="92K-HA-c7H"/>  
1413 - <constraint firstItem="nIY-nN-A62" firstAttribute="leading" secondItem="Nko-iq-QeO" secondAttribute="leading" id="Krk-n8-uMH"/>  
1414 - <constraint firstItem="qbV-V4-1Wb" firstAttribute="leading" secondItem="Nko-iq-QeO" secondAttribute="leading" id="Of1-gx-6kM"/>  
1415 - <constraint firstAttribute="trailing" secondItem="isf-zi-cli" secondAttribute="trailing" id="RTV-Ck-k8N"/>  
1416 - <constraint firstItem="isf-zi-cli" firstAttribute="top" secondItem="brV-vZ-9W3" secondAttribute="bottom" id="SHc-mb-QNi"/>  
1417 - <constraint firstItem="qbV-V4-1Wb" firstAttribute="top" secondItem="nIY-nN-A62" secondAttribute="bottom" id="TNI-YE-eyl"/>  
1418 - <constraint firstAttribute="trailing" secondItem="nIY-nN-A62" secondAttribute="trailing" id="dul-2C-eY2"/>  
1419 - <constraint firstItem="isf-zi-cli" firstAttribute="leading" secondItem="Nko-iq-QeO" secondAttribute="leading" id="eGy-yl-AP0"/>  
1420 - <constraint firstItem="cR5-Gc-hQY" firstAttribute="top" secondItem="qbV-V4-1Wb" secondAttribute="bottom" id="fBx-Ju-eLK"/>  
1421 - </constraints>  
1422 - </view>  
1423 - <navigationItem key="navigationItem" title="直播列表" id="P23-gm-beR"/>  
1424 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
1425 - <connections>  
1426 - <outlet property="iconImage" destination="9sO-7j-ngT" id="Egb-2z-ww1"/>  
1427 - <outlet property="liveListTableView" destination="qbV-V4-1Wb" id="M98-yR-OV9"/>  
1428 - <outlet property="nameLabel" destination="gd5-Oe-oPN" id="2u7-2Y-H1g"/>  
1429 - <outlet property="numberLabel" destination="8tX-Ga-zhU" id="iWh-fx-L62"/>  
1430 - <outlet property="titleCollectionView" destination="nIY-nN-A62" id="SBy-Yj-tPs"/>  
1431 - <outlet property="titleViewHeight" destination="cYW-6s-rjR" id="zYI-HZ-q3e"/>  
1432 - </connections>  
1433 - </viewController>  
1434 - <placeholder placeholderIdentifier="IBFirstResponder" id="3SM-jo-HZr" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1435 - </objects>  
1436 - <point key="canvasLocation" x="-103.2" y="1533.2833583208396"/>  
1437 - </scene>  
1438 - <!--我的关注-->  
1439 - <scene sceneID="5Pj-um-Bnv">  
1440 - <objects>  
1441 - <viewController storyboardIdentifier="MyAttentionViewController" id="zFh-S7-nli" customClass="MyAttentionViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">  
1442 - <layoutGuides>  
1443 - <viewControllerLayoutGuide type="top" id="JQ5-9k-ZmT"/>  
1444 - <viewControllerLayoutGuide type="bottom" id="SsA-vp-TY4"/>  
1445 - </layoutGuides>  
1446 - <view key="view" contentMode="scaleToFill" id="cty-Eh-WcV">  
1447 - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>  
1448 - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>  
1449 - <subviews>  
1450 - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="80" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="IMO-Ya-Ykb">  
1451 - <rect key="frame" x="0.0" y="64" width="375" height="603"/>  
1452 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1453 - <connections>  
1454 - <outlet property="dataSource" destination="zFh-S7-nli" id="l8w-94-Khb"/>  
1455 - <outlet property="delegate" destination="zFh-S7-nli" id="HDL-JZ-qph"/>  
1456 - </connections>  
1457 - </tableView>  
1458 - </subviews>  
1459 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
1460 - <constraints>  
1461 - <constraint firstItem="SsA-vp-TY4" firstAttribute="top" secondItem="IMO-Ya-Ykb" secondAttribute="bottom" id="6sW-ZQ-P0X"/>  
1462 - <constraint firstItem="IMO-Ya-Ykb" firstAttribute="leading" secondItem="cty-Eh-WcV" secondAttribute="leading" id="JeM-iL-Uv2"/>  
1463 - <constraint firstItem="IMO-Ya-Ykb" firstAttribute="top" secondItem="JQ5-9k-ZmT" secondAttribute="bottom" id="gA5-Vv-yWp"/>  
1464 - <constraint firstAttribute="trailing" secondItem="IMO-Ya-Ykb" secondAttribute="trailing" id="pMZ-Fu-L8q"/>  
1465 - </constraints>  
1466 - </view>  
1467 - <navigationItem key="navigationItem" title="我的关注" id="FDs-i4-32m"/>  
1468 - <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>  
1469 - <connections>  
1470 - <outlet property="tableView" destination="IMO-Ya-Ykb" id="tBt-n5-whv"/>  
1471 - </connections>  
1472 - </viewController>  
1473 - <placeholder placeholderIdentifier="IBFirstResponder" id="20X-Eg-8F0" userLabel="First Responder" sceneMemberID="firstResponder"/>  
1474 - </objects>  
1475 - <point key="canvasLocation" x="-103.2" y="2202.5487256371816"/>  
1476 - </scene>  
1477 - </scenes>  
1478 - <resources>  
1479 - <image name="default" width="375" height="167"/>  
1480 - <image name="defphoto.png" width="256" height="256"/>  
1481 - <image name="loginBackGround" width="33" height="33"/>  
1482 - <image name="psb.jpg" width="540" height="960"/>  
1483 - <image name="userId.png" width="36" height="56"/>  
1484 - <image name="userPassword.png" width="31" height="41"/>  
1485 - <image name="上传头像.png" width="70" height="70"/>  
1486 - <image name="收拢.png" width="15" height="25"/>  
1487 - <image name="编辑.png" width="35" height="31"/>  
1488 - <image name="观看.png" width="30" height="23"/>  
1489 - </resources>  
1490 -</document>  
YouerLiveVideo/YouerLiveVideo/controllers/NavigationViewController.swift
@@ -1,75 +0,0 @@ @@ -1,75 +0,0 @@
1 -//  
2 -// NavigationViewController.swift  
3 -// YouerLiveVideo  
4 -//  
5 -// Created by 左丞 on 2017/5/16.  
6 -// Copyright © 2017年 左丞. All rights reserved.  
7 -//  
8 -  
9 -import UIKit  
10 -  
11 -class NavigationViewController: UINavigationController {  
12 -  
13 - override func viewDidLoad() {  
14 - super.viewDidLoad()  
15 - UINavigationBar.appearance().tintColor = UIColor(red: 23/255.0, green: 70/255.0, blue: 151/255.0, alpha:1.0)  
16 - // 设置naviBar背景图片  
17 - UINavigationBar.appearance().setBackgroundImage(UIImage(named: "navigationbarBackgroundWhite"), for: UIBarMetrics.default)  
18 - // 设置title的字体  
19 - UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor(red: 23/255.0, green: 70/255.0, blue: 151/255.0, alpha:1.0)]  
20 - // UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName:UIFont.systemFont(ofSize: 20)]  
21 - self.interactivePopGestureRecognizer?.delegate = nil  
22 -  
23 - // Do any additional setup after loading the view.  
24 - }  
25 -  
26 - // MARK: - private method  
27 - func setBackBarButtonItem() -> UIBarButtonItem {  
28 - let backButton = UIButton.init(type: .custom)  
29 - backButton.setImage(UIImage(named: "setting_back"), for: .normal)  
30 - backButton.sizeToFit()  
31 - backButton.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)  
32 - backButton.addTarget(self, action: #selector(NavigationViewController.backClick), for: .touchUpInside)  
33 - return UIBarButtonItem.init(customView: backButton)  
34 - }  
35 -  
36 - // 设置导航栏右边按钮  
37 - func setRightButton() -> UIBarButtonItem {  
38 -  
39 - let searchItem = UIButton.init(type: .custom)  
40 - searchItem.setImage(UIImage(named: "searchbutton_nor"), for: .normal)  
41 - searchItem.sizeToFit()  
42 - searchItem.frame.size = CGSize(width: 30, height: 30)  
43 - searchItem.contentHorizontalAlignment = .right  
44 - searchItem.addTarget(self, action: #selector(NavigationViewController.searchClick), for: .touchUpInside)  
45 - return UIBarButtonItem.init(customView: searchItem)  
46 - }  
47 -  
48 - // 点击右边的添加或搜索  
49 - func searchClick() {  
50 - let searchvc = SearchViewController()  
51 - self.pushViewController(searchvc, animated: true)  
52 - }  
53 -  
54 - /// 返回  
55 - func backClick() {  
56 - self.popViewController(animated: true)  
57 - }  
58 -  
59 - override func didReceiveMemoryWarning() {  
60 - super.didReceiveMemoryWarning()  
61 - // Dispose of any resources that can be recreated.  
62 - }  
63 -  
64 -  
65 - /*  
66 - // MARK: - Navigation  
67 -  
68 - // In a storyboard-based application, you will often want to do a little preparation before navigation  
69 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {  
70 - // Get the new view controller using segue.destinationViewController.  
71 - // Pass the selected object to the new view controller.  
72 - }  
73 - */  
74 -  
75 -}  
YouerLiveVideo/YouerLiveVideo/controllers/User/UserCenter/LoginViewController.swift 0 → 100644
@@ -0,0 +1,145 @@ @@ -0,0 +1,145 @@
  1 +//
  2 +// LoginViewController.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 左丞 on 16/11/11.
  6 +// Copyright © 2016年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class LoginViewController: UIViewController,UITextFieldDelegate {
  12 + @IBOutlet var changeViewTop: NSLayoutConstraint!
  13 + @IBOutlet var phoneNumberTextField: UITextField!
  14 + @IBOutlet var passwordTextField: UITextField!
  15 + override func viewDidLoad() {
  16 + super.viewDidLoad()
  17 + let numberPlaceholder=NSMutableAttributedString(string: "请输入11位数的手机号码")
  18 + numberPlaceholder.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: NSMakeRange(0, 12))
  19 + phoneNumberTextField.attributedPlaceholder=numberPlaceholder
  20 + phoneNumberTextField.tintColor=Theme.topBarColor()
  21 + let passwordPlaceholder=NSMutableAttributedString(string: "请输入6位以上的密码")
  22 + passwordPlaceholder.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: NSMakeRange(0, 10))
  23 + passwordTextField.attributedPlaceholder=passwordPlaceholder
  24 + passwordTextField.tintColor=Theme.topBarColor()
  25 +
  26 + NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.refreshUser), name: NSNotification.Name(rawValue: "refreshLoginUser"), object: nil)
  27 + NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.keyboardWIllChange), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
  28 +// let leftbtn = UIBarButtonItem(title: "返回", style: .plain, target: self, action: #selector(LoginViewController.back))
  29 +// self.navigationItem.title = "登录"
  30 +// self.navigationItem.leftBarButtonItem = leftbtn
  31 + changeViewTop.constant=(getScreenHeight()-64-220)/3
  32 + }
  33 + //点击页面回收键盘
  34 + @IBAction func touchAction(_ sender: AnyObject) {
  35 + self.view.endEditing(true)//回收键盘
  36 + }
  37 + override var preferredStatusBarStyle: UIStatusBarStyle{
  38 + return UIStatusBarStyle.lightContent
  39 + }
  40 + //输入密码点击return回收键盘
  41 + func textFieldShouldReturn(_ textField: UITextField) -> Bool {
  42 + textField.resignFirstResponder()
  43 + return true
  44 + }
  45 + //注册完了后自动填充账号
  46 + func refreshUser(noti:Notification){
  47 + phoneNumberTextField.text = "\(noti.object!)"
  48 + }
  49 + //点击登录按钮
  50 + @IBAction func loginBtnClickAction(_ sender: Any) {
  51 + self.view.endEditing(true)
  52 + if phoneNumberTextField.text!.isMobilePhoneNumber() {
  53 + SVProgressHUD.show(withStatus: "登录...")
  54 + SVProgressHUD.setDefaultMaskType(.black)
  55 + let parameters:Dictionary<String,AnyObject>=["grant_type":"password" as AnyObject,"username":phoneNumberTextField.text! as AnyObject,"password":passwordTextField.text! as AnyObject]
  56 + AppDelegate.instance().httpServer.login(parameters: parameters) { (str, error) in
  57 + let json=JSON.fromString(jsonString: str)
  58 + if let ret=json{
  59 + let er=ret["error"].string
  60 + if let errorStr=er{
  61 + SVProgressHUD.dismiss()
  62 + let Strings=errorStr.components(separatedBy:":")
  63 + if Strings.count >= 2 {
  64 + switch Strings[1] {
  65 + //用户关联多个身份,请使用学事号登录:100
  66 + case "101"://用户认证身份不存在:101
  67 + AppDelegate.instance().window?.makeToast("用户认证身份不存在,请进行账号激活。")
  68 + break
  69 + //用户帐号或密码错误:102
  70 + case "103":// 用户不存在:103
  71 + AppDelegate.instance().window?.makeToast("该号码不存在,请联系客服400-826-2468")
  72 + break
  73 + default:
  74 + AppDelegate.instance().window?.makeToast("\(errorStr)")
  75 + break
  76 + }
  77 + }else{
  78 + AppDelegate.instance().window?.makeToast("\(errorStr)")
  79 + }
  80 + }else if ret["access_token"].stringValue != ""{
  81 + AppDelegate.instance().accountManager.setTokenInfo(tokenInfo: ret)
  82 + AppDelegate.instance().accountManager.saveToken(tokenInfo: ret)
  83 + AppDelegate.instance().accountManager.refreshUserInfo(completionHandler: { (finish) in
  84 + if finish{
  85 + self.loadUserInfo()
  86 + }else{
  87 + AppDelegate.instance().window?.makeToast("身份获取失败")
  88 + SVProgressHUD.dismiss()
  89 + }
  90 + })
  91 + }else{
  92 + SVProgressHUD.dismiss()
  93 + AppDelegate.instance().window?.makeToast("登录失败,请稍后重试")
  94 + }
  95 + }else{
  96 + SVProgressHUD.dismiss()
  97 + AppDelegate.instance().window?.makeToast("登录失败")
  98 + }
  99 + }
  100 + }else{
  101 + self.view.makeToast("请输入正确手机号")
  102 + }
  103 + }
  104 + func loadUserInfo(){
  105 + XSTLiveManager.shareXSTLiveManager().login(userId: self.phoneNumberTextField.text!, completion: { (success) in
  106 + if !success{
  107 + AppDelegate.instance().window?.makeToast("聊天服务登录失败,请连接网络重试")
  108 + SVProgressHUD.dismiss()
  109 + }else{
  110 + SVProgressHUD.dismiss()
  111 + self.back()
  112 + }
  113 + })
  114 + }
  115 + func back(){
  116 + self.dismiss(animated: true, completion: nil)
  117 + LeadViewController.instance.removeAll()
  118 + LeadViewController.instance.showMain()
  119 + }
  120 +
  121 + override func didReceiveMemoryWarning() {
  122 + super.didReceiveMemoryWarning()
  123 + // Dispose of any resources that can be recreated.
  124 + }
  125 + //点击注册按钮
  126 + @IBAction func registerBtnClickAction(_ sender: AnyObject) {
  127 + let vc = UIStoryboard(name: "User", bundle: nil).instantiateViewController(withIdentifier: "RegisterViewControllerVC") as! RegisterViewController
  128 + vc.title = "注册"
  129 + self.navigationController?.pushViewController(vc, animated: true)
  130 + }
  131 + //键盘监听
  132 + func keyboardWIllChange(noti: NSNotification){
  133 + let userInfo:NSDictionary=noti.userInfo! as NSDictionary
  134 + let endFrame=(userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
  135 + if endFrame?.origin.y==getScreenHeight() {
  136 + changeViewTop.constant=(getScreenHeight()-64-220)/3
  137 + }else{
  138 + let y = (getScreenHeight()-64-220)/3+CGFloat(64+220)
  139 + if (endFrame?.origin.y)! < y {
  140 + changeViewTop.constant=getScreenHeight()-64-(endFrame?.size.height)!-220
  141 + }
  142 + }
  143 + }
  144 +
  145 +}
YouerLiveVideo/YouerLiveVideo/controllers/User/UserCenter/PersonalSettingViewController.swift 0 → 100644
@@ -0,0 +1,238 @@ @@ -0,0 +1,238 @@
  1 +//
  2 +// PersonalSettingViewController.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 左丞 on 16/11/12.
  6 +// Copyright © 2016年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class PersonalSettingViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource,UINavigationControllerDelegate,UIImagePickerControllerDelegate{
  12 + @IBOutlet weak var userSettingTableView: UITableView!
  13 + @IBOutlet var rightBarBtn: UIBarButtonItem!
  14 + @IBOutlet var loginoutBtn: UIButton!
  15 + var titleArr:[String] = ["头像","昵称","手机号(账号)"]//["头像","账号","昵称","性别"]
  16 + var user:Contact!
  17 + var isUserActivity:Bool=false
  18 + override func viewDidLoad() {
  19 + super.viewDidLoad()
  20 + user = Contact()
  21 + }
  22 +
  23 + override func didReceiveMemoryWarning() {
  24 + super.didReceiveMemoryWarning()
  25 + }
  26 +
  27 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  28 + switch indexPath.row {
  29 + case 0:
  30 + let sheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
  31 + sheet.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))
  32 + sheet.addAction(UIAlertAction(title: "拍照", style: .default, handler: { (action) in
  33 + if cameraOrPhotPermissions(1, view: self.view){
  34 + let vc = UIImagePickerController()
  35 + vc.delegate = self
  36 + vc.sourceType = .camera
  37 + self.present(vc, animated: true, completion: nil)
  38 + }else{
  39 +
  40 + }
  41 + self.userSettingTableView.reloadData()
  42 + }))
  43 + sheet.addAction(UIAlertAction(title: "从相册选择", style: .default, handler: { (action) in
  44 + if cameraOrPhotPermissions(1, view: self.view){
  45 + let vc = UIImagePickerController()
  46 + vc.delegate = self
  47 + vc.sourceType = .photoLibrary
  48 + self.present(vc, animated: true, completion: nil)
  49 + }else{
  50 +
  51 + }
  52 + self.userSettingTableView.reloadData()
  53 + }))
  54 + self.present(sheet, animated: true, completion: nil)
  55 + break
  56 + case 1:
  57 + let alert = UIAlertController(title: "修改昵称", message: "", preferredStyle: .alert)
  58 + alert.addAction(UIAlertAction(title: "确定", style: .default, handler: { (action) in
  59 + if alert.textFields![0].text == ""{
  60 + return
  61 + }
  62 + if (alert.textFields![0].text?.characters.count)!>15{
  63 + self.user.nickName = (alert.textFields![0].text! as NSString).substring(to: 15)
  64 + }else{
  65 + self.user.nickName = alert.textFields![0].text
  66 + }
  67 + self.userSettingTableView.reloadData()
  68 + }))
  69 + alert.addAction(UIAlertAction(title: "取消", style: .default, handler: nil))
  70 + alert.addTextField { (text) in
  71 + text.placeholder = "请输入昵称,且不能超过15个字符"
  72 + }
  73 + self.present(alert, animated: true, completion: nil)
  74 + break
  75 + case 3:
  76 + let sheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
  77 + sheet.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))
  78 + sheet.addAction(UIAlertAction(title: "男", style: .default, handler: { (action) in
  79 + self.user.userSex = "男"
  80 + self.userSettingTableView.reloadData()
  81 + }))
  82 + sheet.addAction(UIAlertAction(title: "女", style: .default, handler: { (action) in
  83 + self.user.userSex = "女"
  84 + self.userSettingTableView.reloadData()
  85 + }))
  86 + self.present(sheet, animated: true, completion: nil)
  87 + break
  88 + default:
  89 + break
  90 + }
  91 + }
  92 +
  93 +
  94 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  95 + return titleArr.count
  96 + }
  97 +
  98 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  99 + return 44
  100 + }
  101 +
  102 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  103 + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! PersonalSettingCell
  104 + cell.nameTitleLabel.text = titleArr[indexPath.row]
  105 + cell.nameLabelRightSpace.constant = 8
  106 + cell.imagePhoto.isHidden = true
  107 + cell.namelabel.isHidden = false
  108 + cell.rightArrow.isHidden = false
  109 + cell.isUserInteractionEnabled = true
  110 + if isUserActivity {
  111 + cell.isUserInteractionEnabled=true
  112 + }else{
  113 + cell.isUserInteractionEnabled=false
  114 + }
  115 + switch indexPath.row {
  116 + case 0:
  117 + cell.imagePhoto.isHidden = false
  118 + cell.namelabel.isHidden = true
  119 + cell.imagePhoto.sd_setImage(with: URL(string: user.imageURL), placeholderImage: UIImage(named: "defphoto"))
  120 + break
  121 + case 1:
  122 + cell.namelabel.text = user.nickName//AppDelegate.instance().accountManager.name()
  123 + break
  124 + case 2:
  125 + cell.nameLabelRightSpace.constant = -10
  126 + cell.rightArrow.isHidden = true
  127 + cell.isUserInteractionEnabled = false
  128 + cell.namelabel.text = user.userId//AppDelegate.instance().accountManager.phone()
  129 + break
  130 + case 3:
  131 + cell.namelabel.text = user.userSex
  132 + break
  133 +
  134 + default:
  135 + break
  136 + }
  137 + return cell
  138 + }
  139 +
  140 + func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
  141 + picker.dismiss(animated: true, completion: { () -> Void in
  142 + var oimage = info[UIImagePickerControllerOriginalImage] as? UIImage
  143 + oimage = oimage!.imageScaledToScale()
  144 + let filePath=FilesManager.imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))
  145 + try? UIImageJPEGRepresentation(oimage!,0.5)!.write(to: URL(fileURLWithPath: filePath), options: [.atomic])
  146 + self.updateImage(file: filePath)
  147 + })
  148 + }
  149 + func updateImage(file:String){
  150 + SVProgressHUD.show(withStatus: "图片上传中...")
  151 + SVProgressHUD.setDefaultMaskType(.black)
  152 + AppDelegate.instance().httpServer.uploadFile(file: NSURL(fileURLWithPath: file)) { (str, error) in
  153 + SVProgressHUD.dismiss()
  154 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  155 + let str=json.contentData().arrayValue[0].stringValue
  156 + self.user.imageURL=str
  157 + }, failHandler: { (error) in
  158 + self.user.imageURL=""
  159 + self.view.makeToast("图片上传失败:\(error.localizedDescription)")
  160 + })
  161 + self.userSettingTableView.reloadData()
  162 + }
  163 + }
  164 + // MARK: - 退出登录按钮点击事件
  165 + @IBAction func ExsitBtnClickAction(_ sender: Any) {
  166 + AppDelegate.instance().accountManager.logOut()
  167 + }
  168 + // MARK: - 完成按钮点击事件
  169 + @IBAction func finishAction(_ sender: UIBarButtonItem) {
  170 + if isUserActivity {
  171 + //需要新的接口来修改个人信息
  172 + SVProgressHUD.show(withStatus: "修改个人信息...")
  173 + SVProgressHUD.setDefaultMaskType(.black)
  174 + let parameters:Dictionary<String,AnyObject>=["f_RealName":self.user.nickName as AnyObject,"f_HeadIcon":self.user.imageURL as AnyObject]
  175 + AppDelegate.instance().httpServer.updataUserInfo(parameters: parameters, completionHandler: { (str, error) in
  176 + SVProgressHUD.dismiss()
  177 + if error==nil {
  178 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  179 + //把账号信息存储下来,暂时这样修改。若以后个人信息中有其他元素,需加新的接口来更新个人信息。
  180 + // var dic=Setting.getUserInfo()?.dictionaryValue["data"]?.dictionaryObject
  181 + // _=dic?.updateValue(self.user.nickName, forKey: "f_RealName")
  182 + // _=dic?.updateValue(self.user.imageURL, forKey: "f_HeadIcon")
  183 + // let userInfo:Dictionary<String,AnyObject>=["status":1 as AnyObject,"data":dic as AnyObject]
  184 + // AppDelegate.instance().accountManager.rawUserInfo=JSON(userInfo)
  185 + // _=Setting.saveUserInfo(JSON(userInfo).rawString())
  186 + XSTLiveManager.shareXSTLiveManager().setUpPersonInfo(name: self.user.nickName, icon: self.user.imageURL)
  187 + AppDelegate.instance().window?.makeToast("修改个人信息成功")
  188 + self.rightBarBtn.title="修改"
  189 + self.isUserActivity=false
  190 + self.loginoutBtn.isHidden=false
  191 + self.userSettingTableView.reloadData()
  192 + AppDelegate.instance().accountManager.refreshUserInfo(completionHandler: { (finish) in
  193 + if !finish{
  194 + AppDelegate.instance().window?.makeToast("身份获取失败")
  195 + }
  196 + })
  197 + }else{
  198 + self.view.makeToast("修改个人信息失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
  199 + }
  200 + }else{
  201 + self.view.makeToast("修改个人信息失败:\(error!.description)")
  202 + }
  203 + })
  204 + }else{
  205 + self.rightBarBtn.title="保存"
  206 + self.isUserActivity=true
  207 + self.loginoutBtn.isHidden=true
  208 + self.userSettingTableView.reloadData()
  209 + }
  210 + }
  211 +
  212 +}
  213 +
  214 +class PersonalSettingCell: UITableViewCell {
  215 +
  216 +
  217 + @IBOutlet weak var nameLabelRightSpace: NSLayoutConstraint!
  218 +
  219 + @IBOutlet weak var rightArrow: UIImageView!
  220 + @IBOutlet weak var namelabel: UILabel!
  221 + @IBOutlet weak var imagePhoto: UIImageView!
  222 + @IBOutlet weak var nameTitleLabel: UILabel!
  223 +
  224 +
  225 +}
  226 +
  227 +class Contact {
  228 + var nickName:String!
  229 + var userId:String!
  230 + var userSex:String!
  231 + var imageURL:String!
  232 + init() {
  233 + nickName = AppDelegate.instance().accountManager.name()
  234 + userId = AppDelegate.instance().accountManager.phone()
  235 + userSex = "男"
  236 + imageURL = AppDelegate.instance().accountManager.photo()
  237 + }
  238 +}
YouerLiveVideo/YouerLiveVideo/controllers/User/UserCenter/RegisterViewController.swift 0 → 100644
@@ -0,0 +1,173 @@ @@ -0,0 +1,173 @@
  1 +//
  2 +// RegisterViewController.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 左丞 on 16/11/9.
  6 +// Copyright © 2016年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class RegisterViewController: UIViewController,UIAlertViewDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UITextFieldDelegate{
  12 +
  13 +
  14 + @IBOutlet weak var sendVerificationCode: UIButton!
  15 + @IBOutlet var nikeNameTextFiled: UITextField! //昵称
  16 + @IBOutlet var passwordTextField: UITextField! //输入密码
  17 + @IBOutlet var confirmPasswordTextField: UITextField!//确认密码
  18 + @IBOutlet weak var phoneNumber: UITextField!
  19 + @IBOutlet weak var inputVerificationCode: UITextField!//验证码
  20 + @IBOutlet weak var registerBtn: UIButton!
  21 + @IBOutlet weak var nickNameLabel: UILabel!
  22 + @IBOutlet weak var sendPhotoImage: UIImageView!
  23 + var iconImage: UIImage?
  24 + var name: String=""
  25 + override func viewDidLoad() {
  26 + super.viewDidLoad()
  27 + // Do any additional setup after loading the view.
  28 + }
  29 +
  30 + @IBAction func touchAction(_ sender: AnyObject) {
  31 + self.view.endEditing(true)//回收键盘
  32 + }
  33 + override func didReceiveMemoryWarning() {
  34 + super.didReceiveMemoryWarning()
  35 + // Dispose of any resources that can be recreated.
  36 + }
  37 + func textFieldShouldReturn(_ textField: UITextField) -> Bool {
  38 + textField.resignFirstResponder()
  39 + return true
  40 + }
  41 +
  42 + @IBAction func sendVerificationCodeClickAction(_ sender: AnyObject) {//发验证码
  43 + self.view.endEditing(true)
  44 + if nikeNameTextFiled.text!.characters.count<11{
  45 + if passwordTextField.text!.characters.count>=6 && passwordTextField.text!.characters.count<=8 && confirmPasswordTextField.text!.characters.count>=6 && confirmPasswordTextField.text!.characters.count<=8{
  46 + if passwordTextField.text!==confirmPasswordTextField.text!{
  47 + if (phoneNumber.text?.isMobilePhoneNumber())! {
  48 + SVProgressHUD.show(withStatus: "获取验证码...")
  49 + SVProgressHUD.setDefaultMaskType(.black)
  50 + AppDelegate.instance().httpServer.getChangePhoneCaptcha(mobile: phoneNumber.text!, completionHandler: { (str, error) in
  51 + SVProgressHUD.dismiss()
  52 + if error==nil {
  53 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  54 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  55 + self.view.makeToast("验证码发送成功")
  56 + self.nikeNameTextFiled.isUserInteractionEnabled=false
  57 + self.phoneNumber.isUserInteractionEnabled=false
  58 + self.passwordTextField.isUserInteractionEnabled=false
  59 + self.confirmPasswordTextField.isUserInteractionEnabled=false
  60 + }, failHandler: { (error) in
  61 + self.view.makeToast("验证码发送失败:\(error.localizedDescription)")
  62 + })
  63 + }else{
  64 + self.view.makeToast("验证码发送失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
  65 + }
  66 + }else{
  67 + self.view.makeToast("验证码发送失败:\(error!.description)")
  68 + }
  69 + })
  70 + }else{
  71 + self.view.makeToast("请输入正确手机号")
  72 + }
  73 + }else{
  74 + self.view.makeToast("两次输入密码不一致")
  75 + }
  76 + }else{
  77 + self.view.makeToast("密码必须为6-8位字符或者数字")
  78 + }
  79 + }else{
  80 + self.view.makeToast("昵称必须小于11位")
  81 + }
  82 + }
  83 +
  84 + @IBAction func registerBtnAction(_ sender: AnyObject) {//注册
  85 + if inputVerificationCode.text!.characters.count == 4{
  86 + SVProgressHUD.show(withStatus: "注册...")
  87 + SVProgressHUD.setDefaultMaskType(.black)
  88 + let parameters:Dictionary<String,AnyObject>=["f_Account":phoneNumber.text! as AnyObject,"f_UserPassword":passwordTextField.text! as AnyObject,"f_RealName": (nikeNameTextFiled.text!=="" ? phoneNumber.text! : nikeNameTextFiled.text!) as AnyObject,"f_MobilePhone":phoneNumber.text! as AnyObject,"f_VerCode":inputVerificationCode.text! as AnyObject]
  89 + AppDelegate.instance().httpServer.getCreateUser(parameters: parameters) { (str, error) in
  90 + SVProgressHUD.dismiss()
  91 + self.nikeNameTextFiled.isUserInteractionEnabled=true
  92 + self.phoneNumber.isUserInteractionEnabled=true
  93 + self.passwordTextField.isUserInteractionEnabled=true
  94 + self.confirmPasswordTextField.isUserInteractionEnabled=true
  95 + if error==nil {
  96 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  97 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  98 + self.navigationController!.popToRootViewController(animated: true)
  99 + AppDelegate.instance().window?.makeToast("注册成功")
  100 + NotificationCenter.default.post(name: NSNotification.Name(rawValue: "refreshLoginUser"), object: self.phoneNumber.text!)
  101 + //是否登录
  102 + }, failHandler: { (error) in
  103 + self.view.makeToast("注册失败:\(error.localizedDescription)")
  104 + })
  105 + }else{
  106 + self.view.makeToast("注册失败:\(JSON.fromString(jsonString: str)!["message"].stringValue)")
  107 + }
  108 + }else{
  109 + self.view.makeToast("注册失败:\(error!.description)")
  110 + }
  111 + }
  112 + }else{
  113 + self.view.makeToast("验证码必须是四位数字")
  114 + }
  115 + }
  116 +
  117 +
  118 + @IBAction func loginBtnClickAction(_ sender: AnyObject) {
  119 + self.navigationController!.popViewController(animated: false)
  120 + }
  121 +
  122 + @IBAction func nickNameSetTapAction(_ sender: AnyObject) {
  123 + let alert = UIAlertController(title: "设置昵称", message: "", preferredStyle: .alert)
  124 + alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil))
  125 + alert.addAction(UIAlertAction(title: "确定", style: .default, handler: { (action) in
  126 + if alert.textFields![0].text == ""{
  127 + return
  128 + }
  129 + self.name = alert.textFields![0].text!
  130 + self.nickNameLabel.text = alert.textFields![0].text
  131 + }))
  132 +
  133 + alert.addTextField { (text) in
  134 + text.placeholder = "请输入昵称"
  135 + }
  136 + self.present(alert, animated: true, completion: nil)
  137 + }
  138 +
  139 + @IBAction func sendPhotoImageTapAction(_ sender: AnyObject) {
  140 + if cameraOrPhotPermissions(0, view: self.view){
  141 + let vc = UIImagePickerController()
  142 + vc.delegate = self
  143 + vc.sourceType = .photoLibrary
  144 + self.present(vc, animated: true, completion: nil)
  145 + }else{
  146 +
  147 + }
  148 + }
  149 +
  150 + func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
  151 + picker.dismiss(animated: true, completion: { () -> Void in
  152 + var oimage = info[UIImagePickerControllerOriginalImage] as? UIImage
  153 + oimage = oimage!.imageScaledToScale()
  154 + let filePath=FilesManager.imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))
  155 + try? UIImageJPEGRepresentation(oimage!,0.5)!.write(to: URL(fileURLWithPath: filePath), options: [.atomic])
  156 + self.sendPhotoImage.layer.masksToBounds = true
  157 + self.sendPhotoImage.layer.cornerRadius = 25
  158 + self.sendPhotoImage.image = oimage
  159 + self.iconImage = oimage
  160 + })
  161 + }
  162 +
  163 + /*
  164 + // MARK: - Navigation
  165 +
  166 + // In a storyboard-based application, you will often want to do a little preparation before navigation
  167 + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  168 + // Get the new view controller using segue.destinationViewController.
  169 + // Pass the selected object to the new view controller.
  170 + }
  171 + */
  172 +
  173 +}
YouerLiveVideo/YouerLiveVideo/controllers/User/UserCenter/User.storyboard 0 → 100644
@@ -0,0 +1,1490 @@ @@ -0,0 +1,1490 @@
  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 + <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="Aspect ratio constraints" minToolsVersion="5.1"/>
  9 + <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
  10 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  11 + </dependencies>
  12 + <scenes>
  13 + <!--Login View Controller-->
  14 + <scene sceneID="orQ-wB-ipa">
  15 + <objects>
  16 + <viewController storyboardIdentifier="LoginViewControllerVC" id="fvc-9c-Gca" customClass="LoginViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  17 + <layoutGuides>
  18 + <viewControllerLayoutGuide type="top" id="M3F-7t-f1g"/>
  19 + <viewControllerLayoutGuide type="bottom" id="agc-xf-u2B"/>
  20 + </layoutGuides>
  21 + <view key="view" contentMode="scaleToFill" id="rVC-Df-GKu">
  22 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  23 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  24 + <subviews>
  25 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="loginBackGround" translatesAutoresizingMaskIntoConstraints="NO" id="Bob-Ef-450">
  26 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  27 + </imageView>
  28 + <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tqb-X5-ujR" customClass="UIControl">
  29 + <rect key="frame" x="0.0" y="186" width="375" height="220"/>
  30 + <subviews>
  31 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eXd-TY-qlW">
  32 + <rect key="frame" x="62.5" y="0.0" width="250" height="112"/>
  33 + <subviews>
  34 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EAC-sg-BLE">
  35 + <rect key="frame" x="0.0" y="0.0" width="250" height="56"/>
  36 + <subviews>
  37 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NJW-yg-XQM">
  38 + <rect key="frame" x="0.0" y="55" width="250" height="1"/>
  39 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  40 + <constraints>
  41 + <constraint firstAttribute="height" constant="1" id="GtD-JL-A0z"/>
  42 + </constraints>
  43 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  44 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  45 + <nil key="highlightedColor"/>
  46 + </label>
  47 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="userId.png" translatesAutoresizingMaskIntoConstraints="NO" id="1xZ-bM-AMz">
  48 + <rect key="frame" x="8" y="12.5" width="20" height="31"/>
  49 + <constraints>
  50 + <constraint firstAttribute="width" constant="20" id="3hd-Sx-hPC"/>
  51 + <constraint firstAttribute="width" secondItem="1xZ-bM-AMz" secondAttribute="height" multiplier="9:14" id="DCg-L0-4Lx"/>
  52 + </constraints>
  53 + </imageView>
  54 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入11位数的手机号码 " minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="IzH-dB-I9H">
  55 + <rect key="frame" x="36" y="18.5" width="214" height="19"/>
  56 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  57 + <fontDescription key="fontDescription" type="system" pointSize="13"/>
  58 + <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
  59 + <connections>
  60 + <outlet property="delegate" destination="fvc-9c-Gca" id="l7n-F4-FsF"/>
  61 + </connections>
  62 + </textField>
  63 + </subviews>
  64 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  65 + <constraints>
  66 + <constraint firstAttribute="trailing" secondItem="IzH-dB-I9H" secondAttribute="trailing" id="DIX-3U-BQG"/>
  67 + <constraint firstAttribute="height" constant="56" id="Ff7-2n-071"/>
  68 + <constraint firstItem="IzH-dB-I9H" firstAttribute="leading" secondItem="1xZ-bM-AMz" secondAttribute="trailing" constant="8" id="Mi3-ud-m0O"/>
  69 + <constraint firstItem="IzH-dB-I9H" firstAttribute="centerY" secondItem="EAC-sg-BLE" secondAttribute="centerY" id="Ud1-tF-ivz"/>
  70 + <constraint firstItem="1xZ-bM-AMz" firstAttribute="leading" secondItem="EAC-sg-BLE" secondAttribute="leading" constant="8" id="Z77-MJ-BF0"/>
  71 + <constraint firstAttribute="bottom" secondItem="NJW-yg-XQM" secondAttribute="bottom" id="i3N-yW-fre"/>
  72 + <constraint firstAttribute="trailing" secondItem="NJW-yg-XQM" secondAttribute="trailing" id="ued-ca-1l3"/>
  73 + <constraint firstItem="1xZ-bM-AMz" firstAttribute="centerY" secondItem="EAC-sg-BLE" secondAttribute="centerY" id="xd6-hf-JPu"/>
  74 + <constraint firstItem="NJW-yg-XQM" firstAttribute="leading" secondItem="EAC-sg-BLE" secondAttribute="leading" id="xlc-R5-T0J"/>
  75 + </constraints>
  76 + </view>
  77 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xba-Rv-jIe">
  78 + <rect key="frame" x="0.0" y="56" width="250" height="56"/>
  79 + <subviews>
  80 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BcZ-u5-RFA">
  81 + <rect key="frame" x="0.0" y="55" width="250" height="1"/>
  82 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  83 + <constraints>
  84 + <constraint firstAttribute="height" constant="1" id="aAz-El-TeO"/>
  85 + </constraints>
  86 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  87 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  88 + <nil key="highlightedColor"/>
  89 + </label>
  90 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="userPassword.png" translatesAutoresizingMaskIntoConstraints="NO" id="oON-zY-4HS">
  91 + <rect key="frame" x="8" y="15" width="20" height="26"/>
  92 + <constraints>
  93 + <constraint firstAttribute="width" secondItem="oON-zY-4HS" secondAttribute="height" multiplier="31:41" id="hSc-3U-3kl"/>
  94 + <constraint firstAttribute="width" constant="20" id="vb3-Wd-N14"/>
  95 + </constraints>
  96 + </imageView>
  97 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入6位以上的密码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="nVn-EA-yWM">
  98 + <rect key="frame" x="36" y="18.5" width="214" height="19"/>
  99 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  100 + <fontDescription key="fontDescription" type="system" pointSize="13"/>
  101 + <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
  102 + <connections>
  103 + <outlet property="delegate" destination="fvc-9c-Gca" id="tMS-9N-o09"/>
  104 + </connections>
  105 + </textField>
  106 + </subviews>
  107 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  108 + <constraints>
  109 + <constraint firstItem="oON-zY-4HS" firstAttribute="leading" secondItem="xba-Rv-jIe" secondAttribute="leading" constant="8" id="6sV-zB-qIs"/>
  110 + <constraint firstItem="nVn-EA-yWM" firstAttribute="centerY" secondItem="xba-Rv-jIe" secondAttribute="centerY" id="HaD-wa-ZFb"/>
  111 + <constraint firstAttribute="trailing" secondItem="BcZ-u5-RFA" secondAttribute="trailing" id="KDU-ei-Izn"/>
  112 + <constraint firstItem="nVn-EA-yWM" firstAttribute="leading" secondItem="oON-zY-4HS" secondAttribute="trailing" constant="8" id="LHP-bs-Kee"/>
  113 + <constraint firstAttribute="bottom" secondItem="BcZ-u5-RFA" secondAttribute="bottom" id="N41-uo-obj"/>
  114 + <constraint firstItem="oON-zY-4HS" firstAttribute="centerY" secondItem="xba-Rv-jIe" secondAttribute="centerY" id="Sf8-w6-WiM"/>
  115 + <constraint firstAttribute="trailing" secondItem="nVn-EA-yWM" secondAttribute="trailing" id="UTj-My-xsB"/>
  116 + <constraint firstItem="BcZ-u5-RFA" firstAttribute="leading" secondItem="xba-Rv-jIe" secondAttribute="leading" id="gei-H3-PPW"/>
  117 + </constraints>
  118 + </view>
  119 + </subviews>
  120 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  121 + <constraints>
  122 + <constraint firstAttribute="trailing" secondItem="xba-Rv-jIe" secondAttribute="trailing" id="0A8-Lv-KWd"/>
  123 + <constraint firstAttribute="height" constant="112" id="0mn-L0-Qpr"/>
  124 + <constraint firstItem="EAC-sg-BLE" firstAttribute="top" secondItem="eXd-TY-qlW" secondAttribute="top" id="Bsa-ry-Tmn"/>
  125 + <constraint firstItem="xba-Rv-jIe" firstAttribute="top" secondItem="EAC-sg-BLE" secondAttribute="bottom" id="OKE-Ch-lJc"/>
  126 + <constraint firstAttribute="bottom" secondItem="xba-Rv-jIe" secondAttribute="bottom" id="aCK-P5-ecJ"/>
  127 + <constraint firstItem="xba-Rv-jIe" firstAttribute="leading" secondItem="eXd-TY-qlW" secondAttribute="leading" id="aap-4K-zSS"/>
  128 + <constraint firstItem="EAC-sg-BLE" firstAttribute="leading" secondItem="eXd-TY-qlW" secondAttribute="leading" id="e0b-LG-hBZ"/>
  129 + <constraint firstAttribute="trailing" secondItem="EAC-sg-BLE" secondAttribute="trailing" id="uOA-y7-ZUY"/>
  130 + </constraints>
  131 + </view>
  132 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qs2-9k-jbh">
  133 + <rect key="frame" x="62.5" y="144" width="250" height="30"/>
  134 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  135 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  136 + <state key="normal" title="登录">
  137 + <color key="titleColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  138 + </state>
  139 + <userDefinedRuntimeAttributes>
  140 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  141 + <integer key="value" value="15"/>
  142 + </userDefinedRuntimeAttribute>
  143 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  144 + </userDefinedRuntimeAttributes>
  145 + <connections>
  146 + <action selector="loginBtnClickAction:" destination="fvc-9c-Gca" eventType="touchUpInside" id="INl-Rf-lsr"/>
  147 + </connections>
  148 + </button>
  149 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pzO-1N-Vrz">
  150 + <rect key="frame" x="62.5" y="182" width="250" height="30"/>
  151 + <subviews>
  152 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="忘记密码" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="v6n-Br-sBy">
  153 + <rect key="frame" x="0.0" y="0.0" width="53.5" height="30"/>
  154 + <fontDescription key="fontDescription" type="system" pointSize="13"/>
  155 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  156 + <nil key="highlightedColor"/>
  157 + </label>
  158 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注册" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7fx-1i-VwW">
  159 + <rect key="frame" x="223" y="0.0" width="27" height="30"/>
  160 + <fontDescription key="fontDescription" type="system" pointSize="13"/>
  161 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  162 + <nil key="highlightedColor"/>
  163 + </label>
  164 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ps0-yz-uMV">
  165 + <rect key="frame" x="0.0" y="0.0" width="250" height="30"/>
  166 + <fontDescription key="fontDescription" type="system" pointSize="13"/>
  167 + <state key="normal">
  168 + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  169 + </state>
  170 + <connections>
  171 + <action selector="registerBtnClickAction:" destination="fvc-9c-Gca" eventType="touchUpInside" id="joQ-gk-ZzE"/>
  172 + </connections>
  173 + </button>
  174 + </subviews>
  175 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  176 + <constraints>
  177 + <constraint firstItem="ps0-yz-uMV" firstAttribute="top" secondItem="pzO-1N-Vrz" secondAttribute="top" id="7G1-mO-jQj"/>
  178 + <constraint firstAttribute="trailing" secondItem="7fx-1i-VwW" secondAttribute="trailing" id="8ot-xx-BFo"/>
  179 + <constraint firstAttribute="bottom" secondItem="7fx-1i-VwW" secondAttribute="bottom" id="Byb-9b-kOd"/>
  180 + <constraint firstAttribute="height" constant="30" id="TT4-WL-hYa"/>
  181 + <constraint firstItem="7fx-1i-VwW" firstAttribute="top" secondItem="pzO-1N-Vrz" secondAttribute="top" id="VzP-hc-s7a"/>
  182 + <constraint firstAttribute="bottom" secondItem="ps0-yz-uMV" secondAttribute="bottom" id="d8H-p3-iy8"/>
  183 + <constraint firstAttribute="trailing" secondItem="ps0-yz-uMV" secondAttribute="trailing" id="eo1-LL-5jy"/>
  184 + <constraint firstAttribute="bottom" secondItem="v6n-Br-sBy" secondAttribute="bottom" id="gbJ-jU-WFB"/>
  185 + <constraint firstItem="v6n-Br-sBy" firstAttribute="top" secondItem="pzO-1N-Vrz" secondAttribute="top" id="hj5-hs-ep4"/>
  186 + <constraint firstItem="ps0-yz-uMV" firstAttribute="leading" secondItem="pzO-1N-Vrz" secondAttribute="leading" id="uJt-wq-oTh"/>
  187 + <constraint firstItem="v6n-Br-sBy" firstAttribute="leading" secondItem="pzO-1N-Vrz" secondAttribute="leading" id="xdM-JA-UcQ"/>
  188 + </constraints>
  189 + </view>
  190 + </subviews>
  191 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  192 + <constraints>
  193 + <constraint firstItem="eXd-TY-qlW" firstAttribute="width" secondItem="tqb-X5-ujR" secondAttribute="width" multiplier="2:3" id="28b-2f-9yl"/>
  194 + <constraint firstAttribute="bottom" secondItem="pzO-1N-Vrz" secondAttribute="bottom" constant="8" id="AcS-52-YRY"/>
  195 + <constraint firstAttribute="height" constant="220" id="JHj-W0-zAJ"/>
  196 + <constraint firstItem="pzO-1N-Vrz" firstAttribute="width" secondItem="Qs2-9k-jbh" secondAttribute="width" id="RHT-EX-Fz6"/>
  197 + <constraint firstItem="eXd-TY-qlW" firstAttribute="centerX" secondItem="tqb-X5-ujR" secondAttribute="centerX" id="Yap-fj-Sza"/>
  198 + <constraint firstItem="pzO-1N-Vrz" firstAttribute="top" secondItem="Qs2-9k-jbh" secondAttribute="bottom" constant="8" id="YqV-mN-jUi"/>
  199 + <constraint firstItem="Qs2-9k-jbh" firstAttribute="centerX" secondItem="tqb-X5-ujR" secondAttribute="centerX" id="icb-A7-CtC"/>
  200 + <constraint firstItem="Qs2-9k-jbh" firstAttribute="width" secondItem="eXd-TY-qlW" secondAttribute="width" id="ipD-di-CWB"/>
  201 + <constraint firstItem="pzO-1N-Vrz" firstAttribute="centerX" secondItem="tqb-X5-ujR" secondAttribute="centerX" id="o6l-Fj-Cb6"/>
  202 + <constraint firstItem="eXd-TY-qlW" firstAttribute="top" secondItem="tqb-X5-ujR" secondAttribute="top" id="uPt-SF-Tbq"/>
  203 + </constraints>
  204 + </view>
  205 + </subviews>
  206 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  207 + <gestureRecognizers/>
  208 + <constraints>
  209 + <constraint firstItem="agc-xf-u2B" firstAttribute="top" secondItem="Bob-Ef-450" secondAttribute="bottom" id="1po-1a-xaB"/>
  210 + <constraint firstItem="Bob-Ef-450" firstAttribute="leading" secondItem="rVC-Df-GKu" secondAttribute="leading" id="7Sq-vg-TJG"/>
  211 + <constraint firstAttribute="trailing" secondItem="tqb-X5-ujR" secondAttribute="trailing" id="F9s-LV-2UW"/>
  212 + <constraint firstItem="tqb-X5-ujR" firstAttribute="top" secondItem="M3F-7t-f1g" secondAttribute="bottom" constant="166" id="Oea-d4-0BB"/>
  213 + <constraint firstItem="Bob-Ef-450" firstAttribute="top" secondItem="rVC-Df-GKu" secondAttribute="top" id="TCI-Vu-vUz"/>
  214 + <constraint firstAttribute="trailing" secondItem="Bob-Ef-450" secondAttribute="trailing" id="y4W-E4-8L6"/>
  215 + <constraint firstItem="tqb-X5-ujR" firstAttribute="leading" secondItem="rVC-Df-GKu" secondAttribute="leading" id="zlD-w4-YPr"/>
  216 + </constraints>
  217 + <connections>
  218 + <outletCollection property="gestureRecognizers" destination="X5v-TO-Lu5" appends="YES" id="QuA-4X-qlp"/>
  219 + </connections>
  220 + </view>
  221 + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
  222 + <size key="freeformSize" width="375" height="667"/>
  223 + <connections>
  224 + <outlet property="changeViewTop" destination="Oea-d4-0BB" id="FSX-wE-ENn"/>
  225 + <outlet property="passwordTextField" destination="nVn-EA-yWM" id="k8J-rx-Oub"/>
  226 + <outlet property="phoneNumberTextField" destination="IzH-dB-I9H" id="7Kd-jZ-pC2"/>
  227 + </connections>
  228 + </viewController>
  229 + <placeholder placeholderIdentifier="IBFirstResponder" id="4gl-mL-off" userLabel="First Responder" sceneMemberID="firstResponder"/>
  230 + <tapGestureRecognizer id="X5v-TO-Lu5">
  231 + <connections>
  232 + <action selector="touchAction:" destination="fvc-9c-Gca" id="oP2-EM-bgW"/>
  233 + </connections>
  234 + </tapGestureRecognizer>
  235 + </objects>
  236 + <point key="canvasLocation" x="-1468" y="1534.1829085457273"/>
  237 + </scene>
  238 + <!--个人设置-->
  239 + <scene sceneID="7Fy-nr-XeV">
  240 + <objects>
  241 + <viewController storyboardIdentifier="PersonalSettingViewControllerVC" id="zag-ex-Ns7" customClass="PersonalSettingViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  242 + <layoutGuides>
  243 + <viewControllerLayoutGuide type="top" id="UCq-di-1FE"/>
  244 + <viewControllerLayoutGuide type="bottom" id="6c4-3r-MCg"/>
  245 + </layoutGuides>
  246 + <view key="view" contentMode="scaleToFill" id="ohI-ec-VmG">
  247 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  248 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  249 + <subviews>
  250 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="zVa-Jq-aTu">
  251 + <rect key="frame" x="0.0" y="64" width="375" height="535"/>
  252 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  253 + <view key="tableFooterView" contentMode="scaleToFill" id="12C-tj-ZV7">
  254 + <rect key="frame" x="0.0" y="72" width="375" height="1"/>
  255 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  256 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  257 + </view>
  258 + <prototypes>
  259 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="P7c-Ko-kqd" customClass="PersonalSettingCell" customModule="YouerLiveVideo" customModuleProvider="target">
  260 + <rect key="frame" x="0.0" y="28" width="375" height="44"/>
  261 + <autoresizingMask key="autoresizingMask"/>
  262 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="P7c-Ko-kqd" id="Raa-86-9ng">
  263 + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
  264 + <autoresizingMask key="autoresizingMask"/>
  265 + <subviews>
  266 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="手机号(账号)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="juK-fe-Y7f">
  267 + <rect key="frame" x="15" y="12" width="105" height="20.5"/>
  268 + <constraints>
  269 + <constraint firstAttribute="width" constant="105" id="Lby-yz-Twy"/>
  270 + </constraints>
  271 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  272 + <nil key="textColor"/>
  273 + <nil key="highlightedColor"/>
  274 + </label>
  275 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="收拢.png" translatesAutoresizingMaskIntoConstraints="NO" id="k9H-ER-871">
  276 + <rect key="frame" x="350" y="13.5" width="10" height="17"/>
  277 + <constraints>
  278 + <constraint firstAttribute="width" secondItem="k9H-ER-871" secondAttribute="height" multiplier="3:5" id="34k-Gi-2Ee"/>
  279 + <constraint firstAttribute="width" constant="10" id="zRD-Rc-v5U"/>
  280 + </constraints>
  281 + </imageView>
  282 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pMa-ZG-7NM">
  283 + <rect key="frame" x="121" y="12" width="221" height="20.5"/>
  284 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  285 + <color key="textColor" red="0.65098039220000004" green="0.65098039220000004" blue="0.6588235294" alpha="1" colorSpace="calibratedRGB"/>
  286 + <nil key="highlightedColor"/>
  287 + </label>
  288 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="oH0-ty-ODc">
  289 + <rect key="frame" x="312" y="7" width="30" height="30"/>
  290 + <constraints>
  291 + <constraint firstAttribute="width" constant="30" id="QjD-M0-idc"/>
  292 + </constraints>
  293 + <userDefinedRuntimeAttributes>
  294 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  295 + <integer key="value" value="15"/>
  296 + </userDefinedRuntimeAttribute>
  297 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  298 + </userDefinedRuntimeAttributes>
  299 + </imageView>
  300 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YOS-pR-e5K">
  301 + <rect key="frame" x="0.0" y="43" width="375" height="1"/>
  302 + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
  303 + <constraints>
  304 + <constraint firstAttribute="height" constant="1" id="XMZ-BJ-Nya"/>
  305 + </constraints>
  306 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  307 + <nil key="textColor"/>
  308 + <nil key="highlightedColor"/>
  309 + </label>
  310 + </subviews>
  311 + <constraints>
  312 + <constraint firstItem="oH0-ty-ODc" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="0Ml-yS-EZ4"/>
  313 + <constraint firstItem="pMa-ZG-7NM" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="9i5-Ih-kN3"/>
  314 + <constraint firstItem="oH0-ty-ODc" firstAttribute="width" secondItem="oH0-ty-ODc" secondAttribute="height" multiplier="1:1" id="L8W-NL-DGV"/>
  315 + <constraint firstItem="juK-fe-Y7f" firstAttribute="leading" secondItem="Raa-86-9ng" secondAttribute="leading" constant="15" id="PDU-zE-jvH"/>
  316 + <constraint firstItem="k9H-ER-871" firstAttribute="leading" secondItem="oH0-ty-ODc" secondAttribute="trailing" constant="8" id="PPI-rR-Ewq"/>
  317 + <constraint firstItem="YOS-pR-e5K" firstAttribute="leading" secondItem="Raa-86-9ng" secondAttribute="leading" id="bQa-xi-SKl"/>
  318 + <constraint firstItem="k9H-ER-871" firstAttribute="leading" secondItem="pMa-ZG-7NM" secondAttribute="trailing" constant="8" id="cZi-Wn-11t"/>
  319 + <constraint firstAttribute="trailing" secondItem="YOS-pR-e5K" secondAttribute="trailing" id="ecZ-Tm-SQO"/>
  320 + <constraint firstItem="juK-fe-Y7f" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="hBl-MZ-jo2"/>
  321 + <constraint firstAttribute="bottom" secondItem="YOS-pR-e5K" secondAttribute="bottom" id="k7i-5l-x8C"/>
  322 + <constraint firstItem="pMa-ZG-7NM" firstAttribute="leading" secondItem="juK-fe-Y7f" secondAttribute="trailing" constant="1" id="oSX-xs-mQG"/>
  323 + <constraint firstItem="k9H-ER-871" firstAttribute="centerY" secondItem="Raa-86-9ng" secondAttribute="centerY" id="x0P-SE-6dn"/>
  324 + <constraint firstAttribute="trailing" secondItem="k9H-ER-871" secondAttribute="trailing" constant="15" id="yL7-gI-6Bh"/>
  325 + </constraints>
  326 + </tableViewCellContentView>
  327 + <connections>
  328 + <outlet property="imagePhoto" destination="oH0-ty-ODc" id="iQv-S2-ItJ"/>
  329 + <outlet property="nameLabelRightSpace" destination="cZi-Wn-11t" id="Wls-8Y-XeT"/>
  330 + <outlet property="nameTitleLabel" destination="juK-fe-Y7f" id="eMi-cJ-35W"/>
  331 + <outlet property="namelabel" destination="pMa-ZG-7NM" id="3FP-fk-MfF"/>
  332 + <outlet property="rightArrow" destination="k9H-ER-871" id="pH9-he-yub"/>
  333 + </connections>
  334 + </tableViewCell>
  335 + </prototypes>
  336 + <connections>
  337 + <outlet property="dataSource" destination="zag-ex-Ns7" id="h0H-BT-k7B"/>
  338 + <outlet property="delegate" destination="zag-ex-Ns7" id="7qk-li-aJ4"/>
  339 + </connections>
  340 + </tableView>
  341 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zoh-gF-GRC">
  342 + <rect key="frame" x="0.0" y="599" width="375" height="68"/>
  343 + <subviews>
  344 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O66-bx-WBX">
  345 + <rect key="frame" x="137.5" y="14" width="100" height="40"/>
  346 + <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  347 + <constraints>
  348 + <constraint firstAttribute="height" constant="40" id="bXw-Ag-yrj"/>
  349 + <constraint firstAttribute="width" constant="100" id="gZN-aT-Qe6"/>
  350 + </constraints>
  351 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  352 + <state key="normal" title="退出登录">
  353 + <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
  354 + </state>
  355 + <userDefinedRuntimeAttributes>
  356 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  357 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  358 + <integer key="value" value="5"/>
  359 + </userDefinedRuntimeAttribute>
  360 + </userDefinedRuntimeAttributes>
  361 + <connections>
  362 + <action selector="ExsitBtnClickAction:" destination="zag-ex-Ns7" eventType="touchUpInside" id="cvZ-aV-t5N"/>
  363 + </connections>
  364 + </button>
  365 + </subviews>
  366 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  367 + <constraints>
  368 + <constraint firstItem="O66-bx-WBX" firstAttribute="centerX" secondItem="Zoh-gF-GRC" secondAttribute="centerX" id="Vgd-7C-PCW"/>
  369 + <constraint firstAttribute="height" constant="68" id="c9N-lN-Lbb"/>
  370 + <constraint firstItem="O66-bx-WBX" firstAttribute="centerY" secondItem="Zoh-gF-GRC" secondAttribute="centerY" id="gPv-om-cWX"/>
  371 + </constraints>
  372 + </view>
  373 + </subviews>
  374 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  375 + <constraints>
  376 + <constraint firstAttribute="trailing" secondItem="Zoh-gF-GRC" secondAttribute="trailing" id="28G-9t-FM1"/>
  377 + <constraint firstItem="Zoh-gF-GRC" firstAttribute="top" secondItem="zVa-Jq-aTu" secondAttribute="bottom" id="5df-U2-nj5"/>
  378 + <constraint firstItem="zVa-Jq-aTu" firstAttribute="top" secondItem="UCq-di-1FE" secondAttribute="bottom" id="QDW-Hg-bFk"/>
  379 + <constraint firstAttribute="trailing" secondItem="zVa-Jq-aTu" secondAttribute="trailing" id="gmi-IS-fwG"/>
  380 + <constraint firstItem="6c4-3r-MCg" firstAttribute="top" secondItem="Zoh-gF-GRC" secondAttribute="bottom" id="oJI-li-9v7"/>
  381 + <constraint firstItem="Zoh-gF-GRC" firstAttribute="leading" secondItem="ohI-ec-VmG" secondAttribute="leading" id="w19-By-97X"/>
  382 + <constraint firstItem="zVa-Jq-aTu" firstAttribute="leading" secondItem="ohI-ec-VmG" secondAttribute="leading" id="yos-vH-UlZ"/>
  383 + </constraints>
  384 + </view>
  385 + <navigationItem key="navigationItem" title="个人设置" id="oam-jc-du0">
  386 + <barButtonItem key="rightBarButtonItem" title="修改" id="HPL-MW-tPy">
  387 + <connections>
  388 + <action selector="finishAction:" destination="zag-ex-Ns7" id="vYu-XV-Oz1"/>
  389 + </connections>
  390 + </barButtonItem>
  391 + </navigationItem>
  392 + <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
  393 + <connections>
  394 + <outlet property="loginoutBtn" destination="O66-bx-WBX" id="yBh-45-PmW"/>
  395 + <outlet property="rightBarBtn" destination="HPL-MW-tPy" id="iWY-Ng-b1p"/>
  396 + <outlet property="userSettingTableView" destination="zVa-Jq-aTu" id="62H-Yg-00D"/>
  397 + </connections>
  398 + </viewController>
  399 + <placeholder placeholderIdentifier="IBFirstResponder" id="Kw5-Rz-kOp" userLabel="First Responder" sceneMemberID="firstResponder"/>
  400 + </objects>
  401 + <point key="canvasLocation" x="-774" y="1534"/>
  402 + </scene>
  403 + <!--Register View Controller-->
  404 + <scene sceneID="81Y-IJ-Kye">
  405 + <objects>
  406 + <viewController storyboardIdentifier="RegisterViewControllerVC" id="tCx-JF-YJm" customClass="RegisterViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  407 + <layoutGuides>
  408 + <viewControllerLayoutGuide type="top" id="o4V-sv-MMh"/>
  409 + <viewControllerLayoutGuide type="bottom" id="T9H-hV-piI"/>
  410 + </layoutGuides>
  411 + <view key="view" contentMode="scaleToFill" id="i7O-Dj-x5S" customClass="UIControl">
  412 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  413 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  414 + <subviews>
  415 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="403-Gp-RaZ" customClass="UIControl">
  416 + <rect key="frame" x="0.0" y="20" width="375" height="168"/>
  417 + <subviews>
  418 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8h8-sS-iJ1">
  419 + <rect key="frame" x="138" y="15" width="99" height="99"/>
  420 + <subviews>
  421 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="上传头像" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MjO-1h-doT">
  422 + <rect key="frame" x="15" y="73" width="69.5" height="20.5"/>
  423 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  424 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  425 + <nil key="highlightedColor"/>
  426 + </label>
  427 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="上传头像.png" translatesAutoresizingMaskIntoConstraints="NO" id="1fC-6m-eDG">
  428 + <rect key="frame" x="24.5" y="15" width="50" height="50"/>
  429 + <constraints>
  430 + <constraint firstAttribute="width" secondItem="1fC-6m-eDG" secondAttribute="height" multiplier="1:1" id="nya-81-raI"/>
  431 + <constraint firstAttribute="height" constant="50" id="uJA-jF-kBe"/>
  432 + </constraints>
  433 + </imageView>
  434 + </subviews>
  435 + <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  436 + <gestureRecognizers/>
  437 + <constraints>
  438 + <constraint firstAttribute="width" secondItem="8h8-sS-iJ1" secondAttribute="height" multiplier="1:1" id="1dO-fX-vcH"/>
  439 + <constraint firstItem="1fC-6m-eDG" firstAttribute="top" secondItem="8h8-sS-iJ1" secondAttribute="top" constant="15" id="AZr-hi-5Ga"/>
  440 + <constraint firstAttribute="height" constant="99" id="EKP-qi-zdc"/>
  441 + <constraint firstAttribute="bottom" secondItem="1fC-6m-eDG" secondAttribute="bottom" constant="8" id="HCk-K2-bD9"/>
  442 + <constraint firstItem="MjO-1h-doT" firstAttribute="top" secondItem="1fC-6m-eDG" secondAttribute="bottom" constant="8" id="gDm-wv-uVd"/>
  443 + <constraint firstItem="MjO-1h-doT" firstAttribute="centerX" secondItem="8h8-sS-iJ1" secondAttribute="centerX" id="lEb-LK-Ayk"/>
  444 + <constraint firstItem="1fC-6m-eDG" firstAttribute="centerX" secondItem="8h8-sS-iJ1" secondAttribute="centerX" id="nF9-Di-ODB"/>
  445 + <constraint firstAttribute="bottom" secondItem="MjO-1h-doT" secondAttribute="bottom" constant="16" id="sgC-7Y-LpN"/>
  446 + </constraints>
  447 + <variation key="default">
  448 + <mask key="constraints">
  449 + <exclude reference="HCk-K2-bD9"/>
  450 + <exclude reference="sgC-7Y-LpN"/>
  451 + </mask>
  452 + </variation>
  453 + <connections>
  454 + <outletCollection property="gestureRecognizers" destination="aUf-CI-Y7V" appends="YES" id="6fC-6y-84F"/>
  455 + </connections>
  456 + </view>
  457 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HCl-PT-sCJ">
  458 + <rect key="frame" x="130.5" y="118" width="114.5" height="30"/>
  459 + <subviews>
  460 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="编辑.png" translatesAutoresizingMaskIntoConstraints="NO" id="YJG-jG-Ix8">
  461 + <rect key="frame" x="85.5" y="4.5" width="21" height="21"/>
  462 + <constraints>
  463 + <constraint firstAttribute="width" secondItem="YJG-jG-Ix8" secondAttribute="height" multiplier="1:1" id="nDw-SN-tx9"/>
  464 + <constraint firstAttribute="height" constant="21" id="qhY-Et-icJ"/>
  465 + </constraints>
  466 + </imageView>
  467 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="设置昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gj6-hl-Apj">
  468 + <rect key="frame" x="8" y="5" width="69.5" height="20.5"/>
  469 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  470 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  471 + <nil key="highlightedColor"/>
  472 + </label>
  473 + </subviews>
  474 + <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  475 + <gestureRecognizers/>
  476 + <constraints>
  477 + <constraint firstItem="YJG-jG-Ix8" firstAttribute="centerY" secondItem="HCl-PT-sCJ" secondAttribute="centerY" id="3WR-sv-c0Q"/>
  478 + <constraint firstItem="gj6-hl-Apj" firstAttribute="centerY" secondItem="HCl-PT-sCJ" secondAttribute="centerY" id="Dwp-Af-mLC"/>
  479 + <constraint firstItem="YJG-jG-Ix8" firstAttribute="leading" secondItem="gj6-hl-Apj" secondAttribute="trailing" constant="8" id="Yb9-mh-0fe"/>
  480 + <constraint firstItem="gj6-hl-Apj" firstAttribute="leading" secondItem="HCl-PT-sCJ" secondAttribute="leading" constant="8" id="kI8-65-C8Y"/>
  481 + <constraint firstAttribute="height" constant="30" id="laK-t9-f5W"/>
  482 + <constraint firstAttribute="trailing" secondItem="YJG-jG-Ix8" secondAttribute="trailing" constant="8" id="peS-OS-VwR"/>
  483 + </constraints>
  484 + <connections>
  485 + <outletCollection property="gestureRecognizers" destination="hfJ-NM-sst" appends="YES" id="AW1-A1-TlG"/>
  486 + </connections>
  487 + </view>
  488 + </subviews>
  489 + <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  490 + <constraints>
  491 + <constraint firstItem="8h8-sS-iJ1" firstAttribute="top" secondItem="403-Gp-RaZ" secondAttribute="top" constant="15" id="2WG-wR-ZQY"/>
  492 + <constraint firstItem="HCl-PT-sCJ" firstAttribute="centerX" secondItem="403-Gp-RaZ" secondAttribute="centerX" id="Ctu-87-5Xl"/>
  493 + <constraint firstItem="HCl-PT-sCJ" firstAttribute="top" secondItem="8h8-sS-iJ1" secondAttribute="bottom" constant="4" id="GK6-Qh-dBO"/>
  494 + <constraint firstItem="HCl-PT-sCJ" firstAttribute="top" secondItem="8h8-sS-iJ1" secondAttribute="bottom" constant="8" id="QPI-Mk-b8n"/>
  495 + <constraint firstAttribute="height" constant="168" id="yi6-JV-ObE"/>
  496 + <constraint firstItem="8h8-sS-iJ1" firstAttribute="centerX" secondItem="403-Gp-RaZ" secondAttribute="centerX" id="yrY-zt-nHi"/>
  497 + </constraints>
  498 + <variation key="default">
  499 + <mask key="constraints">
  500 + <exclude reference="QPI-Mk-b8n"/>
  501 + </mask>
  502 + </variation>
  503 + </view>
  504 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xNc-I3-UL6">
  505 + <rect key="frame" x="0.0" y="20" width="375" height="168"/>
  506 + <subviews>
  507 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Cp-hz-9O4">
  508 + <rect key="frame" x="0.0" y="0.0" width="375" height="56"/>
  509 + <subviews>
  510 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o5G-fF-wVL">
  511 + <rect key="frame" x="0.0" y="55" width="375" height="1"/>
  512 + <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  513 + <constraints>
  514 + <constraint firstAttribute="height" constant="1" id="lXH-lx-MSn"/>
  515 + </constraints>
  516 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  517 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  518 + <nil key="highlightedColor"/>
  519 + </label>
  520 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O8o-oN-LAH">
  521 + <rect key="frame" x="8" y="19" width="73" height="18"/>
  522 + <constraints>
  523 + <constraint firstAttribute="width" constant="73" id="bAz-Uv-bTd"/>
  524 + </constraints>
  525 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  526 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  527 + <nil key="highlightedColor"/>
  528 + </label>
  529 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入昵称 " minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="q7i-9n-2oP">
  530 + <rect key="frame" x="89" y="18.5" width="278" height="19"/>
  531 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  532 + <textInputTraits key="textInputTraits" returnKeyType="done"/>
  533 + </textField>
  534 + </subviews>
  535 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  536 + <constraints>
  537 + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="56" id="Ctl-Pt-CPh"/>
  538 + <constraint firstItem="o5G-fF-wVL" firstAttribute="leading" secondItem="1Cp-hz-9O4" secondAttribute="leading" id="RLm-KI-JX6"/>
  539 + <constraint firstAttribute="height" constant="56" id="UfT-BQ-siu"/>
  540 + <constraint firstItem="O8o-oN-LAH" firstAttribute="leading" secondItem="1Cp-hz-9O4" secondAttribute="leading" constant="8" id="XGD-rw-eCb"/>
  541 + <constraint firstAttribute="trailing" secondItem="q7i-9n-2oP" secondAttribute="trailing" constant="8" id="YdO-o5-5VF"/>
  542 + <constraint firstAttribute="bottom" secondItem="o5G-fF-wVL" secondAttribute="bottom" id="f6j-pG-Rae"/>
  543 + <constraint firstItem="q7i-9n-2oP" firstAttribute="centerY" secondItem="1Cp-hz-9O4" secondAttribute="centerY" id="fKp-1x-vbL"/>
  544 + <constraint firstItem="q7i-9n-2oP" firstAttribute="leading" secondItem="O8o-oN-LAH" secondAttribute="trailing" constant="8" id="gEm-U9-rh0"/>
  545 + <constraint firstItem="O8o-oN-LAH" firstAttribute="centerY" secondItem="1Cp-hz-9O4" secondAttribute="centerY" id="t0o-1a-As6"/>
  546 + <constraint firstAttribute="trailing" secondItem="o5G-fF-wVL" secondAttribute="trailing" id="wvf-Cp-571"/>
  547 + </constraints>
  548 + </view>
  549 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="keu-Ke-SrA">
  550 + <rect key="frame" x="0.0" y="56" width="375" height="56"/>
  551 + <subviews>
  552 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hwy-QV-ob8">
  553 + <rect key="frame" x="0.0" y="55" width="375" height="1"/>
  554 + <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  555 + <constraints>
  556 + <constraint firstAttribute="height" constant="1" id="1bP-ob-qdI"/>
  557 + </constraints>
  558 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  559 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  560 + <nil key="highlightedColor"/>
  561 + </label>
  562 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="密码" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xBV-ds-Ub9">
  563 + <rect key="frame" x="8" y="19" width="73" height="18"/>
  564 + <constraints>
  565 + <constraint firstAttribute="width" constant="73" id="SAa-QZ-uJF"/>
  566 + </constraints>
  567 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  568 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  569 + <nil key="highlightedColor"/>
  570 + </label>
  571 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="i3R-4H-gzp">
  572 + <rect key="frame" x="89" y="18.5" width="278" height="19"/>
  573 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  574 + <textInputTraits key="textInputTraits" keyboardType="alphabet" returnKeyType="done"/>
  575 + <connections>
  576 + <outlet property="delegate" destination="tCx-JF-YJm" id="Awg-pn-DAx"/>
  577 + </connections>
  578 + </textField>
  579 + </subviews>
  580 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  581 + <constraints>
  582 + <constraint firstAttribute="bottom" secondItem="Hwy-QV-ob8" secondAttribute="bottom" id="Cf7-PL-DRi"/>
  583 + <constraint firstItem="xBV-ds-Ub9" firstAttribute="leading" secondItem="keu-Ke-SrA" secondAttribute="leading" constant="8" id="F8L-Q3-KCF"/>
  584 + <constraint firstAttribute="trailing" secondItem="i3R-4H-gzp" secondAttribute="trailing" constant="8" id="XnD-Fb-exn"/>
  585 + <constraint firstAttribute="trailing" secondItem="Hwy-QV-ob8" secondAttribute="trailing" id="cUW-Va-u0h"/>
  586 + <constraint firstItem="i3R-4H-gzp" firstAttribute="leading" secondItem="xBV-ds-Ub9" secondAttribute="trailing" constant="8" id="cZ8-V2-oKV"/>
  587 + <constraint firstAttribute="height" constant="56" id="it2-lJ-vPD"/>
  588 + <constraint firstItem="i3R-4H-gzp" firstAttribute="centerY" secondItem="keu-Ke-SrA" secondAttribute="centerY" id="j86-kg-M0P"/>
  589 + <constraint firstItem="xBV-ds-Ub9" firstAttribute="centerY" secondItem="keu-Ke-SrA" secondAttribute="centerY" id="lQ9-Xe-gvX"/>
  590 + <constraint firstItem="Hwy-QV-ob8" firstAttribute="leading" secondItem="keu-Ke-SrA" secondAttribute="leading" id="ws3-Zb-SqH"/>
  591 + </constraints>
  592 + </view>
  593 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cnM-5P-fhN">
  594 + <rect key="frame" x="0.0" y="112" width="375" height="56"/>
  595 + <subviews>
  596 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7YJ-fu-e63">
  597 + <rect key="frame" x="0.0" y="55" width="375" height="1"/>
  598 + <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  599 + <constraints>
  600 + <constraint firstAttribute="height" constant="1" id="Ypb-br-LFg"/>
  601 + </constraints>
  602 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  603 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  604 + <nil key="highlightedColor"/>
  605 + </label>
  606 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="确认密码" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xtu-Lb-h46">
  607 + <rect key="frame" x="8" y="19" width="73" height="18"/>
  608 + <constraints>
  609 + <constraint firstAttribute="width" constant="73" id="A5Z-hk-VeN"/>
  610 + </constraints>
  611 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  612 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  613 + <nil key="highlightedColor"/>
  614 + </label>
  615 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请确认密码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="4Ko-iM-kKY">
  616 + <rect key="frame" x="89" y="18.5" width="278" height="19"/>
  617 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  618 + <textInputTraits key="textInputTraits" keyboardType="alphabet" returnKeyType="done"/>
  619 + <connections>
  620 + <outlet property="delegate" destination="tCx-JF-YJm" id="kVV-m8-92v"/>
  621 + </connections>
  622 + </textField>
  623 + </subviews>
  624 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  625 + <constraints>
  626 + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="56" id="48F-9G-Fge"/>
  627 + <constraint firstAttribute="trailing" secondItem="4Ko-iM-kKY" secondAttribute="trailing" constant="8" id="4fh-zG-9vl"/>
  628 + <constraint firstAttribute="bottom" secondItem="7YJ-fu-e63" secondAttribute="bottom" id="9wD-aU-bMP"/>
  629 + <constraint firstAttribute="trailing" secondItem="7YJ-fu-e63" secondAttribute="trailing" id="EjA-4T-fxE"/>
  630 + <constraint firstItem="xtu-Lb-h46" firstAttribute="centerY" secondItem="cnM-5P-fhN" secondAttribute="centerY" id="HSA-Ou-onT"/>
  631 + <constraint firstItem="4Ko-iM-kKY" firstAttribute="leading" secondItem="xtu-Lb-h46" secondAttribute="trailing" constant="8" id="aYk-72-GQD"/>
  632 + <constraint firstItem="xtu-Lb-h46" firstAttribute="leading" secondItem="cnM-5P-fhN" secondAttribute="leading" constant="8" id="kbK-3X-65q"/>
  633 + <constraint firstItem="7YJ-fu-e63" firstAttribute="leading" secondItem="cnM-5P-fhN" secondAttribute="leading" id="rhc-YS-Jug"/>
  634 + <constraint firstAttribute="height" constant="56" id="ucM-EP-0Bc"/>
  635 + <constraint firstItem="4Ko-iM-kKY" firstAttribute="centerY" secondItem="cnM-5P-fhN" secondAttribute="centerY" id="wja-1l-Xos"/>
  636 + </constraints>
  637 + </view>
  638 + </subviews>
  639 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  640 + <constraints>
  641 + <constraint firstItem="keu-Ke-SrA" firstAttribute="top" secondItem="1Cp-hz-9O4" secondAttribute="bottom" id="Pee-iB-XUj"/>
  642 + <constraint firstItem="cnM-5P-fhN" firstAttribute="leading" secondItem="xNc-I3-UL6" secondAttribute="leading" id="R9s-jK-AYa"/>
  643 + <constraint firstAttribute="trailing" secondItem="1Cp-hz-9O4" secondAttribute="trailing" id="Rib-CM-97d"/>
  644 + <constraint firstAttribute="height" constant="168" id="SWN-6C-I6R"/>
  645 + <constraint firstAttribute="trailing" secondItem="cnM-5P-fhN" secondAttribute="trailing" id="U6d-yM-lM8"/>
  646 + <constraint firstItem="1Cp-hz-9O4" firstAttribute="top" secondItem="xNc-I3-UL6" secondAttribute="top" id="elW-dc-FcY"/>
  647 + <constraint firstItem="keu-Ke-SrA" firstAttribute="leading" secondItem="xNc-I3-UL6" secondAttribute="leading" id="gcJ-t2-OJH"/>
  648 + <constraint firstItem="cnM-5P-fhN" firstAttribute="top" secondItem="keu-Ke-SrA" secondAttribute="bottom" id="hnn-cd-Hsj"/>
  649 + <constraint firstAttribute="bottom" secondItem="cnM-5P-fhN" secondAttribute="bottom" id="k46-eB-0tn"/>
  650 + <constraint firstAttribute="trailing" secondItem="keu-Ke-SrA" secondAttribute="trailing" id="lAV-sR-cpV"/>
  651 + <constraint firstItem="1Cp-hz-9O4" firstAttribute="leading" secondItem="xNc-I3-UL6" secondAttribute="leading" id="o9e-5H-Do7"/>
  652 + </constraints>
  653 + </view>
  654 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rSF-LZ-Bnl">
  655 + <rect key="frame" x="0.0" y="188" width="375" height="112"/>
  656 + <subviews>
  657 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vkP-pb-ydp">
  658 + <rect key="frame" x="0.0" y="0.0" width="375" height="56"/>
  659 + <subviews>
  660 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MEf-rE-fBh">
  661 + <rect key="frame" x="0.0" y="55" width="375" height="1"/>
  662 + <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  663 + <constraints>
  664 + <constraint firstAttribute="height" constant="1" id="cle-RJ-6tm"/>
  665 + </constraints>
  666 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  667 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  668 + <nil key="highlightedColor"/>
  669 + </label>
  670 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="+86" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ae8-Wz-CYH">
  671 + <rect key="frame" x="8" y="19" width="73" height="18"/>
  672 + <constraints>
  673 + <constraint firstAttribute="width" constant="73" id="gFs-fM-1Vg"/>
  674 + </constraints>
  675 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  676 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  677 + <nil key="highlightedColor"/>
  678 + </label>
  679 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入手机号码 " minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="nVJ-81-bXY">
  680 + <rect key="frame" x="89" y="18.5" width="123.5" height="19"/>
  681 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  682 + <textInputTraits key="textInputTraits" keyboardType="numberPad" returnKeyType="done"/>
  683 + <connections>
  684 + <outlet property="delegate" destination="tCx-JF-YJm" id="xWv-of-0Wb"/>
  685 + </connections>
  686 + </textField>
  687 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hwv-0n-dsf">
  688 + <rect key="frame" x="274" y="13" width="93" height="30"/>
  689 + <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  690 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  691 + <state key="normal" title=" 发送验证码 ">
  692 + <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  693 + </state>
  694 + <userDefinedRuntimeAttributes>
  695 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  696 + <integer key="value" value="15"/>
  697 + </userDefinedRuntimeAttribute>
  698 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  699 + </userDefinedRuntimeAttributes>
  700 + <connections>
  701 + <action selector="sendVerificationCodeClickAction:" destination="tCx-JF-YJm" eventType="touchUpInside" id="Agj-2K-dbp"/>
  702 + </connections>
  703 + </button>
  704 + </subviews>
  705 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  706 + <constraints>
  707 + <constraint firstItem="MEf-rE-fBh" firstAttribute="leading" secondItem="vkP-pb-ydp" secondAttribute="leading" id="2A5-sj-MgA"/>
  708 + <constraint firstItem="ae8-Wz-CYH" firstAttribute="centerY" secondItem="vkP-pb-ydp" secondAttribute="centerY" id="Dfi-Pp-DOa"/>
  709 + <constraint firstItem="nVJ-81-bXY" firstAttribute="centerY" secondItem="vkP-pb-ydp" secondAttribute="centerY" id="Q9B-BF-wWO"/>
  710 + <constraint firstAttribute="height" constant="56" id="d5e-TR-xj8"/>
  711 + <constraint firstItem="ae8-Wz-CYH" firstAttribute="leading" secondItem="vkP-pb-ydp" secondAttribute="leading" constant="8" id="fAZ-jT-eye"/>
  712 + <constraint firstAttribute="trailing" secondItem="hwv-0n-dsf" secondAttribute="trailing" constant="8" id="jCe-9b-HiL"/>
  713 + <constraint firstItem="hwv-0n-dsf" firstAttribute="centerY" secondItem="vkP-pb-ydp" secondAttribute="centerY" id="mgL-oA-0oG"/>
  714 + <constraint firstAttribute="trailing" secondItem="MEf-rE-fBh" secondAttribute="trailing" id="nEG-6h-NXY"/>
  715 + <constraint firstAttribute="bottom" secondItem="MEf-rE-fBh" secondAttribute="bottom" id="y9Q-1X-3wy"/>
  716 + <constraint firstItem="nVJ-81-bXY" firstAttribute="leading" secondItem="ae8-Wz-CYH" secondAttribute="trailing" constant="8" id="zxS-jB-eC8"/>
  717 + </constraints>
  718 + </view>
  719 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IlU-p3-aLY">
  720 + <rect key="frame" x="0.0" y="56" width="375" height="56"/>
  721 + <subviews>
  722 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SOB-G4-Kln">
  723 + <rect key="frame" x="0.0" y="55" width="375" height="1"/>
  724 + <color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  725 + <constraints>
  726 + <constraint firstAttribute="height" constant="1" id="3yq-4f-vDW"/>
  727 + </constraints>
  728 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  729 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  730 + <nil key="highlightedColor"/>
  731 + </label>
  732 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="验证码" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KmI-sz-jsA">
  733 + <rect key="frame" x="8" y="19" width="73" height="18"/>
  734 + <constraints>
  735 + <constraint firstAttribute="width" constant="73" id="ngh-2s-quJ"/>
  736 + </constraints>
  737 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  738 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  739 + <nil key="highlightedColor"/>
  740 + </label>
  741 + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入验证码" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="GHW-G9-uIT">
  742 + <rect key="frame" x="89" y="18.5" width="278" height="19"/>
  743 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  744 + <textInputTraits key="textInputTraits" keyboardType="numberPad" returnKeyType="done"/>
  745 + <connections>
  746 + <outlet property="delegate" destination="tCx-JF-YJm" id="deX-i0-lZv"/>
  747 + </connections>
  748 + </textField>
  749 + </subviews>
  750 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  751 + <constraints>
  752 + <constraint firstItem="SOB-G4-Kln" firstAttribute="leading" secondItem="IlU-p3-aLY" secondAttribute="leading" id="Bpm-Op-035"/>
  753 + <constraint firstAttribute="bottom" secondItem="SOB-G4-Kln" secondAttribute="bottom" id="KjW-FI-dyR"/>
  754 + <constraint firstItem="GHW-G9-uIT" firstAttribute="leading" secondItem="KmI-sz-jsA" secondAttribute="trailing" constant="8" id="NWt-4e-GXU"/>
  755 + <constraint firstAttribute="height" constant="56" id="QZA-UG-aso"/>
  756 + <constraint firstItem="GHW-G9-uIT" firstAttribute="centerY" secondItem="IlU-p3-aLY" secondAttribute="centerY" id="SGD-Xp-h5t"/>
  757 + <constraint firstAttribute="trailing" secondItem="SOB-G4-Kln" secondAttribute="trailing" id="ZSY-bN-JsM"/>
  758 + <constraint firstItem="KmI-sz-jsA" firstAttribute="centerY" secondItem="IlU-p3-aLY" secondAttribute="centerY" id="dtC-at-TCi"/>
  759 + <constraint firstItem="KmI-sz-jsA" firstAttribute="leading" secondItem="IlU-p3-aLY" secondAttribute="leading" constant="8" id="e2w-KQ-6sS"/>
  760 + <constraint firstAttribute="trailing" secondItem="GHW-G9-uIT" secondAttribute="trailing" constant="8" id="y7F-Ik-Roe"/>
  761 + </constraints>
  762 + </view>
  763 + </subviews>
  764 + <color key="backgroundColor" red="1" green="0.42445692709999999" blue="0.35047448450000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  765 + <constraints>
  766 + <constraint firstAttribute="trailing" secondItem="IlU-p3-aLY" secondAttribute="trailing" id="4ga-Jf-7Ee"/>
  767 + <constraint firstAttribute="height" constant="112" id="7NK-ZN-nyz"/>
  768 + <constraint firstItem="vkP-pb-ydp" firstAttribute="leading" secondItem="rSF-LZ-Bnl" secondAttribute="leading" id="84d-gX-XI3"/>
  769 + <constraint firstItem="IlU-p3-aLY" firstAttribute="top" secondItem="vkP-pb-ydp" secondAttribute="bottom" id="AEt-bb-mHP"/>
  770 + <constraint firstItem="IlU-p3-aLY" firstAttribute="leading" secondItem="rSF-LZ-Bnl" secondAttribute="leading" id="OBc-tM-vGz"/>
  771 + <constraint firstItem="vkP-pb-ydp" firstAttribute="top" secondItem="rSF-LZ-Bnl" secondAttribute="top" id="Ppf-3Y-BG7"/>
  772 + <constraint firstAttribute="trailing" secondItem="vkP-pb-ydp" secondAttribute="trailing" id="Ygd-yH-f2B"/>
  773 + <constraint firstAttribute="bottom" secondItem="IlU-p3-aLY" secondAttribute="bottom" id="cjh-Sk-yPh"/>
  774 + </constraints>
  775 + </view>
  776 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="R1Y-16-Th7">
  777 + <rect key="frame" x="62.5" y="400" width="250" height="40"/>
  778 + <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  779 + <constraints>
  780 + <constraint firstAttribute="height" constant="40" id="Kvn-w3-Juc"/>
  781 + </constraints>
  782 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  783 + <state key="normal" title="注册">
  784 + <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  785 + </state>
  786 + <userDefinedRuntimeAttributes>
  787 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  788 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  789 + <integer key="value" value="20"/>
  790 + </userDefinedRuntimeAttribute>
  791 + </userDefinedRuntimeAttributes>
  792 + <connections>
  793 + <action selector="registerBtnAction:" destination="tCx-JF-YJm" eventType="touchUpInside" id="pSt-yE-eTL"/>
  794 + </connections>
  795 + </button>
  796 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DJH-vy-tj1">
  797 + <rect key="frame" x="325" y="315" width="35" height="30"/>
  798 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  799 + <state key="normal" title="登 录">
  800 + <color key="titleColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  801 + </state>
  802 + <connections>
  803 + <action selector="loginBtnClickAction:" destination="tCx-JF-YJm" eventType="touchUpInside" id="KlD-u3-W3P"/>
  804 + </connections>
  805 + </button>
  806 + </subviews>
  807 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  808 + <gestureRecognizers/>
  809 + <constraints>
  810 + <constraint firstItem="R1Y-16-Th7" firstAttribute="top" secondItem="rSF-LZ-Bnl" secondAttribute="bottom" constant="100" id="2qf-Db-EkQ"/>
  811 + <constraint firstItem="403-Gp-RaZ" firstAttribute="top" secondItem="o4V-sv-MMh" secondAttribute="bottom" id="3fC-Wg-KMc"/>
  812 + <constraint firstItem="xNc-I3-UL6" firstAttribute="top" secondItem="o4V-sv-MMh" secondAttribute="bottom" id="4fl-gQ-WZe"/>
  813 + <constraint firstAttribute="trailing" secondItem="rSF-LZ-Bnl" secondAttribute="trailing" id="9jK-fu-KKs"/>
  814 + <constraint firstItem="rSF-LZ-Bnl" firstAttribute="leading" secondItem="i7O-Dj-x5S" secondAttribute="leading" id="OoN-NJ-ZEk"/>
  815 + <constraint firstAttribute="trailing" secondItem="DJH-vy-tj1" secondAttribute="trailing" constant="15" id="ZYR-Wd-fZz"/>
  816 + <constraint firstAttribute="trailing" secondItem="xNc-I3-UL6" secondAttribute="trailing" id="eo3-7l-3Ju"/>
  817 + <constraint firstAttribute="trailing" secondItem="403-Gp-RaZ" secondAttribute="trailing" id="fOh-GD-xiW"/>
  818 + <constraint firstItem="R1Y-16-Th7" firstAttribute="centerX" secondItem="i7O-Dj-x5S" secondAttribute="centerX" id="kcC-PE-Lwx"/>
  819 + <constraint firstItem="DJH-vy-tj1" firstAttribute="top" secondItem="rSF-LZ-Bnl" secondAttribute="bottom" constant="15" id="lBh-92-VTX"/>
  820 + <constraint firstItem="R1Y-16-Th7" firstAttribute="width" secondItem="i7O-Dj-x5S" secondAttribute="width" multiplier="2:3" id="pCE-Ek-rOS"/>
  821 + <constraint firstItem="403-Gp-RaZ" firstAttribute="leading" secondItem="i7O-Dj-x5S" secondAttribute="leading" id="stz-Fg-4Iv"/>
  822 + <constraint firstItem="rSF-LZ-Bnl" firstAttribute="top" secondItem="xNc-I3-UL6" secondAttribute="bottom" id="wPx-ce-6he"/>
  823 + <constraint firstItem="xNc-I3-UL6" firstAttribute="leading" secondItem="i7O-Dj-x5S" secondAttribute="leading" id="x7N-Bs-2t1"/>
  824 + </constraints>
  825 + <connections>
  826 + <outletCollection property="gestureRecognizers" destination="ZEf-mm-u9e" appends="YES" id="Gmm-Kb-eQb"/>
  827 + </connections>
  828 + </view>
  829 + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
  830 + <size key="freeformSize" width="375" height="667"/>
  831 + <connections>
  832 + <outlet property="confirmPasswordTextField" destination="4Ko-iM-kKY" id="Mwh-Ik-lD3"/>
  833 + <outlet property="inputVerificationCode" destination="GHW-G9-uIT" id="W2X-QF-3qb"/>
  834 + <outlet property="nickNameLabel" destination="gj6-hl-Apj" id="chL-uV-xBk"/>
  835 + <outlet property="nikeNameTextFiled" destination="q7i-9n-2oP" id="DME-KX-Y6Y"/>
  836 + <outlet property="passwordTextField" destination="i3R-4H-gzp" id="qTl-bd-eRR"/>
  837 + <outlet property="phoneNumber" destination="nVJ-81-bXY" id="24J-2q-PGO"/>
  838 + <outlet property="registerBtn" destination="R1Y-16-Th7" id="ccz-JJ-Zfd"/>
  839 + <outlet property="sendPhotoImage" destination="1fC-6m-eDG" id="xoB-Hr-23D"/>
  840 + <outlet property="sendVerificationCode" destination="hwv-0n-dsf" id="5zD-Jx-K5j"/>
  841 + </connections>
  842 + </viewController>
  843 + <placeholder placeholderIdentifier="IBFirstResponder" id="Fzg-cR-i34" userLabel="First Responder" sceneMemberID="firstResponder"/>
  844 + <tapGestureRecognizer id="hfJ-NM-sst">
  845 + <connections>
  846 + <action selector="nickNameSetTapAction:" destination="tCx-JF-YJm" id="OeS-RA-5JC"/>
  847 + </connections>
  848 + </tapGestureRecognizer>
  849 + <tapGestureRecognizer id="aUf-CI-Y7V">
  850 + <connections>
  851 + <action selector="sendPhotoImageTapAction:" destination="tCx-JF-YJm" id="eAT-uh-KLY"/>
  852 + </connections>
  853 + </tapGestureRecognizer>
  854 + <tapGestureRecognizer id="ZEf-mm-u9e">
  855 + <connections>
  856 + <action selector="touchAction:" destination="tCx-JF-YJm" id="1ww-Nt-fgk"/>
  857 + </connections>
  858 + </tapGestureRecognizer>
  859 + </objects>
  860 + <point key="canvasLocation" x="-2161" y="1534"/>
  861 + </scene>
  862 + <!--直播列表-->
  863 + <scene sceneID="XKW-WN-QdT">
  864 + <objects>
  865 + <viewController storyboardIdentifier="LiveRoomsViewController" id="TRk-zG-DtG" customClass="LiveRoomsViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  866 + <layoutGuides>
  867 + <viewControllerLayoutGuide type="top" id="F8t-oe-SiB"/>
  868 + <viewControllerLayoutGuide type="bottom" id="uxW-te-E5M"/>
  869 + </layoutGuides>
  870 + <view key="view" contentMode="scaleToFill" id="872-q1-Iaa">
  871 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  872 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  873 + <subviews>
  874 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zXz-qM-Acq">
  875 + <rect key="frame" x="0.0" y="64" width="375" height="170"/>
  876 + <subviews>
  877 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hv8-Qa-aBF">
  878 + <rect key="frame" x="187" y="0.0" width="1" height="170"/>
  879 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
  880 + <constraints>
  881 + <constraint firstAttribute="width" constant="1" id="dza-AE-Lso"/>
  882 + </constraints>
  883 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  884 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  885 + <nil key="highlightedColor"/>
  886 + </label>
  887 + <imageView contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="0Gk-gW-ew3">
  888 + <rect key="frame" x="147.5" y="8" width="80" height="80"/>
  889 + <gestureRecognizers/>
  890 + <constraints>
  891 + <constraint firstAttribute="width" constant="80" id="lWg-Fx-hsx"/>
  892 + <constraint firstAttribute="height" constant="80" id="wOV-ke-Q1B"/>
  893 + </constraints>
  894 + <userDefinedRuntimeAttributes>
  895 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  896 + <integer key="value" value="40"/>
  897 + </userDefinedRuntimeAttribute>
  898 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  899 + </userDefinedRuntimeAttributes>
  900 + </imageView>
  901 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学事通" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3TP-D6-7hD">
  902 + <rect key="frame" x="0.0" y="100" width="375" height="21"/>
  903 + <constraints>
  904 + <constraint firstAttribute="height" constant="21" id="30Q-8E-jJ7"/>
  905 + </constraints>
  906 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  907 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  908 + <nil key="highlightedColor"/>
  909 + </label>
  910 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CtS-7Q-u1u">
  911 + <rect key="frame" x="0.0" y="96" width="375" height="25"/>
  912 + <constraints>
  913 + <constraint firstAttribute="height" constant="25" id="wYi-pE-S5H"/>
  914 + </constraints>
  915 + <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="15"/>
  916 + <inset key="titleEdgeInsets" minX="-120" minY="0.0" maxX="0.0" maxY="0.0"/>
  917 + <inset key="imageEdgeInsets" minX="95" minY="0.0" maxX="0.0" maxY="0.0"/>
  918 + <state key="normal">
  919 + <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  920 + </state>
  921 + </button>
  922 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="账号:18625774807" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZEw-g1-Yma">
  923 + <rect key="frame" x="0.0" y="129" width="375" height="21"/>
  924 + <constraints>
  925 + <constraint firstAttribute="height" constant="21" id="pzG-gH-nk5"/>
  926 + </constraints>
  927 + <fontDescription key="fontDescription" type="system" pointSize="13"/>
  928 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  929 + <nil key="highlightedColor"/>
  930 + </label>
  931 + <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="编辑.png" translatesAutoresizingMaskIntoConstraints="NO" id="Prt-1z-bT6">
  932 + <rect key="frame" x="214" y="100" width="20" height="20"/>
  933 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  934 + </imageView>
  935 + </subviews>
  936 + <color key="backgroundColor" red="0.1058823529" green="0.82745098039999998" blue="0.74509803919999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  937 + <constraints>
  938 + <constraint firstItem="CtS-7Q-u1u" firstAttribute="top" secondItem="0Gk-gW-ew3" secondAttribute="bottom" constant="8" id="4J5-K4-e0H"/>
  939 + <constraint firstItem="0Gk-gW-ew3" firstAttribute="centerX" secondItem="zXz-qM-Acq" secondAttribute="centerX" id="52h-CK-9Q4"/>
  940 + <constraint firstItem="hv8-Qa-aBF" firstAttribute="top" secondItem="zXz-qM-Acq" secondAttribute="top" id="AGC-wU-6In"/>
  941 + <constraint firstAttribute="height" constant="170" id="BQo-Kp-CAZ"/>
  942 + <constraint firstItem="ZEw-g1-Yma" firstAttribute="leading" secondItem="zXz-qM-Acq" secondAttribute="leading" id="Ckg-Dh-49u"/>
  943 + <constraint firstItem="CtS-7Q-u1u" firstAttribute="leading" secondItem="zXz-qM-Acq" secondAttribute="leading" id="G2O-76-hLf"/>
  944 + <constraint firstItem="hv8-Qa-aBF" firstAttribute="centerY" secondItem="zXz-qM-Acq" secondAttribute="centerY" id="KHQ-Nn-pOq"/>
  945 + <constraint firstAttribute="bottom" secondItem="hv8-Qa-aBF" secondAttribute="bottom" id="RFM-s7-4TJ"/>
  946 + <constraint firstAttribute="trailing" secondItem="CtS-7Q-u1u" secondAttribute="trailing" id="RHy-V2-7Zr"/>
  947 + <constraint firstItem="ZEw-g1-Yma" firstAttribute="top" secondItem="CtS-7Q-u1u" secondAttribute="bottom" constant="8" id="RIr-e5-c0g"/>
  948 + <constraint firstItem="3TP-D6-7hD" firstAttribute="leading" secondItem="zXz-qM-Acq" secondAttribute="leading" id="aR3-jf-TMa"/>
  949 + <constraint firstAttribute="trailing" secondItem="ZEw-g1-Yma" secondAttribute="trailing" id="bJ0-BI-Qv3"/>
  950 + <constraint firstItem="3TP-D6-7hD" firstAttribute="top" secondItem="0Gk-gW-ew3" secondAttribute="bottom" constant="12" id="fTq-1T-IoT"/>
  951 + <constraint firstAttribute="trailing" secondItem="3TP-D6-7hD" secondAttribute="trailing" id="mzr-Lx-WwS"/>
  952 + <constraint firstItem="CtS-7Q-u1u" firstAttribute="centerX" secondItem="zXz-qM-Acq" secondAttribute="centerX" id="qqe-eT-yC5"/>
  953 + <constraint firstItem="hv8-Qa-aBF" firstAttribute="centerX" secondItem="zXz-qM-Acq" secondAttribute="centerX" id="vZf-z2-TYe"/>
  954 + <constraint firstItem="0Gk-gW-ew3" firstAttribute="top" secondItem="zXz-qM-Acq" secondAttribute="top" constant="8" id="zMS-XP-xLS"/>
  955 + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="170" id="zf1-5x-wDm"/>
  956 + </constraints>
  957 + </view>
  958 + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="MSW-uR-PzG">
  959 + <rect key="frame" x="0.0" y="234" width="375" height="50"/>
  960 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  961 + <constraints>
  962 + <constraint firstAttribute="height" constant="50" id="6Lg-sB-5MW"/>
  963 + </constraints>
  964 + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="RUP-s6-4QP">
  965 + <size key="itemSize" width="50" height="50"/>
  966 + <size key="headerReferenceSize" width="0.0" height="0.0"/>
  967 + <size key="footerReferenceSize" width="0.0" height="0.0"/>
  968 + <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
  969 + </collectionViewFlowLayout>
  970 + <cells>
  971 + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="selectCell" id="ByM-Yz-laB" customClass="selectTypeCell" customModule="YouerLiveVideo" customModuleProvider="target">
  972 + <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
  973 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  974 + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
  975 + <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
  976 + <autoresizingMask key="autoresizingMask"/>
  977 + <subviews>
  978 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cIR-al-lVF">
  979 + <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
  980 + <fontDescription key="fontDescription" type="system" pointSize="12"/>
  981 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  982 + <nil key="highlightedColor"/>
  983 + </label>
  984 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uda-An-pcw">
  985 + <rect key="frame" x="49" y="0.0" width="1" height="50"/>
  986 + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
  987 + <constraints>
  988 + <constraint firstAttribute="width" constant="1" id="nDj-Xd-cpM"/>
  989 + </constraints>
  990 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  991 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  992 + <nil key="highlightedColor"/>
  993 + </label>
  994 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0hQ-IS-VH8">
  995 + <rect key="frame" x="0.0" y="49" width="50" height="1"/>
  996 + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
  997 + <constraints>
  998 + <constraint firstAttribute="height" constant="1" id="YZN-9q-eax"/>
  999 + </constraints>
  1000 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  1001 + <nil key="textColor"/>
  1002 + <nil key="highlightedColor"/>
  1003 + </label>
  1004 + </subviews>
  1005 + </view>
  1006 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
  1007 + <constraints>
  1008 + <constraint firstItem="Uda-An-pcw" firstAttribute="top" secondItem="ByM-Yz-laB" secondAttribute="top" id="2PS-Ij-cah"/>
  1009 + <constraint firstAttribute="bottom" secondItem="cIR-al-lVF" secondAttribute="bottom" id="3Ze-wI-7u6"/>
  1010 + <constraint firstItem="cIR-al-lVF" firstAttribute="leading" secondItem="ByM-Yz-laB" secondAttribute="leading" id="4Pw-3q-ycf"/>
  1011 + <constraint firstAttribute="trailing" secondItem="Uda-An-pcw" secondAttribute="trailing" id="56p-FD-l9M"/>
  1012 + <constraint firstAttribute="bottom" secondItem="0hQ-IS-VH8" secondAttribute="bottom" id="9lr-L2-yEQ"/>
  1013 + <constraint firstItem="0hQ-IS-VH8" firstAttribute="leading" secondItem="ByM-Yz-laB" secondAttribute="leading" id="Bj0-Ra-FS3"/>
  1014 + <constraint firstAttribute="trailing" secondItem="0hQ-IS-VH8" secondAttribute="trailing" id="E6o-Ec-dYB"/>
  1015 + <constraint firstItem="cIR-al-lVF" firstAttribute="top" secondItem="ByM-Yz-laB" secondAttribute="top" id="WJW-7b-hNu"/>
  1016 + <constraint firstAttribute="trailing" secondItem="cIR-al-lVF" secondAttribute="trailing" id="ijN-E7-xI0"/>
  1017 + <constraint firstAttribute="bottom" secondItem="Uda-An-pcw" secondAttribute="bottom" id="zLp-XV-NSL"/>
  1018 + </constraints>
  1019 + <connections>
  1020 + <outlet property="lineLabel" destination="Uda-An-pcw" id="i0M-0I-yGC"/>
  1021 + <outlet property="titleLabel" destination="cIR-al-lVF" id="srt-YU-2L0"/>
  1022 + </connections>
  1023 + </collectionViewCell>
  1024 + </cells>
  1025 + <connections>
  1026 + <outlet property="dataSource" destination="TRk-zG-DtG" id="zGC-ba-Oek"/>
  1027 + <outlet property="delegate" destination="TRk-zG-DtG" id="F9X-CU-Z6M"/>
  1028 + </connections>
  1029 + </collectionView>
  1030 + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="nMl-1w-hhg">
  1031 + <rect key="frame" x="0.0" y="284" width="375" height="383"/>
  1032 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1033 + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="1" minimumInteritemSpacing="1" id="6WK-c9-xsa">
  1034 + <size key="itemSize" width="171" height="276"/>
  1035 + <size key="headerReferenceSize" width="0.0" height="0.0"/>
  1036 + <size key="footerReferenceSize" width="0.0" height="0.0"/>
  1037 + <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
  1038 + </collectionViewFlowLayout>
  1039 + <cells>
  1040 + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="roomListCell" id="znO-HR-pdB" customClass="roomLiveDetailCell" customModule="YouerLiveVideo" customModuleProvider="target">
  1041 + <rect key="frame" x="0.0" y="0.0" width="171" height="276"/>
  1042 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  1043 + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
  1044 + <rect key="frame" x="0.0" y="0.0" width="171" height="276"/>
  1045 + <autoresizingMask key="autoresizingMask"/>
  1046 + <subviews>
  1047 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1eI-eh-N3I">
  1048 + <rect key="frame" x="0.0" y="0.0" width="171" height="246"/>
  1049 + <subviews>
  1050 + <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="psb.jpg" translatesAutoresizingMaskIntoConstraints="NO" id="XcQ-PZ-5vi">
  1051 + <rect key="frame" x="0.0" y="0.0" width="171" height="246"/>
  1052 + </imageView>
  1053 + <label opaque="NO" userInteractionEnabled="NO" alpha="0.80000001192092896" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="顺治直播" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5bV-Q9-QBq">
  1054 + <rect key="frame" x="0.0" y="226" width="171" height="20"/>
  1055 + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
  1056 + <constraints>
  1057 + <constraint firstAttribute="height" constant="20" id="v5R-gm-4ZU"/>
  1058 + </constraints>
  1059 + <fontDescription key="fontDescription" type="system" pointSize="14"/>
  1060 + <nil key="highlightedColor"/>
  1061 + </label>
  1062 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="未通过" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MwN-q1-p8I">
  1063 + <rect key="frame" x="8" y="8" width="45" height="20"/>
  1064 + <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1065 + <constraints>
  1066 + <constraint firstAttribute="height" constant="20" id="ZNb-9o-7dy"/>
  1067 + <constraint firstAttribute="width" constant="45" id="zE3-2c-Lnq"/>
  1068 + </constraints>
  1069 + <fontDescription key="fontDescription" type="system" pointSize="12"/>
  1070 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1071 + <nil key="highlightedColor"/>
  1072 + <userDefinedRuntimeAttributes>
  1073 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  1074 + <integer key="value" value="10"/>
  1075 + </userDefinedRuntimeAttribute>
  1076 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  1077 + </userDefinedRuntimeAttributes>
  1078 + </label>
  1079 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="直播历史1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3kG-Uk-Ebo">
  1080 + <rect key="frame" x="108" y="8" width="55" height="20"/>
  1081 + <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1082 + <constraints>
  1083 + <constraint firstAttribute="height" constant="20" id="7gR-Ze-JOx"/>
  1084 + </constraints>
  1085 + <fontDescription key="fontDescription" type="system" pointSize="12"/>
  1086 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1087 + <nil key="highlightedColor"/>
  1088 + <userDefinedRuntimeAttributes>
  1089 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  1090 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  1091 + <integer key="value" value="10"/>
  1092 + </userDefinedRuntimeAttribute>
  1093 + </userDefinedRuntimeAttributes>
  1094 + </label>
  1095 + </subviews>
  1096 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1097 + <constraints>
  1098 + <constraint firstAttribute="trailing" secondItem="5bV-Q9-QBq" secondAttribute="trailing" id="B2F-4V-Wzi"/>
  1099 + <constraint firstAttribute="trailing" secondItem="3kG-Uk-Ebo" secondAttribute="trailing" constant="8" id="EMb-1i-r9c"/>
  1100 + <constraint firstAttribute="trailing" secondItem="XcQ-PZ-5vi" secondAttribute="trailing" id="Iro-Ie-Mzf"/>
  1101 + <constraint firstItem="MwN-q1-p8I" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="top" constant="8" id="Njs-r0-U3F"/>
  1102 + <constraint firstItem="MwN-q1-p8I" firstAttribute="leading" secondItem="1eI-eh-N3I" secondAttribute="leading" constant="8" id="XbX-F5-TSb"/>
  1103 + <constraint firstAttribute="bottom" secondItem="XcQ-PZ-5vi" secondAttribute="bottom" id="bEn-qE-mTE"/>
  1104 + <constraint firstItem="XcQ-PZ-5vi" firstAttribute="leading" secondItem="1eI-eh-N3I" secondAttribute="leading" id="kSr-BD-Q7c"/>
  1105 + <constraint firstAttribute="bottom" secondItem="5bV-Q9-QBq" secondAttribute="bottom" id="pTo-Um-VFC"/>
  1106 + <constraint firstItem="5bV-Q9-QBq" firstAttribute="leading" secondItem="1eI-eh-N3I" secondAttribute="leading" id="qP1-Fu-lHn"/>
  1107 + <constraint firstItem="XcQ-PZ-5vi" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="top" id="v3T-sO-sWi"/>
  1108 + <constraint firstItem="3kG-Uk-Ebo" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="top" constant="8" id="xhC-S7-ph6"/>
  1109 + </constraints>
  1110 + </view>
  1111 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zf5-sW-pq6">
  1112 + <rect key="frame" x="0.0" y="246" width="171" height="30"/>
  1113 + <subviews>
  1114 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100000" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DN7-Bl-0sn">
  1115 + <rect key="frame" x="31" y="4.5" width="30.5" height="21"/>
  1116 + <constraints>
  1117 + <constraint firstAttribute="height" constant="21" id="dPs-Vr-J5F"/>
  1118 + </constraints>
  1119 + <fontDescription key="fontDescription" type="system" pointSize="8"/>
  1120 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  1121 + <nil key="highlightedColor"/>
  1122 + </label>
  1123 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2016-11-10 10:58:50" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FLt-yg-yap">
  1124 + <rect key="frame" x="80.5" y="10" width="82.5" height="10"/>
  1125 + <fontDescription key="fontDescription" type="system" pointSize="8"/>
  1126 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  1127 + <nil key="highlightedColor"/>
  1128 + </label>
  1129 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="观看.png" translatesAutoresizingMaskIntoConstraints="NO" id="zAE-Rj-l2k">
  1130 + <rect key="frame" x="8" y="7.5" width="20" height="15"/>
  1131 + <constraints>
  1132 + <constraint firstAttribute="width" constant="20" id="OeC-BX-gj2"/>
  1133 + <constraint firstAttribute="height" constant="15" id="sNv-Mf-wqS"/>
  1134 + </constraints>
  1135 + </imageView>
  1136 + </subviews>
  1137 + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
  1138 + <constraints>
  1139 + <constraint firstItem="zAE-Rj-l2k" firstAttribute="leading" secondItem="zf5-sW-pq6" secondAttribute="leading" constant="8" id="4I4-Ad-LFC"/>
  1140 + <constraint firstItem="zAE-Rj-l2k" firstAttribute="centerY" secondItem="zf5-sW-pq6" secondAttribute="centerY" id="4oe-14-f8F"/>
  1141 + <constraint firstItem="FLt-yg-yap" firstAttribute="centerY" secondItem="zf5-sW-pq6" secondAttribute="centerY" id="8b4-g2-wg6"/>
  1142 + <constraint firstAttribute="trailing" secondItem="FLt-yg-yap" secondAttribute="trailing" constant="8" id="9lh-yF-apc"/>
  1143 + <constraint firstAttribute="height" constant="30" id="MbG-VU-7bB"/>
  1144 + <constraint firstItem="DN7-Bl-0sn" firstAttribute="centerY" secondItem="zf5-sW-pq6" secondAttribute="centerY" id="nMy-KR-EGQ"/>
  1145 + <constraint firstItem="DN7-Bl-0sn" firstAttribute="leading" secondItem="zAE-Rj-l2k" secondAttribute="trailing" constant="3" id="wZD-yd-641"/>
  1146 + </constraints>
  1147 + </view>
  1148 + </subviews>
  1149 + </view>
  1150 + <gestureRecognizers/>
  1151 + <constraints>
  1152 + <constraint firstItem="zf5-sW-pq6" firstAttribute="leading" secondItem="znO-HR-pdB" secondAttribute="leading" id="61a-fa-c9J"/>
  1153 + <constraint firstItem="zf5-sW-pq6" firstAttribute="top" secondItem="1eI-eh-N3I" secondAttribute="bottom" id="EIo-Vb-H9W"/>
  1154 + <constraint firstItem="1eI-eh-N3I" firstAttribute="top" secondItem="znO-HR-pdB" secondAttribute="top" id="Ywu-15-5fc"/>
  1155 + <constraint firstAttribute="trailing" secondItem="1eI-eh-N3I" secondAttribute="trailing" id="iHg-3V-D1l"/>
  1156 + <constraint firstAttribute="bottom" secondItem="zf5-sW-pq6" secondAttribute="bottom" id="nwS-Ps-NEb"/>
  1157 + <constraint firstAttribute="trailing" secondItem="zf5-sW-pq6" secondAttribute="trailing" id="peQ-5W-lFV"/>
  1158 + <constraint firstItem="1eI-eh-N3I" firstAttribute="leading" secondItem="znO-HR-pdB" secondAttribute="leading" id="s2Q-SV-Wa1"/>
  1159 + </constraints>
  1160 + <connections>
  1161 + <outlet property="backgroundImage" destination="XcQ-PZ-5vi" id="PZn-O3-2wr"/>
  1162 + <outlet property="nameLabel" destination="5bV-Q9-QBq" id="6cI-L0-KNI"/>
  1163 + <outlet property="pageLabel" destination="3kG-Uk-Ebo" id="TAP-lv-Ehz"/>
  1164 + <outlet property="passLabel" destination="MwN-q1-p8I" id="5QH-TX-YNW"/>
  1165 + <outlet property="personNumberLabel" destination="DN7-Bl-0sn" id="C46-Ic-kp4"/>
  1166 + <outlet property="timeLabel" destination="FLt-yg-yap" id="73q-DQ-xDb"/>
  1167 + </connections>
  1168 + </collectionViewCell>
  1169 + </cells>
  1170 + <connections>
  1171 + <outlet property="dataSource" destination="TRk-zG-DtG" id="lqH-kS-ppP"/>
  1172 + <outlet property="delegate" destination="TRk-zG-DtG" id="biA-Bk-fA8"/>
  1173 + </connections>
  1174 + </collectionView>
  1175 + </subviews>
  1176 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1177 + <gestureRecognizers/>
  1178 + <constraints>
  1179 + <constraint firstItem="zXz-qM-Acq" firstAttribute="leading" secondItem="872-q1-Iaa" secondAttribute="leading" id="A06-pz-cNK"/>
  1180 + <constraint firstItem="nMl-1w-hhg" firstAttribute="top" secondItem="MSW-uR-PzG" secondAttribute="bottom" id="E7P-YI-DOl"/>
  1181 + <constraint firstItem="zXz-qM-Acq" firstAttribute="top" secondItem="F8t-oe-SiB" secondAttribute="bottom" id="HCW-rj-PId"/>
  1182 + <constraint firstAttribute="trailing" secondItem="zXz-qM-Acq" secondAttribute="trailing" id="e2e-cq-Hap"/>
  1183 + <constraint firstItem="MSW-uR-PzG" firstAttribute="top" secondItem="zXz-qM-Acq" secondAttribute="bottom" id="fj7-Hc-YG2"/>
  1184 + <constraint firstItem="uxW-te-E5M" firstAttribute="top" secondItem="nMl-1w-hhg" secondAttribute="bottom" id="fq8-QB-60Q"/>
  1185 + <constraint firstItem="MSW-uR-PzG" firstAttribute="leading" secondItem="872-q1-Iaa" secondAttribute="leading" id="hMN-Xe-tdh"/>
  1186 + <constraint firstItem="nMl-1w-hhg" firstAttribute="leading" secondItem="872-q1-Iaa" secondAttribute="leading" id="jhB-ax-iCp"/>
  1187 + <constraint firstAttribute="trailing" secondItem="MSW-uR-PzG" secondAttribute="trailing" id="udE-bT-3AA"/>
  1188 + <constraint firstAttribute="trailing" secondItem="nMl-1w-hhg" secondAttribute="trailing" id="yQc-58-PeL"/>
  1189 + </constraints>
  1190 + <connections>
  1191 + <outletCollection property="gestureRecognizers" destination="XgT-x8-vAD" appends="YES" id="EXq-HP-LGR"/>
  1192 + </connections>
  1193 + </view>
  1194 + <navigationItem key="navigationItem" title="直播列表" id="khA-xa-evf"/>
  1195 + <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
  1196 + <connections>
  1197 + <outlet property="iconImage" destination="0Gk-gW-ew3" id="29g-By-ogu"/>
  1198 + <outlet property="nameLabel" destination="3TP-D6-7hD" id="tmI-yP-QI4"/>
  1199 + <outlet property="numberLabel" destination="ZEw-g1-Yma" id="pgU-Yw-Mrd"/>
  1200 + <outlet property="roomListCollectionView" destination="nMl-1w-hhg" id="otY-oI-2JI"/>
  1201 + <outlet property="titleCollectionView" destination="MSW-uR-PzG" id="M9L-C5-VB1"/>
  1202 + <outlet property="titleViewHeight" destination="6Lg-sB-5MW" id="6m2-b2-Ys4"/>
  1203 + </connections>
  1204 + </viewController>
  1205 + <placeholder placeholderIdentifier="IBFirstResponder" id="2zw-zY-MHj" userLabel="First Responder" sceneMemberID="firstResponder"/>
  1206 + <pongPressGestureRecognizer allowableMovement="10" minimumPressDuration="0.5" id="XgT-x8-vAD">
  1207 + <connections>
  1208 + <action selector="showAlertMenu:" destination="TRk-zG-DtG" id="p9e-Pt-bNd"/>
  1209 + </connections>
  1210 + </pongPressGestureRecognizer>
  1211 + </objects>
  1212 + <point key="canvasLocation" x="554" y="1534"/>
  1213 + </scene>
  1214 + <!--直播列表-->
  1215 + <scene sceneID="wpU-Ou-gWp">
  1216 + <objects>
  1217 + <viewController storyboardIdentifier="LiveListViewController" id="lqb-XV-ZVz" customClass="LiveListViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  1218 + <layoutGuides>
  1219 + <viewControllerLayoutGuide type="top" id="brV-vZ-9W3"/>
  1220 + <viewControllerLayoutGuide type="bottom" id="cR5-Gc-hQY"/>
  1221 + </layoutGuides>
  1222 + <view key="view" contentMode="scaleToFill" id="Nko-iq-QeO">
  1223 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  1224 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  1225 + <subviews>
  1226 + <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="isf-zi-cli">
  1227 + <rect key="frame" x="0.0" y="64" width="375" height="170"/>
  1228 + <subviews>
  1229 + <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default" translatesAutoresizingMaskIntoConstraints="NO" id="ngj-9g-5hs">
  1230 + <rect key="frame" x="0.0" y="0.0" width="375" height="170"/>
  1231 + </imageView>
  1232 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HQy-b9-ePQ">
  1233 + <rect key="frame" x="187" y="0.0" width="1" height="170"/>
  1234 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
  1235 + <constraints>
  1236 + <constraint firstAttribute="width" constant="1" id="hp0-BE-R8t"/>
  1237 + </constraints>
  1238 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  1239 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  1240 + <nil key="highlightedColor"/>
  1241 + </label>
  1242 + <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nhf-PK-1ec">
  1243 + <rect key="frame" x="0.0" y="130" width="375" height="21"/>
  1244 + <subviews>
  1245 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称:学事通" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gd5-Oe-oPN">
  1246 + <rect key="frame" x="0.0" y="0.0" width="179" height="21"/>
  1247 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  1248 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1249 + <nil key="highlightedColor"/>
  1250 + </label>
  1251 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="账号:18625774807" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8tX-Ga-zhU">
  1252 + <rect key="frame" x="196" y="0.0" width="179" height="21"/>
  1253 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
  1254 + <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1255 + <nil key="highlightedColor"/>
  1256 + </label>
  1257 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qyb-mf-TZD">
  1258 + <rect key="frame" x="187" y="0.0" width="1" height="21"/>
  1259 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  1260 + <constraints>
  1261 + <constraint firstAttribute="width" constant="1" id="L9M-ks-l68"/>
  1262 + <constraint firstAttribute="height" constant="21" id="e2e-8L-6ck"/>
  1263 + </constraints>
  1264 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  1265 + <nil key="textColor"/>
  1266 + <nil key="highlightedColor"/>
  1267 + </label>
  1268 + </subviews>
  1269 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  1270 + <constraints>
  1271 + <constraint firstItem="8tX-Ga-zhU" firstAttribute="leading" secondItem="qyb-mf-TZD" secondAttribute="trailing" constant="8" id="4zg-kG-yk5"/>
  1272 + <constraint firstAttribute="height" constant="21" id="7ar-AL-Ral"/>
  1273 + <constraint firstItem="gd5-Oe-oPN" firstAttribute="top" secondItem="nhf-PK-1ec" secondAttribute="top" id="957-1D-eE0"/>
  1274 + <constraint firstAttribute="trailing" secondItem="8tX-Ga-zhU" secondAttribute="trailing" id="BJQ-l9-S7J"/>
  1275 + <constraint firstItem="gd5-Oe-oPN" firstAttribute="leading" secondItem="nhf-PK-1ec" secondAttribute="leading" id="WNI-1e-htv"/>
  1276 + <constraint firstItem="qyb-mf-TZD" firstAttribute="leading" secondItem="gd5-Oe-oPN" secondAttribute="trailing" constant="8" id="bUf-Ti-6Ic"/>
  1277 + <constraint firstItem="qyb-mf-TZD" firstAttribute="centerY" secondItem="nhf-PK-1ec" secondAttribute="centerY" id="huQ-6k-n2Z"/>
  1278 + <constraint firstItem="8tX-Ga-zhU" firstAttribute="top" secondItem="nhf-PK-1ec" secondAttribute="top" id="iRE-hF-Zb2"/>
  1279 + <constraint firstAttribute="bottom" secondItem="8tX-Ga-zhU" secondAttribute="bottom" id="nGu-jK-iMz"/>
  1280 + <constraint firstItem="qyb-mf-TZD" firstAttribute="centerX" secondItem="nhf-PK-1ec" secondAttribute="centerX" id="nzA-SV-wGC"/>
  1281 + <constraint firstAttribute="bottom" secondItem="gd5-Oe-oPN" secondAttribute="bottom" id="thv-04-jSX"/>
  1282 + </constraints>
  1283 + </view>
  1284 + <imageView contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="9sO-7j-ngT">
  1285 + <rect key="frame" x="147.5" y="30" width="80" height="80"/>
  1286 + <gestureRecognizers/>
  1287 + <constraints>
  1288 + <constraint firstAttribute="width" constant="80" id="aaT-WV-MjZ"/>
  1289 + <constraint firstAttribute="height" constant="80" id="bHl-VP-qSd"/>
  1290 + </constraints>
  1291 + <userDefinedRuntimeAttributes>
  1292 + <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
  1293 + <integer key="value" value="40"/>
  1294 + </userDefinedRuntimeAttribute>
  1295 + <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
  1296 + </userDefinedRuntimeAttributes>
  1297 + </imageView>
  1298 + </subviews>
  1299 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  1300 + <constraints>
  1301 + <constraint firstItem="9sO-7j-ngT" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="top" constant="30" id="BJf-HM-jZp"/>
  1302 + <constraint firstAttribute="trailing" secondItem="nhf-PK-1ec" secondAttribute="trailing" id="Hhd-aT-EKJ"/>
  1303 + <constraint firstAttribute="trailing" secondItem="ngj-9g-5hs" secondAttribute="trailing" id="Lqf-5R-Vof"/>
  1304 + <constraint firstAttribute="bottom" secondItem="HQy-b9-ePQ" secondAttribute="bottom" id="OOY-Xj-O3f"/>
  1305 + <constraint firstItem="ngj-9g-5hs" firstAttribute="leading" secondItem="isf-zi-cli" secondAttribute="leading" id="QOW-6w-e4w"/>
  1306 + <constraint firstItem="nhf-PK-1ec" firstAttribute="leading" secondItem="isf-zi-cli" secondAttribute="leading" id="S5N-UG-TPg"/>
  1307 + <constraint firstItem="nhf-PK-1ec" firstAttribute="top" secondItem="9sO-7j-ngT" secondAttribute="bottom" constant="20" id="Sd1-f8-8MO"/>
  1308 + <constraint firstAttribute="bottom" secondItem="ngj-9g-5hs" secondAttribute="bottom" id="Z4Q-vc-VSM"/>
  1309 + <constraint firstItem="ngj-9g-5hs" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="top" id="doS-z4-SAG"/>
  1310 + <constraint firstItem="9sO-7j-ngT" firstAttribute="centerX" secondItem="isf-zi-cli" secondAttribute="centerX" id="eO5-ic-tZN"/>
  1311 + <constraint firstAttribute="height" constant="170" id="oir-ns-qxW"/>
  1312 + <constraint firstItem="HQy-b9-ePQ" firstAttribute="centerY" secondItem="isf-zi-cli" secondAttribute="centerY" id="pbA-aE-HU6"/>
  1313 + <constraint firstItem="HQy-b9-ePQ" firstAttribute="centerX" secondItem="isf-zi-cli" secondAttribute="centerX" id="sAd-ka-Cv5"/>
  1314 + <constraint firstItem="HQy-b9-ePQ" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="top" id="t0Y-B2-cX2"/>
  1315 + </constraints>
  1316 + </view>
  1317 + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="nIY-nN-A62">
  1318 + <rect key="frame" x="0.0" y="234" width="375" height="50"/>
  1319 + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
  1320 + <constraints>
  1321 + <constraint firstAttribute="height" constant="50" id="cYW-6s-rjR"/>
  1322 + </constraints>
  1323 + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="nKo-gM-IVo">
  1324 + <size key="itemSize" width="50" height="50"/>
  1325 + <size key="headerReferenceSize" width="0.0" height="0.0"/>
  1326 + <size key="footerReferenceSize" width="0.0" height="0.0"/>
  1327 + <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
  1328 + </collectionViewFlowLayout>
  1329 + <cells>
  1330 + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="selectCell" id="zB6-cu-Maa" customClass="selectTypeCell" customModule="YouerLiveVideo" customModuleProvider="target">
  1331 + <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
  1332 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  1333 + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
  1334 + <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
  1335 + <autoresizingMask key="autoresizingMask"/>
  1336 + <subviews>
  1337 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Pk-up-2ih">
  1338 + <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
  1339 + <fontDescription key="fontDescription" type="system" pointSize="12"/>
  1340 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  1341 + <nil key="highlightedColor"/>
  1342 + </label>
  1343 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="suc-N0-vzy">
  1344 + <rect key="frame" x="49" y="0.0" width="1" height="50"/>
  1345 + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
  1346 + <constraints>
  1347 + <constraint firstAttribute="width" constant="1" id="SSB-k1-YBs"/>
  1348 + </constraints>
  1349 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  1350 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
  1351 + <nil key="highlightedColor"/>
  1352 + </label>
  1353 + <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="WXf-Tu-oay">
  1354 + <rect key="frame" x="0.0" y="47" width="50" height="3"/>
  1355 + <color key="backgroundColor" red="1" green="0.39607843139999999" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  1356 + <constraints>
  1357 + <constraint firstAttribute="height" constant="3" id="mmI-NI-hys"/>
  1358 + </constraints>
  1359 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  1360 + <nil key="textColor"/>
  1361 + <nil key="highlightedColor"/>
  1362 + </label>
  1363 + </subviews>
  1364 + </view>
  1365 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
  1366 + <constraints>
  1367 + <constraint firstAttribute="trailing" secondItem="WXf-Tu-oay" secondAttribute="trailing" id="1DM-BI-kJ0"/>
  1368 + <constraint firstAttribute="bottom" secondItem="suc-N0-vzy" secondAttribute="bottom" id="1g5-P1-2B4"/>
  1369 + <constraint firstItem="3Pk-up-2ih" firstAttribute="top" secondItem="zB6-cu-Maa" secondAttribute="top" id="51r-YX-JTH"/>
  1370 + <constraint firstItem="3Pk-up-2ih" firstAttribute="leading" secondItem="zB6-cu-Maa" secondAttribute="leading" id="Fj8-by-KJ7"/>
  1371 + <constraint firstAttribute="trailing" secondItem="3Pk-up-2ih" secondAttribute="trailing" id="IVf-hi-Sp1"/>
  1372 + <constraint firstAttribute="trailing" secondItem="suc-N0-vzy" secondAttribute="trailing" id="Neu-CK-hfI"/>
  1373 + <constraint firstAttribute="bottom" secondItem="3Pk-up-2ih" secondAttribute="bottom" id="Se6-22-LPP"/>
  1374 + <constraint firstAttribute="bottom" secondItem="WXf-Tu-oay" secondAttribute="bottom" id="Uu3-5u-5pk"/>
  1375 + <constraint firstItem="suc-N0-vzy" firstAttribute="top" secondItem="zB6-cu-Maa" secondAttribute="top" id="hqo-pn-dz0"/>
  1376 + <constraint firstItem="WXf-Tu-oay" firstAttribute="leading" secondItem="zB6-cu-Maa" secondAttribute="leading" id="kKZ-BG-uZK"/>
  1377 + </constraints>
  1378 + <connections>
  1379 + <outlet property="currentLabel" destination="WXf-Tu-oay" id="UEG-W5-jCM"/>
  1380 + <outlet property="lineLabel" destination="suc-N0-vzy" id="pLb-HV-fJG"/>
  1381 + <outlet property="titleLabel" destination="3Pk-up-2ih" id="pmn-6t-PlP"/>
  1382 + </connections>
  1383 + </collectionViewCell>
  1384 + </cells>
  1385 + <connections>
  1386 + <outlet property="dataSource" destination="lqb-XV-ZVz" id="Qtm-ca-MEF"/>
  1387 + <outlet property="delegate" destination="lqb-XV-ZVz" id="JnV-MO-A85"/>
  1388 + </connections>
  1389 + </collectionView>
  1390 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="qbV-V4-1Wb">
  1391 + <rect key="frame" x="0.0" y="284" width="375" height="383"/>
  1392 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  1393 + <prototypes>
  1394 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="W7l-gM-baV">
  1395 + <rect key="frame" x="0.0" y="28" width="375" height="44"/>
  1396 + <autoresizingMask key="autoresizingMask"/>
  1397 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="W7l-gM-baV" id="fqd-mq-zcm">
  1398 + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
  1399 + <autoresizingMask key="autoresizingMask"/>
  1400 + </tableViewCellContentView>
  1401 + </tableViewCell>
  1402 + </prototypes>
  1403 + <connections>
  1404 + <outlet property="dataSource" destination="lqb-XV-ZVz" id="LLR-GW-UNE"/>
  1405 + <outlet property="delegate" destination="lqb-XV-ZVz" id="dTl-a0-wgn"/>
  1406 + </connections>
  1407 + </tableView>
  1408 + </subviews>
  1409 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  1410 + <constraints>
  1411 + <constraint firstItem="nIY-nN-A62" firstAttribute="top" secondItem="isf-zi-cli" secondAttribute="bottom" id="3JH-pc-PD9"/>
  1412 + <constraint firstAttribute="trailing" secondItem="qbV-V4-1Wb" secondAttribute="trailing" id="92K-HA-c7H"/>
  1413 + <constraint firstItem="nIY-nN-A62" firstAttribute="leading" secondItem="Nko-iq-QeO" secondAttribute="leading" id="Krk-n8-uMH"/>
  1414 + <constraint firstItem="qbV-V4-1Wb" firstAttribute="leading" secondItem="Nko-iq-QeO" secondAttribute="leading" id="Of1-gx-6kM"/>
  1415 + <constraint firstAttribute="trailing" secondItem="isf-zi-cli" secondAttribute="trailing" id="RTV-Ck-k8N"/>
  1416 + <constraint firstItem="isf-zi-cli" firstAttribute="top" secondItem="brV-vZ-9W3" secondAttribute="bottom" id="SHc-mb-QNi"/>
  1417 + <constraint firstItem="qbV-V4-1Wb" firstAttribute="top" secondItem="nIY-nN-A62" secondAttribute="bottom" id="TNI-YE-eyl"/>
  1418 + <constraint firstAttribute="trailing" secondItem="nIY-nN-A62" secondAttribute="trailing" id="dul-2C-eY2"/>
  1419 + <constraint firstItem="isf-zi-cli" firstAttribute="leading" secondItem="Nko-iq-QeO" secondAttribute="leading" id="eGy-yl-AP0"/>
  1420 + <constraint firstItem="cR5-Gc-hQY" firstAttribute="top" secondItem="qbV-V4-1Wb" secondAttribute="bottom" id="fBx-Ju-eLK"/>
  1421 + </constraints>
  1422 + </view>
  1423 + <navigationItem key="navigationItem" title="直播列表" id="P23-gm-beR"/>
  1424 + <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
  1425 + <connections>
  1426 + <outlet property="iconImage" destination="9sO-7j-ngT" id="Egb-2z-ww1"/>
  1427 + <outlet property="liveListTableView" destination="qbV-V4-1Wb" id="M98-yR-OV9"/>
  1428 + <outlet property="nameLabel" destination="gd5-Oe-oPN" id="2u7-2Y-H1g"/>
  1429 + <outlet property="numberLabel" destination="8tX-Ga-zhU" id="iWh-fx-L62"/>
  1430 + <outlet property="titleCollectionView" destination="nIY-nN-A62" id="SBy-Yj-tPs"/>
  1431 + <outlet property="titleViewHeight" destination="cYW-6s-rjR" id="zYI-HZ-q3e"/>
  1432 + </connections>
  1433 + </viewController>
  1434 + <placeholder placeholderIdentifier="IBFirstResponder" id="3SM-jo-HZr" userLabel="First Responder" sceneMemberID="firstResponder"/>
  1435 + </objects>
  1436 + <point key="canvasLocation" x="-103.2" y="1533.2833583208396"/>
  1437 + </scene>
  1438 + <!--我的关注-->
  1439 + <scene sceneID="5Pj-um-Bnv">
  1440 + <objects>
  1441 + <viewController storyboardIdentifier="MyAttentionViewController" id="zFh-S7-nli" customClass="MyAttentionViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  1442 + <layoutGuides>
  1443 + <viewControllerLayoutGuide type="top" id="JQ5-9k-ZmT"/>
  1444 + <viewControllerLayoutGuide type="bottom" id="SsA-vp-TY4"/>
  1445 + </layoutGuides>
  1446 + <view key="view" contentMode="scaleToFill" id="cty-Eh-WcV">
  1447 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  1448 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  1449 + <subviews>
  1450 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="80" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="IMO-Ya-Ykb">
  1451 + <rect key="frame" x="0.0" y="64" width="375" height="603"/>
  1452 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  1453 + <connections>
  1454 + <outlet property="dataSource" destination="zFh-S7-nli" id="l8w-94-Khb"/>
  1455 + <outlet property="delegate" destination="zFh-S7-nli" id="HDL-JZ-qph"/>
  1456 + </connections>
  1457 + </tableView>
  1458 + </subviews>
  1459 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  1460 + <constraints>
  1461 + <constraint firstItem="SsA-vp-TY4" firstAttribute="top" secondItem="IMO-Ya-Ykb" secondAttribute="bottom" id="6sW-ZQ-P0X"/>
  1462 + <constraint firstItem="IMO-Ya-Ykb" firstAttribute="leading" secondItem="cty-Eh-WcV" secondAttribute="leading" id="JeM-iL-Uv2"/>
  1463 + <constraint firstItem="IMO-Ya-Ykb" firstAttribute="top" secondItem="JQ5-9k-ZmT" secondAttribute="bottom" id="gA5-Vv-yWp"/>
  1464 + <constraint firstAttribute="trailing" secondItem="IMO-Ya-Ykb" secondAttribute="trailing" id="pMZ-Fu-L8q"/>
  1465 + </constraints>
  1466 + </view>
  1467 + <navigationItem key="navigationItem" title="我的关注" id="FDs-i4-32m"/>
  1468 + <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
  1469 + <connections>
  1470 + <outlet property="tableView" destination="IMO-Ya-Ykb" id="tBt-n5-whv"/>
  1471 + </connections>
  1472 + </viewController>
  1473 + <placeholder placeholderIdentifier="IBFirstResponder" id="20X-Eg-8F0" userLabel="First Responder" sceneMemberID="firstResponder"/>
  1474 + </objects>
  1475 + <point key="canvasLocation" x="-103.2" y="2202.5487256371816"/>
  1476 + </scene>
  1477 + </scenes>
  1478 + <resources>
  1479 + <image name="default" width="375" height="167"/>
  1480 + <image name="defphoto.png" width="256" height="256"/>
  1481 + <image name="loginBackGround" width="33" height="33"/>
  1482 + <image name="psb.jpg" width="540" height="960"/>
  1483 + <image name="userId.png" width="36" height="56"/>
  1484 + <image name="userPassword.png" width="31" height="41"/>
  1485 + <image name="上传头像.png" width="70" height="70"/>
  1486 + <image name="收拢.png" width="15" height="25"/>
  1487 + <image name="编辑.png" width="35" height="31"/>
  1488 + <image name="观看.png" width="30" height="23"/>
  1489 + </resources>
  1490 +</document>
YouerLiveVideo/YouerLiveVideo/util/ClassModel.swift
@@ -1,129 +0,0 @@ @@ -1,129 +0,0 @@
1 -//  
2 -// ClassModel.swift  
3 -// XSTLive  
4 -//  
5 -// Created by 葛建军 on 16/11/9.  
6 -// Copyright © 2016年 HANGZHOUTEAM. All rights reserved.  
7 -//  
8 -  
9 -import Foundation  
10 -//首页的列表model  
11 -class Live: NSObject {  
12 - var image:String = ""  
13 - var name:String = ""  
14 - var url:String = ""  
15 - var type:LivesType  
16 - init(image:String,name:String,url:String,type:LivesType) {  
17 - self.image=image  
18 - self.name=name  
19 - self.url = url  
20 - self.type=type  
21 - }  
22 -}  
23 -//每个直播 model  
24 -class LiveDetail:NSObject {  
25 - /*  
26 - 直播房间数据:  
27 - "f_Id": "string",  
28 - "f_LiveName": "string",  
29 - "f_LiveImg": "string",  
30 - "f_Description": "string",  
31 - "f_Sid": "string",  
32 - "f_CreatorUserId": "string",  
33 - "f_RoomId": "string",  
34 - "isExamine": 0,  
35 - “isAttention”: 0没关注1关注。这个是新加的,表示自己是否关注了这个房间创建者所在的学校,为什么这么设计详情问王金森  
36 - “school”:学校id,用来关注  
37 - “userName” 昵称  
38 - “account” 账号  
39 - “userImage” 头像  
40 - “category” 所属分类  
41 - “count” 现在有多少人在看(如果有这个数据的话)  
42 - */  
43 - // var f_MobilePhone:String="" //创建直播间时要用到云信id来创建聊天室  
44 - var f_Id:String="" //直播间ID  
45 - var f_LiveName:String="" //直播间名称  
46 - var f_LiveImg:String="" //直播间标题图片  
47 - var f_Description:String="" //直播间内容JSON字符串  
48 - var f_Category:String="" //所属分类  
49 - var f_CategoryName:String=""//所属分类名称  
50 - var f_CreatorUserId:String=""//直播间创建人ID  
51 - var f_Sid:String="" //  
52 - var f_RoomId:String="" //返回的聊天室ID  
53 - var f_IsExamine:Int=0 //直播间审核是否通过 0 未审核 1 审核通过 2 未通过  
54 - var f_IsAttention:Int=0 //是否录制  
55 - var f_Account:String="" //  
56 - var f_RealName:String="" //  
57 - var f_NickName:String="" //  
58 - var f_HeadIcon:String="" //  
59 - var f_OrganizeId:String=""  
60 - init(j:JSON) {  
61 - self.f_Id=j["f_Id"].stringValue  
62 - self.f_LiveName=j["f_LiveName"].stringValue  
63 - self.f_LiveImg=j["f_LiveImg"].stringValue  
64 - self.f_Description=j["f_Description"].stringValue  
65 - self.f_Category=j["f_Category"].stringValue  
66 - self.f_CategoryName=j["f_CategoryName"].stringValue  
67 - self.f_CreatorUserId=j["f_CreatorUserId"].stringValue  
68 - self.f_Sid=j["f_Sid"].stringValue  
69 - self.f_RoomId=j["f_RoomId"].stringValue  
70 - self.f_IsExamine=j["f_IsExamine"].intValue  
71 - self.f_IsAttention=j["f_IsAttention"].intValue  
72 - self.f_Account=j["f_Account"].stringValue  
73 - self.f_RealName=j["f_RealName"].stringValue  
74 - self.f_NickName=j["f_NickName"].stringValue  
75 - self.f_HeadIcon=j["f_HeadIcon"].stringValue  
76 - self.f_OrganizeId=j["f_OrganizeId"].stringValue  
77 - }  
78 - static func getAllLives(j:JSON) -> [LiveDetail] {  
79 - var allLiveRoom:[LiveDetail]=[]  
80 - for json in j["data"].arrayValue {  
81 - allLiveRoom.append(LiveDetail(j:json))  
82 - }  
83 - return allLiveRoom  
84 - }  
85 - override init() {  
86 -  
87 - }  
88 -}  
89 -//首页中直播和点播顶部分类 直播Live,点播Video  
90 -class LiveType:NSObject {  
91 - var f_Id:String="" //分类ID  
92 - var f_SortCode:String="" //分类  
93 - var f_LiveTypeName:String="" //分类名称  
94 - var f_Img:String="" //分类图标  
95 - init(j:JSON) {  
96 - self.f_Id=j["f_Id"].stringValue  
97 - self.f_SortCode=j["f_SortCode"].stringValue  
98 - self.f_LiveTypeName=j["f_LiveTypeName"].stringValue  
99 - self.f_Img=j["f_Img"].stringValue  
100 - }  
101 - static func getAllLiveType(j:JSON) -> [LiveType] {  
102 - var allLiveType:[LiveType]=[]  
103 - for json in j["data"].arrayValue {  
104 - allLiveType.append(LiveType(j:json))  
105 - }  
106 - return allLiveType  
107 - }  
108 -}  
109 -//我的关注的学校列表 All 所有的,Act我关注的  
110 -class OrganizeListSchool:NSObject {  
111 - var f_Id:String="" //学校ID  
112 - var f_FullName:String="" //学校  
113 - var f_ShortName:String="" //学校名称  
114 - var f_Views:String="" //学校图标  
115 - init(j:JSON) {  
116 - self.f_Id=j["f_Id"].stringValue  
117 - self.f_FullName=j["f_FullName"].stringValue  
118 - self.f_ShortName=j["f_ShortName"].stringValue  
119 - self.f_Views=j["f_Views"].stringValue  
120 - }  
121 - static func getAllSchool(j:JSON) -> [OrganizeListSchool] {  
122 - var allSchoolList:[OrganizeListSchool]=[]  
123 - for json in j["data"].arrayValue {  
124 - allSchoolList.append(OrganizeListSchool(j:json))  
125 - }  
126 - return allSchoolList  
127 - }  
128 -}  
129 -  
YouerLiveVideo/YouerLiveVideo/util/PassWordView.swift 0 → 100644
@@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
  1 +//
  2 +// PassWordView.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 左丞 on 17/1/22.
  6 +// Copyright © 2017年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class PassWordView: UIView ,ZSDSetPasswordViewDelegate{
  12 +
  13 + @IBOutlet weak var zsdView: ZSDSetPasswordView!
  14 + var superVC:UIViewController!
  15 + var passWord:String!
  16 + var delegate:PassWordEnterViewDelegate!
  17 + /*
  18 + // Only override draw() if you perform custom drawing.
  19 + // An empty implementation adve rsely affects performance during animation.
  20 + override func draw(_ rect: CGRect) {
  21 + // Drawing code
  22 + }
  23 + */
  24 + override func awakeFromNib() {
  25 + NotificationCenter.default.addObserver(self, selector: #selector(PassWordView.KeyboardWillChangeFrame(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
  26 + zsdView.delegate = self
  27 +
  28 + zsdView.frame = CGRect(x: (getScreenWidth()-200)/2, y: 0, width: 200, height: 90)
  29 + zsdView.layer.masksToBounds = true
  30 + zsdView.layer.cornerRadius = 5
  31 + zsdView.fieldBecomeFirstResponder()
  32 +
  33 + let title = UILabel(frame: CGRect(x: (200 - 100)/2, y: 5, width: 100, height: 30))
  34 + title.text = "请输入密码"
  35 + zsdView.addSubview(title)
  36 + self.addSubview(zsdView)
  37 + }
  38 +
  39 + func KeyboardWillChangeFrame(_ noti:NSNotification){
  40 + let info = noti.userInfo
  41 + let endFrame = info![UIKeyboardFrameEndUserInfoKey] as! NSValue
  42 + let dur = info![UIKeyboardAnimationDurationUserInfoKey]
  43 + UIView.animate(withDuration: dur as! TimeInterval, animations: { () -> Void in
  44 + self.zsdView.frame.origin.y = (endFrame.cgRectValue.origin.y - 100)/2
  45 + })
  46 + }
  47 +
  48 + @IBAction func tapClick(_ sender: Any) {
  49 + self.removeFromSuperview()
  50 + }
  51 +
  52 + func passwordView(_ passwordView: ZSDSetPasswordView!, inputPassword password: String!) {
  53 + if delegate != nil{
  54 + delegate.passwordView(password)
  55 + }
  56 + }
  57 +}
  58 +
  59 +public protocol PassWordEnterViewDelegate : NSObjectProtocol {
  60 + func passwordView(_ password: String!)
  61 +}
YouerLiveVideo/YouerLiveVideo/util/PassWordView.xib 0 → 100644
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11542" systemVersion="15G31" 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="11524"/>
  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 contentMode="scaleToFill" id="iN0-l3-epB" customClass="PassWordView" customModule="YouerLiveVideo" customModuleProvider="target">
  14 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  15 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  16 + <subviews>
  17 + <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BEL-mr-Ny5" customClass="ZSDSetPasswordView">
  18 + <rect key="frame" x="87.5" y="288.5" width="200" height="90"/>
  19 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  20 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  21 + </view>
  22 + </subviews>
  23 + <color key="backgroundColor" white="0.0" alpha="0.22880595438918913" colorSpace="calibratedWhite"/>
  24 + <gestureRecognizers/>
  25 + <connections>
  26 + <outlet property="zsdView" destination="BEL-mr-Ny5" id="LDH-Il-CEp"/>
  27 + <outletCollection property="gestureRecognizers" destination="NkT-gQ-zHa" appends="YES" id="zen-Fy-QcB"/>
  28 + </connections>
  29 + </view>
  30 + <tapGestureRecognizer id="NkT-gQ-zHa">
  31 + <connections>
  32 + <action selector="tapClick:" destination="iN0-l3-epB" id="DDe-4T-dWB"/>
  33 + </connections>
  34 + </tapGestureRecognizer>
  35 + </objects>
  36 +</document>
YouerLiveVideo/YouerLiveVideo/util/network.swift
@@ -90,28 +90,24 @@ final class KHttp{ @@ -90,28 +90,24 @@ final class KHttp{
90 90
91 final class HTTPServer{ 91 final class HTTPServer{
92 static let HOST="http://60.190.202.49:8096/swagger/ui/index#"//"https://zbapi.myjxt.com"//"http://60.190.202.49:8096/swagger/ui/index#" 92 static let HOST="http://60.190.202.49:8096/swagger/ui/index#"//"https://zbapi.myjxt.com"//"http://60.190.202.49:8096/swagger/ui/index#"
93 - static let HOSTOLD="https://newapi.myjxt.com"//"http://60.190.202.49:8081"  
94 93
95 - static let URL_UPLOAD_FILE=HOSTOLD+"/api/Resource/UploadFile" //上传图片  
96 static let URL_OAUTH_TOKEN=HOST+"/OAuth/Token" //登录 94 static let URL_OAUTH_TOKEN=HOST+"/OAuth/Token" //登录
97 95
98 - static let URL_CHANGEPHONECAPTCHA=HOST+"/api/Live/SendVerCode" //获取验证码  
99 - static let URL_LIVECREATEUSER=HOST+"/api/Live/AppCreateUser" //注册  
100 - static let URL_LIVEUSERINFO=HOST+"/api/Live/UserInfo" //更新本地个人信息  
101 - static let URL_LIVEUPDATEUSER=HOST+"/api/Live/APPUpdateUser" //修改个人信息  
102 - static let URL_LIVEISACTION=HOST+"/api/Live/IsAction" //关注或取消关注  
103 - static let URL_LIVECOMMENT=HOST+"/api/Live/Comment" //留言列表  
104 - static let URL_LIVEUSERCOMMENT=HOST+"/api/Live/UserComment" //用户留言  
105 -  
106 - static let URL_LIVELIST=HOST+"/api/Live/LiveList" //直播列表 Hot热门,Rec推荐,My我创建的,Org机构的 学校第二层显示  
107 - static let URL_LIVEOLIVETYPE=HOST+"/api/Live/LiveType" //首页中直播和点播顶部分类Live 直播分类,Video 点播分类  
108 -  
109 - static let URL_LIVECREATELIVE=HOST+"/api/Live/CreateLive" //创建直播间  
110 - static let URL_LIVEUPDATELIVE=HOST+"/api/Live/UpdateLive" //修改直播间信息  
111 -  
112 - static let URL_LIVEORGANIZELIST=HOST+"/api/Live/OrganizeList" //我的关注的学校列表 All 所有的,Act我关注的  
113 -  
114 - 96 + static let URL_ACCOUNTPHONECAPTCHA=HOST+"/api/Account/PhoneCaptcha" //获取验证码
  97 + static let URL_ACCOUNTCREATEUSER=HOST+"/api/Account/CreateUser" //游客注册
  98 + static let URL_ACCOUNTUPDATEPASSWORD=HOST+"/api/Account/UpdatePassword" //重设密码
  99 + static let URL_ACCOUNTCURRENTINFO=HOST+"/api/Account/CurrentInfo" //获取当前登陆用户的信息
  100 + static let URL_ACCOUNTACTIVATEACCOUNT=HOST+"/api/Account/ActivateAccount"//激活账号
  101 + static let URL_ACCOUNTUPDATEUSER=HOST+"/api/Account/Updateuser" //修改用户信息
  102 + static let URL_ACCOUNTADDUSER=HOST+"/api/Account/AddUser" //
  103 +
  104 + static let URL_COMMONGETCOURSEWAREVERSIONS=HOST+"/api/Common/GetCourseWareVersions" //获取所有的教材版本
  105 + static let URL_COMMONGETSUBJECTS=HOST+"/api/Common/GetSubjects" //获取学科
  106 + static let URL_COMMONGETSCHOOLTYPES=HOST+"/api/Common/GetSchoolTypes" //获取学段
  107 + static let URL_COMMONGETLUNBOLIST=HOST+"/api/Common/GetLunboList" //获取轮播图
  108 + static let URL_COMMONGETGRADES=HOST+"/api/Common/GetGrades" //根据学段获取年级
  109 + static let URL_COMMONGETCOURSEWAVES=HOST+"/api/Common/GetCourseWaves" //获取教材
  110 + static let URL_UPLOAD_FILE=HOST+"/api/Common/UploadFile" //文件上传接口,接受图片(gif,jpg,jpeg,png,bmp)、视频(flv,mp4)、音频(mp3,aac)
115 static let PLAYHISTORY=HOST+"/appfake_war_exploded/playhistory" //直播历史 111 static let PLAYHISTORY=HOST+"/appfake_war_exploded/playhistory" //直播历史
116 static let LIVEHISTORY=HOST+"/appfake_war_exploded/livehistory" //观看历史 112 static let LIVEHISTORY=HOST+"/appfake_war_exploded/livehistory" //观看历史
117 113
@@ -158,86 +154,36 @@ final class HTTPServer{ @@ -158,86 +154,36 @@ final class HTTPServer{
158 } 154 }
159 //获取验证码 155 //获取验证码
160 func getChangePhoneCaptcha(mobile:String,completionHandler:@escaping (String?, NSError?) -> Void){ 156 func getChangePhoneCaptcha(mobile:String,completionHandler:@escaping (String?, NSError?) -> Void){
161 - KHttp.POST(url: HTTPServer.URL_CHANGEPHONECAPTCHA+"?F_MobilePhone=\(mobile)",parameters:["F_MobilePhone":mobile as AnyObject],headers:["Authorization":token!], completionHandler: completionHandler) 157 + KHttp.GET(url: HTTPServer.URL_ACCOUNTPHONECAPTCHA,parameters:["mobile":mobile as AnyObject],headers:["Authorization":token!], completionHandler: completionHandler)
162 } 158 }
163 - //注册 159 + //游客注册
164 func getCreateUser(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){ 160 func getCreateUser(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
165 - KHttp.POST(url: HTTPServer.URL_LIVECREATEUSER, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)  
166 - }  
167 -  
168 - //更新本地个人信息  
169 - func uplocalUserInfo(completionHandler:@escaping (String?, NSError?) -> ()){  
170 - KHttp.POST(url: HTTPServer.URL_LIVEUSERINFO, headers:["Authorization":token!], completionHandler: completionHandler) 161 + KHttp.POST(url: HTTPServer.URL_ACCOUNTCREATEUSER, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
171 } 162 }
172 - //修改个人信息  
173 - func updataUserInfo(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){  
174 - KHttp.POST(url: HTTPServer.URL_LIVEUPDATEUSER, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) 163 + //重设密码
  164 + func getUpdatePassword(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
  165 + KHttp.GET(url: HTTPServer.URL_ACCOUNTUPDATEPASSWORD, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
175 } 166 }
176 - //关注或取消关注  
177 - func setIsAction(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){  
178 - KHttp.GET(url: HTTPServer.URL_LIVEISACTION, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) 167 + //获取当前登陆用户的信息
  168 + func getCurrentInfo(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
  169 + KHttp.GET(url: HTTPServer.URL_ACCOUNTCURRENTINFO, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
179 } 170 }
180 - //留言列表  
181 - func postLiveComment(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){  
182 -// KHttp.POST(url: HTTPServer.URL_LIVECOMMENT, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)  
183 - KHttp.POST(url: HTTPServer.URL_LIVECOMMENT+"?LiveId=\(parameters!["LiveId"]!)", parameters: nil,headers:["Authorization":token!], completionHandler: completionHandler)  
184 - 171 + //激活账号
  172 + func postActivateAccount(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
  173 + KHttp.POST(url: HTTPServer.URL_ACCOUNTACTIVATEACCOUNT, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
185 } 174 }
186 - //用户留言  
187 - func getLiveUserComment(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){  
188 - KHttp.GET(url: HTTPServer.URL_LIVEUSERCOMMENT, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) 175 + //修改用户信息
  176 + func postUpdateUser(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
  177 + KHttp.POST(url: HTTPServer.URL_ACCOUNTUPDATEUSER, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
189 } 178 }
190 179
191 - //MARK:-首页直播信息  
192 - //直播列表 Hot热门,Rec推荐,My我创建的,Org机构的 学校第二层显示  
193 - func getLive(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){  
194 - KHttp.GET(url: HTTPServer.URL_LIVELIST, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)  
195 - }  
196 - //首页中直播和点播顶部分类Live 直播分类,Video 点播分类  
197 - func postLiveType(type: String,completionHandler:@escaping (String?, NSError?) -> ()){  
198 - KHttp.POST(url: HTTPServer.URL_LIVEOLIVETYPE+"?F_Type=\(type)",headers:["Authorization":token!], completionHandler: completionHandler)  
199 - }  
200 - //MARK:-直播间我的  
201 - //创建直播间  
202 - func postCreateLive(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){  
203 - KHttp.POST(url: HTTPServer.URL_LIVECREATELIVE, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)  
204 - }  
205 - //修改直播间信息  
206 - func postUpdateLive(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){  
207 - KHttp.POST(url: HTTPServer.URL_LIVEUPDATELIVE, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)  
208 - }  
209 - //我的关注的学校列表 All 所有的,Act我关注的  
210 - func postLiveOrganizeList(type: String,completionHandler:@escaping (String?, NSError?) -> ()){  
211 - KHttp.POST(url: HTTPServer.URL_LIVEORGANIZELIST+"?WhatType=\(type)",headers:["Authorization":token!], completionHandler: completionHandler)  
212 - /*  
213 - let url=NSURL(string: HTTPServer.URL_GROUP_TEACHERLIST+"?GroupId=\(groupid)")  
214 - let request:NSMutableURLRequest=NSMutableURLRequest(URL: url!)  
215 - request.HTTPMethod = "GET"  
216 - request.setValue(token, forHTTPHeaderField: "Authorization")  
217 - request.setValue(KHttp.getSign(),forHTTPHeaderField: "sign")  
218 - //以后用Session  
219 - let config=NSURLSessionConfiguration.defaultSessionConfiguration()  
220 - let session=NSURLSession(configuration: config, delegate: URLSessionVC.share, delegateQueue: nil)  
221 - let dataTask=session.dataTaskWithRequest(request) { (data, response, sessionError) in  
222 - if sessionError==nil{  
223 - completionHandler(NSString(data: data!, encoding: NSUTF8StringEncoding) as? String,nil)  
224 - }else{  
225 - completionHandler("",sessionError)  
226 - }  
227 - }  
228 - dataTask.resume()  
229 - */ 180 + //
  181 + func getAddUser(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
  182 + KHttp.GET(url: HTTPServer.URL_ACCOUNTADDUSER, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
230 } 183 }
231 184
232 185
233 - //直播历史  
234 - func getPlayHistory(completionHandler:@escaping (String?, NSError?) -> ()){  
235 - KHttp.POST(url: HTTPServer.PLAYHISTORY,headers:["Authorization":token!], completionHandler: completionHandler)  
236 - }  
237 - //观看历史  
238 - func getLiveHistory(completionHandler:@escaping (String?, NSError?) -> ()){  
239 - KHttp.POST(url: HTTPServer.LIVEHISTORY,headers:["Authorization":token!], completionHandler: completionHandler)  
240 - } 186 +
241 187
242 } 188 }
243 let SERVER_MESSAGE=393939 189 let SERVER_MESSAGE=393939
YouerLiveVideo/YouerLiveVideo/util/utiles.swift
@@ -400,15 +400,4 @@ func selectImageFromString(string:String)-&gt;String{ @@ -400,15 +400,4 @@ func selectImageFromString(string:String)-&gt;String{
400 return "icon" 400 return "icon"
401 } 401 }
402 402
403 -func persentToMoivePlayer(from:UIViewController,liv:LiveDetail){  
404 - let endDate = JSON.fromString(jsonString: liv.f_Description)!["endtime"].doubleValue/1000 as TimeInterval  
405 - if Date().timeIntervalSince1970 < endDate{  
406 - let vc = UIStoryboard(name: "Live", bundle: nil).instantiateViewController(withIdentifier: "MoivePlayerViewControllerVC") as! MoivePlayerViewController  
407 - vc.liveDetail = liv  
408 - from.present(vc, animated: true, completion: nil)  
409 - }else{  
410 - AppDelegate.instance().window?.makeToast("直播已经结束", duration: 2, position: CSToastPositionCenter)  
411 - }  
412 -  
413 -}  
414 403