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 14 5904FC511ECA8B8C00E631FF /* TVStationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC4B1ECA8B8C00E631FF /* TVStationViewController.swift */; };
15 15 5904FC531ECA8BB500E631FF /* MicroCourse.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5904FC521ECA8BB500E631FF /* MicroCourse.storyboard */; };
16 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 17 5904FC5D1ECA8ED400E631FF /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5904FC5C1ECA8ED400E631FF /* HomePageViewController.swift */; };
20 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 19 5960263B1DD94D3100C6B5E8 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263A1DD94D3100C6B5E8 /* libsqlite3.tbd */; };
24 20 5960263D1DD94D5E00C6B5E8 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263C1DD94D5E00C6B5E8 /* libc++.tbd */; };
25 21 5960263F1DD94D7D00C6B5E8 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5960263E1DD94D7D00C6B5E8 /* ImageIO.framework */; };
... ... @@ -29,7 +25,6 @@
29 25 596026501DDD469200C6B5E8 /* RiverRunCommentManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264C1DDD469200C6B5E8 /* RiverRunCommentManager.m */; };
30 26 596026511DDD469200C6B5E8 /* RiverRunCommentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */; };
31 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 28 598A0E531E51941300273AB8 /* libNIMSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4D1E51941300273AB8 /* libNIMSDK.a */; };
34 29 598A0E541E51941300273AB8 /* libaacplus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4F1E51941300273AB8 /* libaacplus.a */; };
35 30 598A0E551E51941300273AB8 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E501E51941300273AB8 /* libcrypto.a */; };
... ... @@ -52,10 +47,8 @@
52 47 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CCE1DE52F7E00B4F7FD /* UMShareMenuSelectionView.m */; };
53 48 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */; };
54 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 50 59BA13251E25CF2B00540DE0 /* AliyunPlayerSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; };
57 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 52 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 59BA13301E25D1C000540DE0 /* Reachability.m */; };
60 53 59BA13451E25D8DB00540DE0 /* movieBackward.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13321E25D8DB00540DE0 /* movieBackward.png */; };
61 54 59BA13471E25D8DB00540DE0 /* movieBackwardSelected.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13341E25D8DB00540DE0 /* movieBackwardSelected.png */; };
... ... @@ -67,7 +60,6 @@
67 60 59BA13571E25D8DB00540DE0 /* video_num_front@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59BA13441E25D8DB00540DE0 /* video_num_front@2x.png */; };
68 61 59C25B491ECAD643009FF276 /* MoreTVStationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C25B481ECAD643009FF276 /* MoreTVStationViewController.swift */; };
69 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 63 59DB1C781E792E5900EA2FC4 /* 开始直播.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C771E792E5900EA2FC4 /* 开始直播.png */; };
72 64 59DB1C7A1E793DA700EA2FC4 /* 标签.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C791E793DA700EA2FC4 /* 标签.png */; };
73 65 59DB1C7C1E793E0E00EA2FC4 /* 视窗.png in Resources */ = {isa = PBXBuildFile; fileRef = 59DB1C7B1E793E0E00EA2FC4 /* 视窗.png */; };
... ... @@ -84,11 +76,6 @@
84 76 59F8016E1DD2E5F1000A78B0 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F8016D1DD2E5F1000A78B0 /* SystemConfiguration.framework */; };
85 77 59F801701DD2E5FB000A78B0 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59F8016F1DD2E5FB000A78B0 /* CoreTelephony.framework */; };
86 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 79 59F801AB1DD57253000A78B0 /* ZSDSetPasswordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */; };
93 80 BF25DFE21DDAA36A003EC0C1 /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF25DFA01DDAA36A003EC0C1 /* AFError.swift */; };
94 81 BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF25DFA21DDAA36A003EC0C1 /* Alamofire.swift */; };
... ... @@ -149,8 +136,6 @@
149 136 BF6977971E2DEC98006FA934 /* loginBackGround.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977941E2DEC98006FA934 /* loginBackGround.png */; };
150 137 BF6977981E2DEC98006FA934 /* userId.png in Resources */ = {isa = PBXBuildFile; fileRef = BF6977951E2DEC98006FA934 /* userId.png */; };
151 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 139 BF7B75961E305A6D0011D5C7 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */; };
155 140 BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756C1E305A6D0011D5C7 /* MJRefreshBackFooter.m */; };
156 141 BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B756E1E305A6D0011D5C7 /* MJRefreshComponent.m */; };
... ... @@ -171,42 +156,25 @@
171 156 BF7B75A71E305A6D0011D5C7 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75911E305A6D0011D5C7 /* UIScrollView+MJExtension.m */; };
172 157 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */; };
173 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 159 BFBB83A91ECAE35E008B404B /* LeadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83A81ECAE35E008B404B /* LeadViewController.swift */; };
190 160 BFBB83D11ECBEB4E008B404B /* JYScrollItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */; };
191 161 BFBB83D21ECBEB4E008B404B /* JYScrollItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBB83CE1ECBEB4E008B404B /* JYScrollItemModel.m */; };
192 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 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 172 BFDA8F331DDE88ED00F0C4E4 /* XSTLiveManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDA8F321DDE88ED00F0C4E4 /* XSTLiveManager.swift */; };
203 173 BFDFDEB01DD55B710040F102 /* AlivcLiveVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BFDFDEAF1DD55B710040F102 /* AlivcLiveVideo.framework */; };
204 174 BFDFDEC11DD55BC90040F102 /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDEBB1DD55BC90040F102 /* UIView+Toast.m */; };
205 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 176 BFDFDED21DD55C0D0040F102 /* network.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDFDECA1DD55C0D0040F102 /* network.swift */; };
208 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 178 BFF5F4711DD5AA5C00D33B89 /* attach_file.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45B1DD5AA5C00D33B89 /* attach_file.png */; };
211 179 BFF5F4721DD5AA5C00D33B89 /* defphoto.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45C1DD5AA5C00D33B89 /* defphoto.png */; };
212 180 BFF5F4751DD5AA5C00D33B89 /* left.png in Resources */ = {isa = PBXBuildFile; fileRef = BFF5F45F1DD5AA5C00D33B89 /* left.png */; };
... ... @@ -250,12 +218,8 @@
250 218 5904FC4B1ECA8B8C00E631FF /* TVStationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVStationViewController.swift; sourceTree = "<group>"; };
251 219 5904FC521ECA8BB500E631FF /* MicroCourse.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MicroCourse.storyboard; sourceTree = "<group>"; };
252 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 221 5904FC5C1ECA8ED400E631FF /* HomePageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = "<group>"; };
256 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 223 5960263A1DD94D3100C6B5E8 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
260 224 5960263C1DD94D5E00C6B5E8 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
261 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 232 5960264D1DDD469200C6B5E8 /* RiverRunCommentUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiverRunCommentUtil.h; sourceTree = "<group>"; };
269 233 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiverRunCommentUtil.m; sourceTree = "<group>"; };
270 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 235 598A0E121E51941300273AB8 /* NIMChatroom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroom.h; sourceTree = "<group>"; };
273 236 598A0E131E51941300273AB8 /* NIMChatroomEnterRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomEnterRequest.h; sourceTree = "<group>"; };
274 237 598A0E141E51941300273AB8 /* NIMChatroomMember.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomMember.h; sourceTree = "<group>"; };
... ... @@ -367,9 +330,7 @@
367 330 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialShareScrollView.m; sourceTree = "<group>"; };
368 331 599B2CD11DE52F7E00B4F7FD /* UMSocialUIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UMSocialUIManager.h; sourceTree = "<group>"; };
369 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 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 334 59BA132F1E25D1C000540DE0 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
374 335 59BA13301E25D1C000540DE0 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
375 336 59BA13321E25D8DB00540DE0 /* movieBackward.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = movieBackward.png; sourceTree = "<group>"; };
... ... @@ -382,7 +343,6 @@
382 343 59BA13441E25D8DB00540DE0 /* video_num_front@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "video_num_front@2x.png"; sourceTree = "<group>"; };
383 344 59C25B481ECAD643009FF276 /* MoreTVStationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreTVStationViewController.swift; sourceTree = "<group>"; };
384 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 346 59DB1C771E792E5900EA2FC4 /* 开始直播.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "开始直播.png"; sourceTree = "<group>"; };
387 347 59DB1C791E793DA700EA2FC4 /* 标签.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "标签.png"; sourceTree = "<group>"; };
388 348 59DB1C7B1E793E0E00EA2FC4 /* 视窗.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "视窗.png"; sourceTree = "<group>"; };
... ... @@ -402,12 +362,6 @@
402 362 59F8016F1DD2E5FB000A78B0 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
403 363 59F801721DD2E6B9000A78B0 /* YouerLiveVideo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YouerLiveVideo-Bridging-Header.h"; sourceTree = "<group>"; };
404 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 365 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZSDSetPasswordView.h; sourceTree = "<group>"; };
412 366 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZSDSetPasswordView.m; sourceTree = "<group>"; };
413 367 BF25DFA01DDAA36A003EC0C1 /* AFError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AFError.swift; sourceTree = "<group>"; };
... ... @@ -497,8 +451,6 @@
497 451 BF6977941E2DEC98006FA934 /* loginBackGround.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = loginBackGround.png; sourceTree = "<group>"; };
498 452 BF6977951E2DEC98006FA934 /* userId.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = userId.png; sourceTree = "<group>"; };
499 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 454 BF7B75691E305A6D0011D5C7 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshAutoFooter.h; sourceTree = "<group>"; };
503 455 BF7B756A1E305A6D0011D5C7 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJRefreshAutoFooter.m; sourceTree = "<group>"; };
504 456 BF7B756B1E305A6D0011D5C7 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJRefreshBackFooter.h; sourceTree = "<group>"; };
... ... @@ -539,21 +491,6 @@
539 491 BF7B75931E305A6D0011D5C7 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+MJRefresh.m"; sourceTree = "<group>"; };
540 492 BF7B75941E305A6D0011D5C7 /* UIView+MJExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+MJExtension.h"; sourceTree = "<group>"; };
541 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 494 BFBB83A81ECAE35E008B404B /* LeadViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeadViewController.swift; sourceTree = "<group>"; };
558 495 BFBB83CB1ECBEB4E008B404B /* JYScrollItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JYScrollItem.h; sourceTree = "<group>"; };
559 496 BFBB83CC1ECBEB4E008B404B /* JYScrollItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollItem.m; sourceTree = "<group>"; };
... ... @@ -561,24 +498,22 @@
561 498 BFBB83CE1ECBEB4E008B404B /* JYScrollItemModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JYScrollItemModel.m; sourceTree = "<group>"; };
562 499 BFBB83CF1ECBEB4E008B404B /* JYScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JYScrollView.h; sourceTree = "<group>"; };
563 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 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 510 BFDA8F321DDE88ED00F0C4E4 /* XSTLiveManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XSTLiveManager.swift; sourceTree = "<group>"; };
574 511 BFDFDEAF1DD55B710040F102 /* AlivcLiveVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AlivcLiveVideo.framework; sourceTree = "<group>"; };
575 512 BFDFDEBA1DD55BC90040F102 /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Toast.h"; sourceTree = "<group>"; };
576 513 BFDFDEBB1DD55BC90040F102 /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Toast.m"; sourceTree = "<group>"; };
577 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 515 BFDFDECA1DD55C0D0040F102 /* network.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = network.swift; sourceTree = "<group>"; };
580 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 517 BFE1C7991E23686C0007B16B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = "<group>"; };
583 518 BFE1C79A1E23686C0007B16B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = "<group>"; };
584 519 BFF5F45B1DD5AA5C00D33B89 /* attach_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = attach_file.png; sourceTree = "<group>"; };
... ... @@ -646,12 +581,11 @@
646 581 children = (
647 582 BFBB83A81ECAE35E008B404B /* LeadViewController.swift */,
648 583 5904FC601ECA930D00E631FF /* MViewController.swift */,
649   - 59C25B4C1ECAFAFC009FF276 /* NavigationViewController.swift */,
650 584 5904FC431ECA8B8C00E631FF /* HomePage */,
651 585 5904FC441ECA8B8C00E631FF /* MicroCourse */,
652 586 5904FC461ECA8B8C00E631FF /* Resource */,
653 587 5904FC481ECA8B8C00E631FF /* TVStation */,
654   - 5904FC4C1ECA8B8C00E631FF /* User */,
  588 + BFBB83D81ECC445D008B404B /* User */,
655 589 );
656 590 path = controllers;
657 591 sourceTree = "<group>";
... ... @@ -695,15 +629,6 @@
695 629 path = TVStation;
696 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 632 596026391DD94D3100C6B5E8 /* Frameworks */ = {
708 633 isa = PBXGroup;
709 634 children = (
... ... @@ -954,15 +879,6 @@
954 879 path = Resource;
955 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 882 59BA132E1E25D1C000540DE0 /* Reach */ = {
967 883 isa = PBXGroup;
968 884 children = (
... ... @@ -994,11 +910,8 @@
994 910 children = (
995 911 59F8014E1DD2C7AD000A78B0 /* AppDelegate.swift */,
996 912 59F801521DD2C7AD000A78B0 /* Main.storyboard */,
997   - 59F8019A1DD567D8000A78B0 /* controller */,
998 913 5904FC421ECA8B8C00E631FF /* controllers */,
999 914 BFDA8F311DDE87E800F0C4E4 /* NIM */,
1000   - 59F801921DD567C7000A78B0 /* Aliv */,
1001   - 59BA132B1E25D14F00540DE0 /* AliveVideoPlayer */,
1002 915 596026481DDD469200C6B5E8 /* DanmakuLib */,
1003 916 BFDFDEC71DD55C0D0040F102 /* util */,
1004 917 BFDFDEB11DD55BC90040F102 /* lib */,
... ... @@ -1013,38 +926,6 @@
1013 926 path = YouerLiveVideo;
1014 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 929 BF25DF9F1DDAA36A003EC0C1 /* Alamofire */ = {
1049 930 isa = PBXGroup;
1050 931 children = (
... ... @@ -1249,30 +1130,6 @@
1249 1130 path = Header;
1250 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 1133 BFBB83C91ECBEB4E008B404B /* Carousel */ = {
1277 1134 isa = PBXGroup;
1278 1135 children = (
... ... @@ -1294,19 +1151,25 @@
1294 1151 path = JYScrollBanner;
1295 1152 sourceTree = "<group>";
1296 1153 };
1297   - BFD1CB451E2C657B009D8A42 /* HomeCellAndTitleView */ = {
  1154 + BFBB83D81ECC445D008B404B /* User */ = {
1298 1155 isa = PBXGroup;
1299 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 1173 sourceTree = "<group>";
1311 1174 };
1312 1175 BFDA8F311DDE87E800F0C4E4 /* NIM */ = {
... ... @@ -1362,12 +1225,11 @@
1362 1225 BFDFDEC71DD55C0D0040F102 /* util */ = {
1363 1226 isa = PBXGroup;
1364 1227 children = (
1365   - 5906A0731E349FA500D2D814 /* PassWordView.swift */,
1366   - 5906A0751E349FB400D2D814 /* PassWordView.xib */,
  1228 + BFBB83D41ECC4446008B404B /* PassWordView.swift */,
  1229 + BFBB83D51ECC4446008B404B /* PassWordView.xib */,
1367 1230 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */,
1368 1231 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */,
1369 1232 BFDFDEC81DD55C0D0040F102 /* account.swift */,
1370   - BFDFDEC91DD55C0D0040F102 /* ClassModel.swift */,
1371 1233 BFDFDECA1DD55C0D0040F102 /* network.swift */,
1372 1234 BFDFDECB1DD55C0D0040F102 /* utiles.swift */,
1373 1235 BFC076771E3445F3008BAC79 /* DownLoad.swift */,
... ... @@ -1504,14 +1366,11 @@
1504 1366 BF6977921E2DEAF1006FA934 /* arrow.png in Resources */,
1505 1367 59BA13571E25D8DB00540DE0 /* video_num_front@2x.png in Resources */,
1506 1368 BF6977971E2DEC98006FA934 /* loginBackGround.png in Resources */,
1507   - BFD1CB4F1E2C657B009D8A42 /* liveTitleCollectionCell.xib in Resources */,
1508 1369 BFF5F4791DD5AA5C00D33B89 /* 分享.png in Resources */,
1509 1370 BFF5F47C1DD5AA5C00D33B89 /* 收拢.png in Resources */,
1510   - BFB716C11E28AF8B00C5C516 /* Live.storyboard in Resources */,
1511 1371 BFF5F4721DD5AA5C00D33B89 /* defphoto.png in Resources */,
1512 1372 5904FC531ECA8BB500E631FF /* MicroCourse.storyboard in Resources */,
1513 1373 BFF5F4751DD5AA5C00D33B89 /* left.png in Resources */,
1514   - BFD1CB511E2C657B009D8A42 /* LiveTitleView.xib in Resources */,
1515 1374 BFF5F48E1DD5B7CA00D33B89 /* Info-iOS.plist in Resources */,
1516 1375 BFF5F47A1DD5AA5C00D33B89 /* 封面上传.png in Resources */,
1517 1376 BF7B75A41E305A6D0011D5C7 /* MJRefresh.bundle in Resources */,
... ... @@ -1520,7 +1379,6 @@
1520 1379 BF6977991E2DEC98006FA934 /* userPassword.png in Resources */,
1521 1380 59F8015C1DD2C7AE000A78B0 /* LaunchScreen.storyboard in Resources */,
1522 1381 BF3E4A7A1E2F30B700D90659 /* 直播-最热.png in Resources */,
1523   - 5906A0761E349FB400D2D814 /* PassWordView.xib in Resources */,
1524 1382 59BA13471E25D8DB00540DE0 /* movieBackwardSelected.png in Resources */,
1525 1383 BFF5F47D1DD5AA5C00D33B89 /* 暂停.png in Resources */,
1526 1384 BFF5F4781DD5AA5C00D33B89 /* 全屏.png in Resources */,
... ... @@ -1539,32 +1397,29 @@
1539 1397 BFF5F4761DD5AA5C00D33B89 /* psb.jpg in Resources */,
1540 1398 59BA13451E25D8DB00540DE0 /* movieBackward.png in Resources */,
1541 1399 BF25DFE51DDAA36A003EC0C1 /* Info-tvOS.plist in Resources */,
1542   - BFD1CB4D1E2C657B009D8A42 /* HomeTableViewCell.xib in Resources */,
1543 1400 BF6977881E2DC264006FA934 /* 我的关注.png in Resources */,
1544 1401 599B2CD51DE52F7E00B4F7FD /* TencentOpenApi_IOS_Bundle.bundle in Resources */,
  1402 + BFBB83EA1ECC445D008B404B /* User.storyboard in Resources */,
1545 1403 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */,
1546 1404 BF25DFE61DDAA36A003EC0C1 /* Info.plist in Resources */,
1547 1405 BFF5F4771DD5AA5C00D33B89 /* 上传头像.png in Resources */,
1548 1406 5904FC501ECA8B8C00E631FF /* TVStation.storyboard in Resources */,
1549 1407 BF3E4A771E2F30B700D90659 /* 观看人数.png in Resources */,
1550 1408 599B2CDF1DE52F7E00B4F7FD /* UMSocialSDKResources.bundle in Resources */,
1551   - 5904FC5B1ECA8C0900E631FF /* User.storyboard in Resources */,
1552 1409 BFF5F4901DD5B7CA00D33B89 /* Info-tvOS.plist in Resources */,
1553   - BFB716CC1E28B5F200C5C516 /* User.storyboard in Resources */,
1554 1410 BFF5F4711DD5AA5C00D33B89 /* attach_file.png in Resources */,
1555 1411 599B2CD81DE52F7E00B4F7FD /* WeiboSDK.bundle in Resources */,
1556 1412 BF3E4A791E2F30B700D90659 /* 上传封面.png in Resources */,
1557 1413 59DB1C781E792E5900EA2FC4 /* 开始直播.png in Resources */,
1558   - 59F801981DD567C7000A78B0 /* AlivcLiveViewController.xib in Resources */,
1559   - BF7B75AF1E309F230011D5C7 /* AttentionTableViewCell.xib in Resources */,
1560   - BF8A4C561DE02CE300F99896 /* MessageTableViewCell.xib in Resources */,
1561 1414 BF69778A1E2DC264006FA934 /* 直播历史.png in Resources */,
1562 1415 BF25E0171DDAAF73003EC0C1 /* SVProgressHUD.bundle in Resources */,
1563 1416 59F801541DD2C7AD000A78B0 /* Main.storyboard in Resources */,
  1417 + BFBB83E31ECC445D008B404B /* User.storyboard in Resources */,
1564 1418 BFF5F47B1DD5AA5C00D33B89 /* 摄像头翻转.png in Resources */,
1565 1419 5904FC551ECA8BCB00E631FF /* HomePage.storyboard in Resources */,
1566 1420 BFF5F47E1DD5AA5C00D33B89 /* 横屏.png in Resources */,
1567 1421 59BA13561E25D8DB00540DE0 /* video_num_bg@2x.png in Resources */,
  1422 + BFBB83D71ECC4446008B404B /* PassWordView.xib in Resources */,
1568 1423 59DB1C7E1E793E6A00EA2FC4 /* 首页.png in Resources */,
1569 1424 BF6977871E2DC264006FA934 /* 我的充值.png in Resources */,
1570 1425 BF69778B1E2DC264006FA934 /* 直播列表.png in Resources */,
... ... @@ -1599,17 +1454,16 @@
1599 1454 buildActionMask = 2147483647;
1600 1455 files = (
1601 1456 BF7B75A21E305A6D0011D5C7 /* MJRefreshNormalHeader.m in Sources */,
1602   - 59F801991DD567C7000A78B0 /* LiveVideoViewController.swift in Sources */,
1603 1457 BF7B75991E305A6D0011D5C7 /* MJRefreshFooter.m in Sources */,
1604 1458 59F801571DD2C7AE000A78B0 /* YouerLiveVideo.xcdatamodeld in Sources */,
1605 1459 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */,
  1460 + BFBB83EB1ECC445D008B404B /* UserViewController.swift in Sources */,
1606 1461 5904FC4E1ECA8B8C00E631FF /* ResourceViewController.swift in Sources */,
1607 1462 BFBB83D11ECBEB4E008B404B /* JYScrollItem.m in Sources */,
1608 1463 BF25DFEB1DDAA36A003EC0C1 /* Request.swift in Sources */,
1609 1464 BF7B759F1E305A6D0011D5C7 /* MJRefreshBackNormalFooter.m in Sources */,
1610 1465 BFBB83D21ECBEB4E008B404B /* JYScrollItemModel.m in Sources */,
1611 1466 599B2CE01DE52F7E00B4F7FD /* UMShareMenuItem.m in Sources */,
1612   - BFD1CB531E2C66FA009D8A42 /* MoreViewController.swift in Sources */,
1613 1467 BF7B75A31E305A6D0011D5C7 /* MJRefreshStateHeader.m in Sources */,
1614 1468 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */,
1615 1469 BF25E0161DDAAF73003EC0C1 /* SVProgressAnimatedView.m in Sources */,
... ... @@ -1624,35 +1478,26 @@
1624 1478 59C25B491ECAD643009FF276 /* MoreTVStationViewController.swift in Sources */,
1625 1479 5904FC511ECA8B8C00E631FF /* TVStationViewController.swift in Sources */,
1626 1480 BFBB83D31ECBEB4E008B404B /* JYScrollView.m in Sources */,
  1481 + BFBB83E81ECC445D008B404B /* PersonalSettingViewController.swift in Sources */,
1627 1482 BF25E0081DDAA36A003EC0C1 /* UIView+WebCache.m in Sources */,
1628 1483 5904FC5D1ECA8ED400E631FF /* HomePageViewController.swift in Sources */,
1629 1484 BFBB83A91ECAE35E008B404B /* LeadViewController.swift in Sources */,
1630   - BF8A4C551DE02CE300F99896 /* MessageTableViewCell.swift in Sources */,
1631   - BFD1CB4C1E2C657B009D8A42 /* HomeTableViewCell.swift in Sources */,
1632 1485 BF7B759C1E305A6D0011D5C7 /* MJRefreshAutoNormalFooter.m in Sources */,
1633 1486 5904FC4F1ECA8B8C00E631FF /* SearchTVStationListViewController.swift in Sources */,
1634   - BF7B75AE1E309F230011D5C7 /* AttentionTableViewCell.swift in Sources */,
1635 1487 BFC076781E3445F3008BAC79 /* DownLoad.swift in Sources */,
1636 1488 BF25DFE71DDAA36A003EC0C1 /* MultipartFormData.swift in Sources */,
1637 1489 BF25DFF71DDAA36A003EC0C1 /* MKAnnotationView+WebCache.m in Sources */,
1638 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 1491 5904FC4D1ECA8B8C00E631FF /* MicroCourseViewController.swift in Sources */,
1643   - 59A8731C1DDD9E0600BAC7FC /* CustomScrollView.swift in Sources */,
  1492 + BFBB83E61ECC445D008B404B /* LoginViewController.swift in Sources */,
1644 1493 BF25DFE21DDAA36A003EC0C1 /* AFError.swift in Sources */,
1645 1494 BF25DFEF1DDAA36A003EC0C1 /* ServerTrustPolicy.swift in Sources */,
1646 1495 BF25E0061DDAA36A003EC0C1 /* UIImageView+HighlightedWebCache.m in Sources */,
1647 1496 BF25DFE41DDAA36A003EC0C1 /* DispatchQueue+Alamofire.swift in Sources */,
1648 1497 BF25DFE81DDAA36A003EC0C1 /* NetworkReachabilityManager.swift in Sources */,
1649 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 1499 BF25DFFE1DDAA36A003EC0C1 /* SDWebImageDownloader.m in Sources */,
1654 1500 BF7B75A51E305A6D0011D5C7 /* MJRefreshConst.m in Sources */,
1655   - BF9D41271E29C20500719535 /* HomeDetailViewController.swift in Sources */,
1656 1501 BF7B759B1E305A6D0011D5C7 /* MJRefreshAutoGifFooter.m in Sources */,
1657 1502 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */,
1658 1503 BF25E0021DDAA36A003EC0C1 /* UIButton+WebCache.m in Sources */,
... ... @@ -1660,15 +1505,10 @@
1660 1505 BF25DFF81DDAA36A003EC0C1 /* NSData+ImageContentType.m in Sources */,
1661 1506 BF25E0151DDAAF73003EC0C1 /* SVIndefiniteAnimatedView.m in Sources */,
1662 1507 BFF5F4921DD5B7CA00D33B89 /* SwiftyJSON.swift in Sources */,
1663   - BFDFDED11DD55C0D0040F102 /* ClassModel.swift in Sources */,
1664 1508 BF7B75A91E305A6D0011D5C7 /* UIView+MJExtension.m in Sources */,
1665   - BF7B271E1E2F022E00BCF13D /* MyAttentionViewController.swift in Sources */,
1666   - 59F801A61DD567D8000A78B0 /* MainViewController.swift in Sources */,
1667 1509 BF25DFEE1DDAA36A003EC0C1 /* Result.swift in Sources */,
1668   - BF7B75B11E31E3200011D5C7 /* LiveTypeListViewController.swift in Sources */,
1669 1510 BFDFDED21DD55C0D0040F102 /* network.swift in Sources */,
1670 1511 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */,
1671   - 59C25B4D1ECAFAFC009FF276 /* NavigationViewController.swift in Sources */,
1672 1512 BF25DFFF1DDAA36A003EC0C1 /* SDWebImageDownloaderOperation.m in Sources */,
1673 1513 BF25DFF01DDAA36A003EC0C1 /* SessionDelegate.swift in Sources */,
1674 1514 BF25DFE31DDAA36A003EC0C1 /* Alamofire.swift in Sources */,
... ... @@ -1678,20 +1518,15 @@
1678 1518 596026501DDD469200C6B5E8 /* RiverRunCommentManager.m in Sources */,
1679 1519 BF7B759A1E305A6D0011D5C7 /* MJRefreshHeader.m in Sources */,
1680 1520 BF7B75A61E305A6D0011D5C7 /* NSBundle+MJRefresh.m in Sources */,
1681   - 59BA132D1E25D14F00540DE0 /* MoivePlayerViewController.swift in Sources */,
1682 1521 5960264F1DDD469200C6B5E8 /* CommentTextLayer.m in Sources */,
1683 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 1523 59C25B4B1ECAD84C009FF276 /* TVStationInforViewController.swift in Sources */,
1689 1524 BF25DFF51DDAA36A003EC0C1 /* MBProgressHUD.m in Sources */,
1690   - BFD1CB501E2C657B009D8A42 /* LiveTitleView.swift in Sources */,
1691 1525 BF25E0191DDAAF73003EC0C1 /* SVRadialGradientLayer.m in Sources */,
1692 1526 BF25E0001DDAA36A003EC0C1 /* SDWebImageManager.m in Sources */,
1693 1527 BF25E0011DDAA36A003EC0C1 /* SDWebImagePrefetcher.m in Sources */,
1694 1528 BF7B75A71E305A6D0011D5C7 /* UIScrollView+MJExtension.m in Sources */,
  1529 + BFBB83D61ECC4446008B404B /* PassWordView.swift in Sources */,
1695 1530 BF7B75971E305A6D0011D5C7 /* MJRefreshBackFooter.m in Sources */,
1696 1531 BF7B75981E305A6D0011D5C7 /* MJRefreshComponent.m in Sources */,
1697 1532 BF25DFEA1DDAA36A003EC0C1 /* ParameterEncoding.swift in Sources */,
... ... @@ -1702,22 +1537,17 @@
1702 1537 5904FC611ECA930D00E631FF /* MViewController.swift in Sources */,
1703 1538 BF25DFF61DDAA36A003EC0C1 /* FLAnimatedImageView+WebCache.m in Sources */,
1704 1539 BF7B759D1E305A6D0011D5C7 /* MJRefreshAutoStateFooter.m in Sources */,
1705   - 5906A0741E349FA500D2D814 /* PassWordView.swift in Sources */,
1706 1540 BF25E0071DDAA36A003EC0C1 /* UIImageView+WebCache.m in Sources */,
1707 1541 BF25DFE91DDAA36A003EC0C1 /* Notifications.swift in Sources */,
1708 1542 BF25DFF21DDAA36A003EC0C1 /* TaskDelegate.swift in Sources */,
1709   - BFB716C81E28B5F200C5C516 /* LiveRoomsViewController.swift in Sources */,
1710 1543 BF7B75A11E305A6D0011D5C7 /* MJRefreshGifHeader.m in Sources */,
1711 1544 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */,
1712   - BFB716CB1E28B5F200C5C516 /* RegisterViewController.swift in Sources */,
1713 1545 BF25DFF91DDAA36A003EC0C1 /* NSImage+WebCache.m in Sources */,
1714   - BFB716CA1E28B5F200C5C516 /* PersonalSettingViewController.swift in Sources */,
1715 1546 59F8014F1DD2C7AD000A78B0 /* AppDelegate.swift in Sources */,
1716 1547 BF25DFED1DDAA36A003EC0C1 /* ResponseSerialization.swift in Sources */,
1717 1548 BF25E0031DDAA36A003EC0C1 /* UIImage+GIF.m in Sources */,
1718   - 59F801A21DD567D8000A78B0 /* MyViewController.swift in Sources */,
  1549 + BFBB83E91ECC445D008B404B /* RegisterViewController.swift in Sources */,
1719 1550 596026511DDD469200C6B5E8 /* RiverRunCommentUtil.m in Sources */,
1720   - BFD1CB4E1E2C657B009D8A42 /* liveTitleCollectionCell.swift in Sources */,
1721 1551 BF25DFF11DDAA36A003EC0C1 /* SessionManager.swift in Sources */,
1722 1552 );
1723 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   -//
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   -//
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   -<?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   -//
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   -//
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   -//
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   -<?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   -//
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   -//
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 20 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
21 21 httpServer.accountManager=accountManager
22 22 accountManager.setTokenInfo(tokenInfo: accountManager.loadToken())
23   - setShareSDKSetting()
  23 +// setShareSDKSetting()
24 24 setNIMSDKRegister()
25 25 return true
26 26 }
... ...
YouerLiveVideo/YouerLiveVideo/Base.lproj/Main.storyboard
... ... @@ -156,7 +156,7 @@
156 156 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
157 157 <subviews>
158 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 160 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
161 161 <prototypes>
162 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 218 </connections>
219 219 </tableView>
220 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 222 <subviews>
223 223 <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default" translatesAutoresizingMaskIntoConstraints="NO" id="qqi-UG-8sO">
224 224 <rect key="frame" x="0.0" y="0.0" width="375" height="170"/>
... ... @@ -490,49 +490,11 @@
490 490 <constraint firstAttribute="width" secondItem="FSI-1e-Z3T" secondAttribute="height" multiplier="16:9" id="U44-KW-O9e"/>
491 491 </constraints>
492 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 493 </subviews>
528 494 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
529 495 <constraints>
530 496 <constraint firstItem="FSI-1e-Z3T" firstAttribute="top" secondItem="wfh-tO-9fU" secondAttribute="bottom" id="5D2-o8-R3S"/>
531 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 498 <constraint firstItem="FSI-1e-Z3T" firstAttribute="leading" secondItem="2QR-eN-M4v" secondAttribute="leading" id="wBm-Qb-5ZL"/>
537 499 </constraints>
538 500 </view>
... ... @@ -551,673 +513,6 @@
551 513 </objects>
552 514 <point key="canvasLocation" x="-1844" y="2112.5937031484259"/>
553 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 517 <scene sceneID="HjP-gB-wYC">
1223 518 <objects>
... ... @@ -1342,13 +637,11 @@
1342 637 </scenes>
1343 638 <resources>
1344 639 <image name="arrow" width="33" height="33"/>
1345   - <image name="attach_file.png" width="128" height="128"/>
1346 640 <image name="default" width="375" height="167"/>
1347 641 <image name="default_userRoom" width="19" height="17"/>
1348 642 <image name="defphoto.png" width="256" height="256"/>
1349 643 <image name="divshadow.png" width="771" height="13"/>
1350 644 <image name="icon.png" width="80" height="80"/>
1351 645 <image name="视窗.png" width="31" height="31"/>
1352   - <image name="首页.png" width="31" height="31"/>
1353 646 </resources>
1354 647 </document>
... ...
YouerLiveVideo/YouerLiveVideo/YouerLiveVideo-Bridging-Header.h
... ... @@ -10,7 +10,6 @@
10 10 #define YouerLiveVideo_Bridging_Header_h
11 11 #import <CommonCrypto/CommonCrypto.h>
12 12 #import <AlivcLiveVideo/AlivcLiveVideo.h>
13   -#import "AlivcLiveViewController.h"
14 13 #import "UIView+Toast.h"
15 14 #import "ZSDSetPasswordView.h"
16 15 #import <UMSocialCore/UMSocialCore.h>
... ...
YouerLiveVideo/YouerLiveVideo/controller/HomeCellAndTitleView/AttentionTableViewCell.swift
... ... @@ -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   -<?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   -//
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   -<?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   -//
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   -<?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   -//
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   -<?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   -//
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   -//
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   -//
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   -<?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   -//
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   -//
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   -//
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   -<?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   -//
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   -//
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   -//
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   -//
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   -//
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   -//
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   -//
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   -//
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   -//
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   -//
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   -//
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   -<?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   -//
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 @@
  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 @@
  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 @@
  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 @@
  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   -//
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 @@
  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 @@
  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 90  
91 91 final class HTTPServer{
92 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 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 111 static let PLAYHISTORY=HOST+"/appfake_war_exploded/playhistory" //直播历史
116 112 static let LIVEHISTORY=HOST+"/appfake_war_exploded/livehistory" //观看历史
117 113  
... ... @@ -158,86 +154,36 @@ final class HTTPServer{
158 154 }
159 155 //获取验证码
160 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 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 189 let SERVER_MESSAGE=393939
... ...
YouerLiveVideo/YouerLiveVideo/util/utiles.swift
... ... @@ -400,15 +400,4 @@ func selectImageFromString(string:String)-&gt;String{
400 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  
... ...