Commit 235e5ed1981a9df19ed17a53afa6b1f2be1fa64c

Authored by 左丞
1 parent 0fcdc1f6
Exists in newLive

no message

YouerLiveVideo/YouerLiveVideo.xcodeproj/project.pbxproj
... ... @@ -25,6 +25,9 @@
25 25 596026501DDD469200C6B5E8 /* RiverRunCommentManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264C1DDD469200C6B5E8 /* RiverRunCommentManager.m */; };
26 26 596026511DDD469200C6B5E8 /* RiverRunCommentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */; };
27 27 597185B51ECA990C00D7F478 /* Resource.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 597185B41ECA990C00D7F478 /* Resource.storyboard */; };
  28 + 598939491ED3CFD8005DA462 /* UserEditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 598939481ED3CFD8005DA462 /* UserEditViewController.swift */; };
  29 + 5989394B1ED3CFF4005DA462 /* AppSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5989394A1ED3CFF4005DA462 /* AppSettingViewController.swift */; };
  30 + 5989394D1ED4016D005DA462 /* HistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5989394C1ED4016D005DA462 /* HistoryViewController.swift */; };
28 31 598A0E531E51941300273AB8 /* libNIMSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4D1E51941300273AB8 /* libNIMSDK.a */; };
29 32 598A0E541E51941300273AB8 /* libaacplus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E4F1E51941300273AB8 /* libaacplus.a */; };
30 33 598A0E551E51941300273AB8 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 598A0E501E51941300273AB8 /* libcrypto.a */; };
... ... @@ -238,6 +241,9 @@
238 241 5960264D1DDD469200C6B5E8 /* RiverRunCommentUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiverRunCommentUtil.h; sourceTree = "<group>"; };
239 242 5960264E1DDD469200C6B5E8 /* RiverRunCommentUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiverRunCommentUtil.m; sourceTree = "<group>"; };
240 243 597185B41ECA990C00D7F478 /* Resource.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Resource.storyboard; sourceTree = "<group>"; };
  244 + 598939481ED3CFD8005DA462 /* UserEditViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserEditViewController.swift; sourceTree = "<group>"; };
  245 + 5989394A1ED3CFF4005DA462 /* AppSettingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppSettingViewController.swift; sourceTree = "<group>"; };
  246 + 5989394C1ED4016D005DA462 /* HistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoryViewController.swift; sourceTree = "<group>"; };
241 247 598A0E121E51941300273AB8 /* NIMChatroom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroom.h; sourceTree = "<group>"; };
242 248 598A0E131E51941300273AB8 /* NIMChatroomEnterRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomEnterRequest.h; sourceTree = "<group>"; };
243 249 598A0E141E51941300273AB8 /* NIMChatroomMember.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMChatroomMember.h; sourceTree = "<group>"; };
... ... @@ -1175,6 +1181,9 @@
1175 1181 children = (
1176 1182 BFBB83D91ECC445D008B404B /* User.storyboard */,
1177 1183 BFBB83E21ECC445D008B404B /* UserViewController.swift */,
  1184 + 598939481ED3CFD8005DA462 /* UserEditViewController.swift */,
  1185 + 5989394A1ED3CFF4005DA462 /* AppSettingViewController.swift */,
  1186 + 5989394C1ED4016D005DA462 /* HistoryViewController.swift */,
1178 1187 BFBB83DA1ECC445D008B404B /* UserCenter */,
1179 1188 );
1180 1189 path = User;
... ... @@ -1506,12 +1515,14 @@
1506 1515 BFC076781E3445F3008BAC79 /* DownLoad.swift in Sources */,
1507 1516 59AE3DFF1ECFDAFD003E2C62 /* TVStationChannelViewController.swift in Sources */,
1508 1517 BF25DFE71DDAA36A003EC0C1 /* MultipartFormData.swift in Sources */,
  1518 + 5989394D1ED4016D005DA462 /* HistoryViewController.swift in Sources */,
1509 1519 BF25DFF71DDAA36A003EC0C1 /* MKAnnotationView+WebCache.m in Sources */,
1510 1520 BF25DFFB1DDAA36A003EC0C1 /* SDImageCacheConfig.m in Sources */,
1511 1521 5904FC4D1ECA8B8C00E631FF /* MicroCourseViewController.swift in Sources */,
1512 1522 BFBB83E61ECC445D008B404B /* LoginViewController.swift in Sources */,
1513 1523 BF25DFE21DDAA36A003EC0C1 /* AFError.swift in Sources */,
1514 1524 BF25DFEF1DDAA36A003EC0C1 /* ServerTrustPolicy.swift in Sources */,
  1525 + 598939491ED3CFD8005DA462 /* UserEditViewController.swift in Sources */,
1515 1526 BF25E0061DDAA36A003EC0C1 /* UIImageView+HighlightedWebCache.m in Sources */,
1516 1527 BF25DFE41DDAA36A003EC0C1 /* DispatchQueue+Alamofire.swift in Sources */,
1517 1528 BF25DFE81DDAA36A003EC0C1 /* NetworkReachabilityManager.swift in Sources */,
... ... @@ -1527,6 +1538,7 @@
1527 1538 BF25DFF81DDAA36A003EC0C1 /* NSData+ImageContentType.m in Sources */,
1528 1539 BF25E0151DDAAF73003EC0C1 /* SVIndefiniteAnimatedView.m in Sources */,
1529 1540 BFF5F4921DD5B7CA00D33B89 /* SwiftyJSON.swift in Sources */,
  1541 + 5989394B1ED3CFF4005DA462 /* AppSettingViewController.swift in Sources */,
1530 1542 BF682F1E1ECE8772007632CA /* MainHomeTableViewController.swift in Sources */,
1531 1543 BF7B75A91E305A6D0011D5C7 /* UIView+MJExtension.m in Sources */,
1532 1544 BF25DFEE1DDAA36A003EC0C1 /* Result.swift in Sources */,
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/arrow.imageset/Contents.json
... ... @@ -6,7 +6,7 @@
6 6 },
7 7 {
8 8 "idiom" : "universal",
9   - "filename" : "arrow.png",
  9 + "filename" : "收拢.png",
10 10 "scale" : "2x"
11 11 },
12 12 {
... ... @@ -17,8 +17,5 @@
17 17 "info" : {
18 18 "version" : 1,
19 19 "author" : "xcode"
20   - },
21   - "properties" : {
22   - "template-rendering-intent" : "template"
23 20 }
24 21 }
25 22 \ No newline at end of file
... ...
YouerLiveVideo/YouerLiveVideo/Assets.xcassets/arrow.imageset/arrow.png

1002 Bytes

YouerLiveVideo/YouerLiveVideo/Assets.xcassets/arrow.imageset/收拢.png 0 → 100644

3.05 KB

YouerLiveVideo/YouerLiveVideo/Base.lproj/Main.storyboard
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" initialViewController="fhe-aI-EYq">
  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" initialViewController="fhe-aI-EYq">
3 3 <device id="retina4_7" orientation="portrait">
4 4 <adaptation id="fullscreen"/>
5 5 </device>
... ... @@ -823,13 +823,124 @@
823 823 <view key="view" contentMode="scaleToFill" id="gTL-Bi-K7K">
824 824 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
825 825 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
826   - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  826 + <subviews>
  827 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="CFz-Ro-N17">
  828 + <rect key="frame" x="0.0" y="184" width="375" height="434"/>
  829 + <color key="backgroundColor" red="0.89713114500000002" green="0.89431768659999999" blue="0.90413767099999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  830 + <prototypes>
  831 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" id="dJF-O6-zOW" customClass="UserCenterHistoryCell" customModule="YouerLiveVideo" customModuleProvider="target">
  832 + <rect key="frame" x="0.0" y="28" width="375" height="44"/>
  833 + <autoresizingMask key="autoresizingMask"/>
  834 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="dJF-O6-zOW" id="3wg-qZ-Ccm">
  835 + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
  836 + <autoresizingMask key="autoresizingMask"/>
  837 + <subviews>
  838 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rfw-U6-vsh">
  839 + <rect key="frame" x="40" y="11" width="42" height="21"/>
  840 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  841 + <nil key="textColor"/>
  842 + <nil key="highlightedColor"/>
  843 + </label>
  844 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZcI-ei-CRK">
  845 + <rect key="frame" x="40" y="43" width="319" height="1"/>
  846 + <color key="backgroundColor" red="0.89713114500000002" green="0.89431768659999999" blue="0.90413767099999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  847 + <constraints>
  848 + <constraint firstAttribute="height" constant="1" id="x7b-Er-eeL"/>
  849 + </constraints>
  850 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  851 + <nil key="textColor"/>
  852 + <nil key="highlightedColor"/>
  853 + </label>
  854 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="arrow" translatesAutoresizingMaskIntoConstraints="NO" id="95T-hp-hYn">
  855 + <rect key="frame" x="350" y="14.5" width="9" height="15"/>
  856 + <constraints>
  857 + <constraint firstAttribute="width" secondItem="95T-hp-hYn" secondAttribute="height" multiplier="3:5" id="DmD-vc-Zm5"/>
  858 + <constraint firstAttribute="height" constant="15" id="N6u-lf-nHQ"/>
  859 + </constraints>
  860 + </imageView>
  861 + </subviews>
  862 + <constraints>
  863 + <constraint firstItem="ZcI-ei-CRK" firstAttribute="leading" secondItem="Rfw-U6-vsh" secondAttribute="leading" id="Nzi-ts-Hez"/>
  864 + <constraint firstAttribute="trailing" secondItem="ZcI-ei-CRK" secondAttribute="trailing" constant="16" id="d70-H8-SxF"/>
  865 + <constraint firstItem="95T-hp-hYn" firstAttribute="centerY" secondItem="3wg-qZ-Ccm" secondAttribute="centerY" id="reE-Cq-jwx"/>
  866 + <constraint firstItem="Rfw-U6-vsh" firstAttribute="leading" secondItem="3wg-qZ-Ccm" secondAttribute="leading" constant="40" id="sXN-8Z-QZq"/>
  867 + <constraint firstAttribute="trailing" secondItem="95T-hp-hYn" secondAttribute="trailing" constant="16" id="wJE-Ch-hxD"/>
  868 + <constraint firstItem="Rfw-U6-vsh" firstAttribute="centerY" secondItem="3wg-qZ-Ccm" secondAttribute="centerY" id="z32-br-U2n"/>
  869 + <constraint firstAttribute="bottom" secondItem="ZcI-ei-CRK" secondAttribute="bottom" id="zAy-lk-L8V"/>
  870 + </constraints>
  871 + </tableViewCellContentView>
  872 + <connections>
  873 + <outlet property="titleName" destination="Rfw-U6-vsh" id="Dkz-aT-h6h"/>
  874 + </connections>
  875 + </tableViewCell>
  876 + </prototypes>
  877 + <connections>
  878 + <outlet property="dataSource" destination="BZx-0y-T5Q" id="UvW-WJ-LpD"/>
  879 + <outlet property="delegate" destination="BZx-0y-T5Q" id="r0G-v1-ycw"/>
  880 + </connections>
  881 + </tableView>
  882 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bvl-OP-Mho">
  883 + <rect key="frame" x="0.0" y="79" width="375" height="90"/>
  884 + <subviews>
  885 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto.png" translatesAutoresizingMaskIntoConstraints="NO" id="brI-5l-hmz">
  886 + <rect key="frame" x="16" y="20" width="47" height="50"/>
  887 + <constraints>
  888 + <constraint firstAttribute="height" constant="50" id="VpN-jf-Kgx"/>
  889 + <constraint firstAttribute="width" secondItem="brI-5l-hmz" secondAttribute="height" multiplier="17:18" id="lia-o4-ohd"/>
  890 + </constraints>
  891 + </imageView>
  892 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nqw-kl-w72">
  893 + <rect key="frame" x="79" y="35" width="42" height="21"/>
  894 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  895 + <nil key="textColor"/>
  896 + <nil key="highlightedColor"/>
  897 + </label>
  898 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yK0-QJ-bRM">
  899 + <rect key="frame" x="337" y="30" width="30" height="30"/>
  900 + <constraints>
  901 + <constraint firstAttribute="width" secondItem="yK0-QJ-bRM" secondAttribute="height" multiplier="1:1" id="3YU-P4-ctC"/>
  902 + <constraint firstAttribute="height" constant="30" id="HhD-eg-tVW"/>
  903 + </constraints>
  904 + <state key="normal" image="arrow"/>
  905 + <connections>
  906 + <action selector="userEditClcik:" destination="BZx-0y-T5Q" eventType="touchUpInside" id="KOe-u4-Y7x"/>
  907 + </connections>
  908 + </button>
  909 + </subviews>
  910 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  911 + <constraints>
  912 + <constraint firstItem="yK0-QJ-bRM" firstAttribute="centerY" secondItem="bvl-OP-Mho" secondAttribute="centerY" id="8rD-kC-wG0"/>
  913 + <constraint firstAttribute="height" constant="90" id="OgG-Ww-2w0"/>
  914 + <constraint firstItem="brI-5l-hmz" firstAttribute="centerY" secondItem="bvl-OP-Mho" secondAttribute="centerY" id="YFV-yt-DAA"/>
  915 + <constraint firstAttribute="trailing" secondItem="yK0-QJ-bRM" secondAttribute="trailing" constant="8" id="hGo-7T-muV"/>
  916 + <constraint firstItem="Nqw-kl-w72" firstAttribute="centerY" secondItem="bvl-OP-Mho" secondAttribute="centerY" id="lw6-Jl-KC5"/>
  917 + <constraint firstItem="Nqw-kl-w72" firstAttribute="leading" secondItem="brI-5l-hmz" secondAttribute="trailing" constant="16" id="unR-ks-0nT"/>
  918 + <constraint firstItem="yK0-QJ-bRM" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Nqw-kl-w72" secondAttribute="trailing" constant="8" id="vhw-0q-WYU"/>
  919 + <constraint firstItem="brI-5l-hmz" firstAttribute="leading" secondItem="bvl-OP-Mho" secondAttribute="leading" constant="16" id="xXW-xf-5Ra"/>
  920 + </constraints>
  921 + </view>
  922 + </subviews>
  923 + <color key="backgroundColor" red="0.89713114500000002" green="0.89431768659999999" blue="0.90413767099999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  924 + <constraints>
  925 + <constraint firstAttribute="trailing" secondItem="bvl-OP-Mho" secondAttribute="trailing" id="98d-su-BYc"/>
  926 + <constraint firstItem="CFz-Ro-N17" firstAttribute="top" secondItem="bvl-OP-Mho" secondAttribute="bottom" constant="15" id="Bio-5s-xo1"/>
  927 + <constraint firstItem="bvl-OP-Mho" firstAttribute="leading" secondItem="gTL-Bi-K7K" secondAttribute="leading" id="FNR-Mg-Bk7"/>
  928 + <constraint firstAttribute="trailing" secondItem="CFz-Ro-N17" secondAttribute="trailing" id="G3m-0A-QJE"/>
  929 + <constraint firstItem="04n-Q1-RCL" firstAttribute="top" secondItem="CFz-Ro-N17" secondAttribute="bottom" id="L1W-bl-RTD"/>
  930 + <constraint firstItem="CFz-Ro-N17" firstAttribute="leading" secondItem="gTL-Bi-K7K" secondAttribute="leading" id="NYQ-VV-dtX"/>
  931 + <constraint firstItem="bvl-OP-Mho" firstAttribute="top" secondItem="Kng-4W-y6v" secondAttribute="bottom" constant="15" id="Ylp-Rg-JJV"/>
  932 + </constraints>
827 933 </view>
828 934 <navigationItem key="navigationItem" title="用户" id="KBV-ql-Taf"/>
  935 + <connections>
  936 + <outlet property="historyList" destination="CFz-Ro-N17" id="XkV-zV-Rj9"/>
  937 + <outlet property="userName" destination="Nqw-kl-w72" id="3HY-fb-c91"/>
  938 + <outlet property="userPhoto" destination="brI-5l-hmz" id="XG3-nG-OZG"/>
  939 + </connections>
829 940 </viewController>
830 941 <placeholder placeholderIdentifier="IBFirstResponder" id="yJD-YG-4bQ" userLabel="First Responder" sceneMemberID="firstResponder"/>
831 942 </objects>
832   - <point key="canvasLocation" x="1206" y="2113"/>
  943 + <point key="canvasLocation" x="1205.5999999999999" y="2112.5937031484259"/>
833 944 </scene>
834 945 <!--用户-->
835 946 <scene sceneID="LVY-SG-ceP">
... ... @@ -1182,7 +1293,7 @@
1182 1293 <rect key="frame" x="0.0" y="28" width="375" height="178"/>
1183 1294 <autoresizingMask key="autoresizingMask"/>
1184 1295 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8PR-k0-hwX" id="Bb0-oI-ccB">
1185   - <rect key="frame" x="0.0" y="0.0" width="375" height="178"/>
  1296 + <rect key="frame" x="0.0" y="0.0" width="375" height="177"/>
1186 1297 <autoresizingMask key="autoresizingMask"/>
1187 1298 <subviews>
1188 1299 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="m0I-jk-Iru">
... ... @@ -1518,7 +1629,7 @@
1518 1629 </scene>
1519 1630 </scenes>
1520 1631 <resources>
1521   - <image name="arrow" width="33" height="33"/>
  1632 + <image name="arrow" width="7" height="12"/>
1522 1633 <image name="default" width="375" height="167"/>
1523 1634 <image name="default_userRoom" width="19" height="17"/>
1524 1635 <image name="defphoto.png" width="256" height="256"/>
... ...
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/ExcellentTVViewController.swift
... ... @@ -7,7 +7,7 @@
7 7 //
8 8  
9 9 import UIKit
10   -
  10 +import AVKit
11 11 class ExcellentTVViewController: UIViewController {
12 12  
13 13 @IBOutlet weak var AllTitleView: UIView!
... ... @@ -204,6 +204,7 @@ extension ExcellentTVViewController:UICollectionViewDelegate,UICollectionViewDat
204 204  
205 205 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
206 206 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! ExcellentTVViewCell
  207 + cell.superNacigation = self.navigationController
207 208 AppDelegate.instance().httpServer.postExcellentProgram(parameters: ["f_TelevisionId":TVStationClasses[titleSelectBtn].ch[classSelectBtn].id as AnyObject,"pageIndex":1 as AnyObject]) { (str, error) in
208 209 httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
209 210 for item in json.contentData()["resultData"].arrayValue{
... ... @@ -236,7 +237,7 @@ class ExcellentTVViewCell: UICollectionViewCell,UICollectionViewDelegate,UIColl
236 237 var f_TelevisionId:String!
237 238 @IBOutlet weak var inforCollectionView: UICollectionView!
238 239 var datatSet:[TVStationSubject] = []
239   -
  240 + var superNacigation:UINavigationController!
240 241  
241 242  
242 243 override func awakeFromNib() {
... ... @@ -251,6 +252,7 @@ class ExcellentTVViewCell: UICollectionViewCell,UICollectionViewDelegate,UIColl
251 252 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell1", for: indexPath) as! ExcellentTVInforViewCell
252 253 let item = datatSet[indexPath.row]
253 254 cell.model = item
  255 + cell.superNavigation = superNacigation
254 256 return cell
255 257 }
256 258  
... ... @@ -274,7 +276,7 @@ class ExcellentTVInforViewCell: UICollectionViewCell{
274 276 @IBOutlet weak var tvStationLogo: UIImageView!
275 277 @IBOutlet weak var subjectType: UILabel!
276 278 @IBOutlet weak var playCount: UILabel!
277   -
  279 + var superNavigation:UINavigationController!
278 280 var model:TVStationSubject? {
279 281 didSet{
280 282 self.tvStationLogo.sd_setImage(with: URL(string: model!.f_Img), placeholderImage: #imageLiteral(resourceName: "placeholder"))
... ... @@ -285,9 +287,17 @@ class ExcellentTVInforViewCell: UICollectionViewCell{
285 287 }
286 288  
287 289 @IBAction func playBtnClick(_ sender: UIButton) {
288   -
  290 + AppDelegate.instance().httpServer.addHistoryView(parameters: ["f_ViewType":self.model!.f_ResourceType as AnyObject,"f_ViewId":self.model!.f_Id as AnyObject,"f_ViewName":self.model!.f_Title as AnyObject]) { (str, error) in
  291 + if JSON.fromString(jsonString: str)?["status"].intValue == 1{
  292 +
  293 + }
  294 + }
  295 + let url = URL(string:self.model!.f_ResourceUrl)
  296 + let player = AVPlayerViewController()
  297 + player.player = AVPlayer(url: url!)
  298 + player.videoGravity = AVLayerVideoGravityResizeAspect
  299 + superNavigation.present(player, animated: true, completion: nil)
289 300 }
290   -
291 301 }
292 302  
293 303 class TVSubjectInfor{
... ...
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/TVStation.storyboard
... ... @@ -159,14 +159,14 @@
159 159 <rect key="frame" x="0.0" y="134.5" width="170" height="127.5"/>
160 160 <subviews>
161 161 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VsV-Bf-hCY">
162   - <rect key="frame" x="8" y="8" width="37.5" height="18"/>
163   - <fontDescription key="fontDescription" type="system" pointSize="15"/>
  162 + <rect key="frame" x="8" y="8" width="42" height="20.5"/>
  163 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
164 164 <nil key="textColor"/>
165 165 <nil key="highlightedColor"/>
166 166 </label>
167 167 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9MF-Zt-fqc">
168   - <rect key="frame" x="8" y="103.5" width="33" height="16"/>
169   - <fontDescription key="fontDescription" type="system" pointSize="13"/>
  168 + <rect key="frame" x="8" y="98.5" width="42" height="21"/>
  169 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
170 170 <nil key="textColor"/>
171 171 <nil key="highlightedColor"/>
172 172 </label>
... ... @@ -712,6 +712,6 @@
712 712 </scene>
713 713 </scenes>
714 714 <resources>
715   - <image name="arrow" width="13" height="13"/>
  715 + <image name="arrow" width="7" height="12"/>
716 716 </resources>
717 717 </document>
... ...
YouerLiveVideo/YouerLiveVideo/controllers/User/AppSettingViewController.swift 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +//
  2 +// AppSettingViewController.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 左丞 on 2017/5/23.
  6 +// Copyright © 2017年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class AppSettingViewController: 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/controllers/User/HistoryViewController.swift 0 → 100644
... ... @@ -0,0 +1,88 @@
  1 +//
  2 +// HistoryViewController.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 左丞 on 2017/5/23.
  6 +// Copyright © 2017年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class HistoryViewController: UIViewController {
  12 +
  13 + @IBOutlet weak var collectionView: UICollectionView!
  14 +
  15 + var datatSet:[TVStationSubject] = []
  16 + var type:Int = 0// 资源类型 0-微课 1-资源 2-电视台
  17 + override func viewDidLoad() {
  18 + super.viewDidLoad()
  19 + AppDelegate.instance().httpServer.getHistroyView(parameters: ["f_ViewType":type as AnyObject,"pageIndex":1 as AnyObject]) { (str, error) in
  20 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  21 + for item in json.contentData()["resultData"].arrayValue{
  22 + self.datatSet.append(TVStationSubject(json: item))
  23 + }
  24 + self.collectionView.reloadData()
  25 + }, failHandler: { (error) in
  26 +
  27 + })
  28 + }
  29 + // Do any additional setup after loading the view.
  30 + }
  31 +
  32 + override func didReceiveMemoryWarning() {
  33 + super.didReceiveMemoryWarning()
  34 + // Dispose of any resources that can be recreated.
  35 + }
  36 +
  37 +
  38 + /*
  39 + // MARK: - Navigation
  40 +
  41 + // In a storyboard-based application, you will often want to do a little preparation before navigation
  42 + override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  43 + // Get the new view controller using segue.destinationViewController.
  44 + // Pass the selected object to the new view controller.
  45 + }
  46 + */
  47 +
  48 +}
  49 +
  50 +extension HistoryViewController:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{
  51 +
  52 + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
  53 +
  54 + }
  55 +
  56 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
  57 + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! TVStationClassCell
  58 + let item = datatSet[indexPath.row]
  59 + cell.model = item
  60 + return cell
  61 + }
  62 +
  63 + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  64 + return datatSet.count
  65 + }
  66 +
  67 + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
  68 + return CGSize(width: (getScreenWidth()-30)/2, height: 200)
  69 + }
  70 +
  71 +
  72 + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
  73 + return UIEdgeInsetsMake(10, 10, 10, 10)
  74 + }
  75 +
  76 +}
  77 +
  78 +class TVStationClassCell: UICollectionViewCell {
  79 +
  80 + @IBOutlet weak var name: UILabel!
  81 + @IBOutlet weak var photo: UIImageView!
  82 + var model:TVStationSubject?{
  83 + didSet{
  84 + name.text = model!.f_Title
  85 + photo.sd_setImage(with: URL(string:model!.f_Img), placeholderImage: #imageLiteral(resourceName: "placeholder"))
  86 + }
  87 + }
  88 +}
... ...
YouerLiveVideo/YouerLiveVideo/controllers/User/User.storyboard
... ... @@ -5,6 +5,264 @@
5 5 </device>
6 6 <dependencies>
7 7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
  8 + <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
  9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
8 10 </dependencies>
9   - <scenes/>
  11 + <scenes>
  12 + <!--User Edit View Controller-->
  13 + <scene sceneID="pS1-j4-eWs">
  14 + <objects>
  15 + <viewController storyboardIdentifier="UserEditViewControllerVC" id="e3H-9T-9vN" customClass="UserEditViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  16 + <layoutGuides>
  17 + <viewControllerLayoutGuide type="top" id="FSu-Pn-e9e"/>
  18 + <viewControllerLayoutGuide type="bottom" id="xWX-Qt-Zg4"/>
  19 + </layoutGuides>
  20 + <view key="view" contentMode="scaleToFill" id="sEf-LI-up1">
  21 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  22 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  23 + <subviews>
  24 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="80" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="7cQ-8j-yH7">
  25 + <rect key="frame" x="0.0" y="20" width="375" height="647"/>
  26 + <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  27 + <view key="tableFooterView" alpha="0.0" contentMode="scaleToFill" id="gdX-lf-V9T">
  28 + <rect key="frame" x="0.0" y="233" width="375" height="1"/>
  29 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  30 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  31 + </view>
  32 + <prototypes>
  33 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="cell" rowHeight="65" id="VaS-c5-fyN" customClass="UserEditCell" customModule="YouerLiveVideo" customModuleProvider="target">
  34 + <rect key="frame" x="0.0" y="28" width="375" height="65"/>
  35 + <autoresizingMask key="autoresizingMask"/>
  36 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VaS-c5-fyN" id="BHG-Ro-sxn">
  37 + <rect key="frame" x="0.0" y="0.0" width="375" height="65"/>
  38 + <autoresizingMask key="autoresizingMask"/>
  39 + <subviews>
  40 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Fz-jx-xRr">
  41 + <rect key="frame" x="0.0" y="0.0" width="375" height="55"/>
  42 + <subviews>
  43 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wur-aa-kt0">
  44 + <rect key="frame" x="16" y="17" width="42" height="21"/>
  45 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  46 + <nil key="textColor"/>
  47 + <nil key="highlightedColor"/>
  48 + </label>
  49 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lKD-cm-cma">
  50 + <rect key="frame" x="100" y="17" width="42" height="21"/>
  51 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  52 + <nil key="textColor"/>
  53 + <nil key="highlightedColor"/>
  54 + </label>
  55 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p7D-OG-Yvb">
  56 + <rect key="frame" x="324" y="17" width="35" height="21"/>
  57 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  58 + <nil key="textColor"/>
  59 + <nil key="highlightedColor"/>
  60 + </label>
  61 + </subviews>
  62 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  63 + <constraints>
  64 + <constraint firstItem="lKD-cm-cma" firstAttribute="leading" secondItem="1Fz-jx-xRr" secondAttribute="leading" constant="100" id="82k-40-ps7"/>
  65 + <constraint firstItem="lKD-cm-cma" firstAttribute="centerY" secondItem="1Fz-jx-xRr" secondAttribute="centerY" id="CKm-pY-Oa5"/>
  66 + <constraint firstItem="p7D-OG-Yvb" firstAttribute="centerY" secondItem="1Fz-jx-xRr" secondAttribute="centerY" id="GLx-N0-nO4"/>
  67 + <constraint firstAttribute="trailing" secondItem="p7D-OG-Yvb" secondAttribute="trailing" constant="16" id="aeE-4O-uX0"/>
  68 + <constraint firstItem="wur-aa-kt0" firstAttribute="leading" secondItem="1Fz-jx-xRr" secondAttribute="leading" constant="16" id="dzA-qy-Cb4"/>
  69 + <constraint firstItem="wur-aa-kt0" firstAttribute="centerY" secondItem="1Fz-jx-xRr" secondAttribute="centerY" id="inn-Xl-Jd6"/>
  70 + </constraints>
  71 + </view>
  72 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ixZ-3y-Vbw">
  73 + <rect key="frame" x="0.0" y="50" width="375" height="15"/>
  74 + <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  75 + <constraints>
  76 + <constraint firstAttribute="height" constant="15" id="EhR-gh-BOo"/>
  77 + </constraints>
  78 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  79 + <nil key="textColor"/>
  80 + <nil key="highlightedColor"/>
  81 + </label>
  82 + </subviews>
  83 + <constraints>
  84 + <constraint firstAttribute="bottom" secondItem="ixZ-3y-Vbw" secondAttribute="bottom" id="Hhs-no-unI"/>
  85 + <constraint firstAttribute="trailing" secondItem="1Fz-jx-xRr" secondAttribute="trailing" id="PMA-PU-hcw"/>
  86 + <constraint firstItem="1Fz-jx-xRr" firstAttribute="leading" secondItem="BHG-Ro-sxn" secondAttribute="leading" id="Voj-d0-Qey"/>
  87 + <constraint firstAttribute="trailing" secondItem="ixZ-3y-Vbw" secondAttribute="trailing" id="Yzp-pT-xwG"/>
  88 + <constraint firstItem="1Fz-jx-xRr" firstAttribute="top" secondItem="BHG-Ro-sxn" secondAttribute="top" id="ZeA-nu-6OB"/>
  89 + <constraint firstAttribute="bottom" secondItem="1Fz-jx-xRr" secondAttribute="bottom" constant="10" id="h50-sQ-e7l"/>
  90 + <constraint firstItem="ixZ-3y-Vbw" firstAttribute="leading" secondItem="BHG-Ro-sxn" secondAttribute="leading" id="xG1-Oa-Jgs"/>
  91 + </constraints>
  92 + </tableViewCellContentView>
  93 + <connections>
  94 + <outlet property="changeBtn" destination="p7D-OG-Yvb" id="AOH-ne-h5Q"/>
  95 + <outlet property="name" destination="lKD-cm-cma" id="FUs-tv-gRh"/>
  96 + <outlet property="titleName" destination="wur-aa-kt0" id="33B-f4-9wH"/>
  97 + </connections>
  98 + </tableViewCell>
  99 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="UserPhotoCell" rowHeight="140" id="ST2-cP-6pc" customClass="UserPhotoCell" customModule="YouerLiveVideo" customModuleProvider="target">
  100 + <rect key="frame" x="0.0" y="93" width="375" height="140"/>
  101 + <autoresizingMask key="autoresizingMask"/>
  102 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ST2-cP-6pc" id="Sbp-Hc-H1F">
  103 + <rect key="frame" x="0.0" y="0.0" width="375" height="140"/>
  104 + <autoresizingMask key="autoresizingMask"/>
  105 + <subviews>
  106 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uzU-Fp-mNB">
  107 + <rect key="frame" x="0.0" y="0.0" width="375" height="140"/>
  108 + <subviews>
  109 + <imageView contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="MvT-1n-2RV">
  110 + <rect key="frame" x="147" y="29.5" width="80" height="80"/>
  111 + <gestureRecognizers/>
  112 + <constraints>
  113 + <constraint firstAttribute="height" constant="80" id="ilj-wE-mjh"/>
  114 + <constraint firstAttribute="width" secondItem="MvT-1n-2RV" secondAttribute="height" multiplier="1:1" id="kzh-Ni-nkL"/>
  115 + </constraints>
  116 + </imageView>
  117 + </subviews>
  118 + <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  119 + <constraints>
  120 + <constraint firstItem="MvT-1n-2RV" firstAttribute="centerX" secondItem="uzU-Fp-mNB" secondAttribute="centerX" id="ZHN-Gp-Ij9"/>
  121 + <constraint firstItem="MvT-1n-2RV" firstAttribute="centerY" secondItem="uzU-Fp-mNB" secondAttribute="centerY" id="zuC-Cf-7x2"/>
  122 + </constraints>
  123 + </view>
  124 + </subviews>
  125 + <constraints>
  126 + <constraint firstItem="uzU-Fp-mNB" firstAttribute="top" secondItem="Sbp-Hc-H1F" secondAttribute="top" id="Zyb-Ns-MhD"/>
  127 + <constraint firstAttribute="bottom" secondItem="uzU-Fp-mNB" secondAttribute="bottom" id="jDv-GK-OaY"/>
  128 + <constraint firstItem="uzU-Fp-mNB" firstAttribute="leading" secondItem="Sbp-Hc-H1F" secondAttribute="leading" id="n0L-Ff-SUt"/>
  129 + <constraint firstAttribute="trailing" secondItem="uzU-Fp-mNB" secondAttribute="trailing" id="wYN-Vy-l2u"/>
  130 + </constraints>
  131 + </tableViewCellContentView>
  132 + <connections>
  133 + <outlet property="userPhoto" destination="MvT-1n-2RV" id="xxF-2C-1kE"/>
  134 + </connections>
  135 + </tableViewCell>
  136 + </prototypes>
  137 + <connections>
  138 + <outlet property="dataSource" destination="e3H-9T-9vN" id="UvO-ae-JX9"/>
  139 + <outlet property="delegate" destination="e3H-9T-9vN" id="BbH-AF-6nl"/>
  140 + </connections>
  141 + </tableView>
  142 + </subviews>
  143 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  144 + <constraints>
  145 + <constraint firstAttribute="trailing" secondItem="7cQ-8j-yH7" secondAttribute="trailing" id="NEK-vl-XRa"/>
  146 + <constraint firstItem="xWX-Qt-Zg4" firstAttribute="top" secondItem="7cQ-8j-yH7" secondAttribute="bottom" id="faO-w8-Ha9"/>
  147 + <constraint firstItem="7cQ-8j-yH7" firstAttribute="leading" secondItem="sEf-LI-up1" secondAttribute="leading" id="geO-bM-2Wp"/>
  148 + <constraint firstItem="7cQ-8j-yH7" firstAttribute="top" secondItem="FSu-Pn-e9e" secondAttribute="bottom" id="jn4-oS-0aN"/>
  149 + </constraints>
  150 + </view>
  151 + <connections>
  152 + <outlet property="tableView" destination="7cQ-8j-yH7" id="haS-Sg-rw6"/>
  153 + </connections>
  154 + </viewController>
  155 + <placeholder placeholderIdentifier="IBFirstResponder" id="Ghq-3c-AqX" userLabel="First Responder" sceneMemberID="firstResponder"/>
  156 + </objects>
  157 + <point key="canvasLocation" x="776.79999999999995" y="-130.88455772113943"/>
  158 + </scene>
  159 + <!--App Setting View Controller-->
  160 + <scene sceneID="eJC-vi-wHZ">
  161 + <objects>
  162 + <viewController storyboardIdentifier="AppSettingViewControllerVC" id="DOf-c9-nNw" customClass="AppSettingViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  163 + <layoutGuides>
  164 + <viewControllerLayoutGuide type="top" id="UTZ-Kh-YfO"/>
  165 + <viewControllerLayoutGuide type="bottom" id="ZkS-Lb-DA8"/>
  166 + </layoutGuides>
  167 + <view key="view" contentMode="scaleToFill" id="BaA-H1-b7T">
  168 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  169 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  170 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  171 + </view>
  172 + </viewController>
  173 + <placeholder placeholderIdentifier="IBFirstResponder" id="44z-Sl-H4j" userLabel="First Responder" sceneMemberID="firstResponder"/>
  174 + </objects>
  175 + <point key="canvasLocation" x="1510" y="-131"/>
  176 + </scene>
  177 + <!--History View Controller-->
  178 + <scene sceneID="U2w-Je-5CE">
  179 + <objects>
  180 + <viewController storyboardIdentifier="HistoryViewControllerVC" id="VUt-WI-s3d" customClass="HistoryViewController" customModule="YouerLiveVideo" customModuleProvider="target" sceneMemberID="viewController">
  181 + <layoutGuides>
  182 + <viewControllerLayoutGuide type="top" id="pk3-CA-MMH"/>
  183 + <viewControllerLayoutGuide type="bottom" id="liG-my-8VL"/>
  184 + </layoutGuides>
  185 + <view key="view" contentMode="scaleToFill" id="I80-uH-88Q">
  186 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  187 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  188 + <subviews>
  189 + <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="ik7-C5-cjj">
  190 + <rect key="frame" x="0.0" y="20" width="375" height="647"/>
  191 + <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  192 + <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="UDJ-ZI-WP1">
  193 + <size key="itemSize" width="178" height="213"/>
  194 + <size key="headerReferenceSize" width="0.0" height="0.0"/>
  195 + <size key="footerReferenceSize" width="0.0" height="0.0"/>
  196 + <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
  197 + </collectionViewFlowLayout>
  198 + <cells>
  199 + <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="cell" id="Aw8-Kt-490" customClass="TVStationClassCell" customModule="YouerLiveVideo" customModuleProvider="target">
  200 + <rect key="frame" x="0.0" y="0.0" width="178" height="213"/>
  201 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  202 + <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
  203 + <rect key="frame" x="0.0" y="0.0" width="178" height="213"/>
  204 + <autoresizingMask key="autoresizingMask"/>
  205 + <subviews>
  206 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="92W-L6-BhN">
  207 + <rect key="frame" x="0.0" y="0.0" width="178" height="159"/>
  208 + <constraints>
  209 + <constraint firstAttribute="width" secondItem="92W-L6-BhN" secondAttribute="height" multiplier="178:159" id="2My-SZ-9FI"/>
  210 + </constraints>
  211 + </imageView>
  212 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dZx-RX-5Ft">
  213 + <rect key="frame" x="0.0" y="159" width="178" height="54"/>
  214 + <subviews>
  215 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Lx-WS-Jds">
  216 + <rect key="frame" x="68" y="17" width="42" height="21"/>
  217 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  218 + <nil key="textColor"/>
  219 + <nil key="highlightedColor"/>
  220 + </label>
  221 + </subviews>
  222 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  223 + <constraints>
  224 + <constraint firstItem="3Lx-WS-Jds" firstAttribute="centerY" secondItem="dZx-RX-5Ft" secondAttribute="centerY" id="8xZ-RF-Xo9"/>
  225 + <constraint firstItem="3Lx-WS-Jds" firstAttribute="centerX" secondItem="dZx-RX-5Ft" secondAttribute="centerX" id="Iyc-ze-CXx"/>
  226 + </constraints>
  227 + </view>
  228 + </subviews>
  229 + </view>
  230 + <constraints>
  231 + <constraint firstAttribute="trailing" secondItem="92W-L6-BhN" secondAttribute="trailing" id="Hnf-FP-RYB"/>
  232 + <constraint firstItem="92W-L6-BhN" firstAttribute="leading" secondItem="Aw8-Kt-490" secondAttribute="leading" id="Qsu-Xp-Ezh"/>
  233 + <constraint firstItem="dZx-RX-5Ft" firstAttribute="leading" secondItem="Aw8-Kt-490" secondAttribute="leading" id="UHJ-V1-cnI"/>
  234 + <constraint firstAttribute="bottom" secondItem="dZx-RX-5Ft" secondAttribute="bottom" id="bha-Pa-MlI"/>
  235 + <constraint firstItem="dZx-RX-5Ft" firstAttribute="top" secondItem="92W-L6-BhN" secondAttribute="bottom" id="i5q-Ju-a8n"/>
  236 + <constraint firstAttribute="trailing" secondItem="dZx-RX-5Ft" secondAttribute="trailing" id="q87-7m-rZt"/>
  237 + <constraint firstItem="92W-L6-BhN" firstAttribute="top" secondItem="Aw8-Kt-490" secondAttribute="top" id="xil-Wb-gF6"/>
  238 + </constraints>
  239 + <connections>
  240 + <outlet property="name" destination="3Lx-WS-Jds" id="2cM-U4-yyk"/>
  241 + <outlet property="photo" destination="92W-L6-BhN" id="Vph-ZW-5X7"/>
  242 + </connections>
  243 + </collectionViewCell>
  244 + </cells>
  245 + <connections>
  246 + <outlet property="dataSource" destination="VUt-WI-s3d" id="Jtl-TT-zJd"/>
  247 + <outlet property="delegate" destination="VUt-WI-s3d" id="wNk-pR-x8E"/>
  248 + </connections>
  249 + </collectionView>
  250 + </subviews>
  251 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  252 + <constraints>
  253 + <constraint firstItem="ik7-C5-cjj" firstAttribute="leading" secondItem="I80-uH-88Q" secondAttribute="leading" id="QNX-pO-YVT"/>
  254 + <constraint firstItem="ik7-C5-cjj" firstAttribute="top" secondItem="pk3-CA-MMH" secondAttribute="bottom" id="UPB-FM-dWr"/>
  255 + <constraint firstItem="liG-my-8VL" firstAttribute="top" secondItem="ik7-C5-cjj" secondAttribute="bottom" id="lVo-nK-E5H"/>
  256 + <constraint firstAttribute="trailing" secondItem="ik7-C5-cjj" secondAttribute="trailing" id="qck-4n-jmn"/>
  257 + </constraints>
  258 + </view>
  259 + <connections>
  260 + <outlet property="collectionView" destination="ik7-C5-cjj" id="ZyT-nh-hNI"/>
  261 + </connections>
  262 + </viewController>
  263 + <placeholder placeholderIdentifier="IBFirstResponder" id="XL0-Rz-rxn" userLabel="First Responder" sceneMemberID="firstResponder"/>
  264 + </objects>
  265 + <point key="canvasLocation" x="2237.5999999999999" y="-131.78410794602701"/>
  266 + </scene>
  267 + </scenes>
10 268 </document>
... ...
YouerLiveVideo/YouerLiveVideo/controllers/User/UserEditViewController.swift 0 → 100644
... ... @@ -0,0 +1,211 @@
  1 +//
  2 +// UserEditViewController.swift
  3 +// YouerLiveVideo
  4 +//
  5 +// Created by 左丞 on 2017/5/23.
  6 +// Copyright © 2017年 左丞. All rights reserved.
  7 +//
  8 +
  9 +import UIKit
  10 +
  11 +class UserEditViewController: UIViewController ,UIImagePickerControllerDelegate,UINavigationControllerDelegate{
  12 +
  13 + @IBOutlet weak var tableView: UITableView!
  14 +
  15 +
  16 + var user = AppDelegate.instance().accountManager
  17 + var titleArr:[String] = ["昵称","账号","身份","所属学校"]
  18 + var contentArr:[String] = []
  19 + override func viewDidLoad() {
  20 + super.viewDidLoad()
  21 + setContentArr()
  22 +
  23 + // Do any additional setup after loading the view.
  24 + }
  25 +
  26 + func setContentArr(){
  27 + var ident = ""
  28 + if user.isParent(){
  29 + ident = "家长"
  30 + }else{
  31 + ident = "教师"
  32 + }
  33 + contentArr = [user.name(),user.userid,ident,user.schoolName()]
  34 + }
  35 +
  36 + override func didReceiveMemoryWarning() {
  37 + super.didReceiveMemoryWarning()
  38 + // Dispose of any resources that can be recreated.
  39 + }
  40 +
  41 +
  42 + // MARK: -UIImagePickerControllerDelegate
  43 + func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
  44 + picker.dismiss(animated: true, completion: { () -> Void in
  45 + var oimage = info[UIImagePickerControllerOriginalImage] as? UIImage
  46 + oimage = oimage!.imageScaledToScale()
  47 + let filePath=FilesManager.imageFilePath(String(format:"%f.jpg",Date().timeIntervalSince1970))
  48 + try? UIImageJPEGRepresentation(oimage!,0.7)!.write(to: URL(fileURLWithPath: filePath), options: [.atomic])
  49 + self.updateImage(file: filePath)
  50 + })
  51 + }
  52 + func updateImage(file:String){
  53 + SVProgressHUD.show(withStatus: "图片上传中...")
  54 + SVProgressHUD.setDefaultMaskType(.black)
  55 + AppDelegate.instance().httpServer.uploadFile(file: NSURL(fileURLWithPath: file)) { (str, error) in
  56 + SVProgressHUD.dismiss()
  57 + if error == nil{
  58 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  59 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  60 + let str=json.contentData().arrayValue[0].stringValue
  61 + AppDelegate.instance().httpServer.postUpdateUser(parameters: ["nickname":self.user.name() as AnyObject,"headimg":str as AnyObject], completionHandler: { (str, error) in
  62 + if error == nil{
  63 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  64 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  65 + AppDelegate.instance().accountManager.refreshUserInfo(completionHandler: { (finish) in
  66 + if finish{
  67 + self.user=AppDelegate.instance().accountManager
  68 + self.tableView.reloadData()
  69 + }
  70 + })
  71 + }, failHandler: { (error) in
  72 + self.view.makeToast("头像修改失败")
  73 + })
  74 + }else{
  75 + self.view.makeToast("头像修改失败")
  76 + }
  77 + }
  78 + })
  79 + }, failHandler: { (error) in
  80 + self.view.makeToast("图片上传失败")
  81 + })
  82 + }else{
  83 + self.view.makeToast("图片上传失败")
  84 + }
  85 + }
  86 + }
  87 + }
  88 +
  89 +
  90 + /*
  91 + // MARK: - Navigation
  92 +
  93 + // In a storyboard-based application, you will often want to do a little preparation before navigation
  94 + override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  95 + // Get the new view controller using segue.destinationViewController.
  96 + // Pass the selected object to the new view controller.
  97 + }
  98 + */
  99 +
  100 +}
  101 +
  102 +extension UserEditViewController:UITableViewDelegate,UITableViewDataSource{
  103 +
  104 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  105 + switch indexPath.row {
  106 + case 0:
  107 + let action=UIAlertController(title:"修改头像",message:nil,preferredStyle:UIAlertControllerStyle.actionSheet)
  108 + let photoAction=UIAlertAction(title: "从相册选择", style: UIAlertActionStyle.default) { (action) in
  109 + if cameraOrPhotPermissions(0, view: self.view){
  110 + let vc = UIImagePickerController()
  111 + vc.delegate = self
  112 + vc.sourceType = .photoLibrary
  113 + self.present(vc, animated: true, completion: nil)
  114 + }
  115 + }
  116 + let cancleAction=UIAlertAction(title: "取消", style: UIAlertActionStyle.cancel) { (action) in
  117 + }
  118 + action.addAction(photoAction)
  119 + action.addAction(cancleAction)
  120 + self.present(action, animated: true, completion: nil)
  121 + case 1:
  122 + let alert=UIAlertController(title: "修改昵称", message: nil, preferredStyle: UIAlertControllerStyle.alert)
  123 + let cancle=UIAlertAction(title: "取消", style: UIAlertActionStyle.cancel, handler: nil)
  124 + let get=UIAlertAction(title: "修改", style: UIAlertActionStyle.default, handler: { (action) in
  125 + if alert.textFields![0].text != "" {
  126 + AppDelegate.instance().httpServer.postUpdateUser(parameters: ["nickname":alert.textFields![0].text! as AnyObject,"headimg":self.user.photo() as AnyObject], completionHandler: { (str, error) in
  127 + if error == nil{
  128 + if JSON.fromString(jsonString: str)!["status"].intValue == 1{
  129 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  130 + self.view.makeToast("昵称修改成功")
  131 + AppDelegate.instance().accountManager.refreshUserInfo(completionHandler: { (finish) in
  132 + if finish{
  133 + self.user=AppDelegate.instance().accountManager
  134 + self.setContentArr()
  135 + self.tableView.reloadData()
  136 + }
  137 + })
  138 + }, failHandler: { (error) in
  139 + self.view.makeToast("昵称修改失败")
  140 + })
  141 + }else{
  142 + self.view.makeToast("昵称修改失败")
  143 + }
  144 + }
  145 + })
  146 + }else{
  147 + self.view.makeToast("昵称修改不能为空")
  148 + }
  149 + })
  150 + alert.addTextField(configurationHandler: { (textfield) in
  151 + textfield.placeholder="请输入修改的昵称"
  152 + })
  153 + alert.addAction(cancle)
  154 + alert.addAction(get)
  155 + self.present(alert, animated: true, completion: nil)
  156 + break
  157 + default:
  158 + return
  159 + }
  160 + }
  161 +
  162 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  163 + if indexPath.row == 0{
  164 + let cell = tableView.dequeueReusableCell(withIdentifier: "UserPhotoCell") as! UserPhotoCell
  165 + cell.userPhoto.sd_setImage(with: URL(string:self.user.photo()), placeholderImage: #imageLiteral(resourceName: "defphoto.png"))
  166 + return cell
  167 + }else{
  168 + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! UserEditCell
  169 + cell.titleName.text = titleArr[indexPath.row-1]
  170 + cell.name.text = contentArr[indexPath.row-1]
  171 + if indexPath.row == 0{
  172 + cell.changeBtn.isHidden = false
  173 + cell.changeBtn.tag = indexPath.row+100
  174 + }
  175 + return cell
  176 + }
  177 + }
  178 +
  179 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  180 + return titleArr.count+1
  181 + }
  182 +
  183 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  184 + if indexPath.row == 0{
  185 + return 140
  186 + }
  187 + return 65
  188 + }
  189 +
  190 +
  191 +}
  192 +
  193 +class UserEditCell: UITableViewCell {
  194 +
  195 + @IBOutlet weak var changeBtn: UILabel!
  196 + @IBOutlet weak var titleName: UILabel!
  197 + @IBOutlet weak var name: UILabel!
  198 + override func awakeFromNib() {
  199 + changeBtn.isHidden = true
  200 + }
  201 +}
  202 +
  203 +class UserPhotoCell:UITableViewCell{
  204 +
  205 + @IBOutlet weak var userPhoto: UIImageView!
  206 +
  207 + override func awakeFromNib() {
  208 + userPhoto.layer.cornerRadius = userPhoto.frame.size.height/2
  209 + userPhoto.layer.masksToBounds = true
  210 + }
  211 +}
... ...
YouerLiveVideo/YouerLiveVideo/controllers/User/UserViewController.swift
... ... @@ -10,18 +10,50 @@ import UIKit
10 10  
11 11 class UserViewController: UIViewController {
12 12  
  13 +
  14 + @IBOutlet weak var historyList: UITableView!
  15 + @IBOutlet weak var userName: UILabel!
  16 + @IBOutlet weak var userPhoto: UIImageView!
  17 + var historyType:[String] = ["微课","校园资源库","校园电视台"]
  18 + var isCloseHistoryList:Bool = false
13 19 override func viewDidLoad() {
14 20 super.viewDidLoad()
15 21 self.configTheme()
  22 + self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "radio_s"), style: .plain, target: self, action: #selector(UserViewController.editBtnClick))
  23 + setUserInfor()
16 24 // Do any additional setup after loading the view.
17 25 }
  26 +
  27 + func setUserInfor(){
  28 + userPhoto.layer.cornerRadius = userPhoto.frame.size.height/2
  29 + userPhoto.layer.masksToBounds = true
  30 + userName.text = AppDelegate.instance().accountManager.name()
  31 + userPhoto.sd_setImage(with: URL(string: AppDelegate.instance().accountManager.photo()), placeholderImage: #imageLiteral(resourceName: "defphoto.png"))
  32 +
  33 + }
18 34  
19 35 override func didReceiveMemoryWarning() {
20 36 super.didReceiveMemoryWarning()
21 37 // Dispose of any resources that can be recreated.
22 38 }
23 39  
  40 + @IBAction func userEditClcik(_ sender: Any) {
  41 + print("编译个人资料")
  42 + let vc = Story.instantiateViewControllerWithIdentifier("UserEditViewControllerVC", storyName: "User") as! UserEditViewController
  43 + self.navigationController?.pushViewController(vc, animated: true)
  44 + }
  45 +
  46 + func editBtnClick(){
  47 + print("编译设置")
  48 + let vc = Story.instantiateViewControllerWithIdentifier("AppSettingViewControllerVC", storyName: "User") as! AppSettingViewController
  49 + self.navigationController?.pushViewController(vc, animated: true)
  50 + }
24 51  
  52 + func headerTap(tap:UITapGestureRecognizer){
  53 + isCloseHistoryList = !isCloseHistoryList
  54 + historyList.reloadData()
  55 + }
  56 +
25 57 /*
26 58 // MARK: - Navigation
27 59  
... ... @@ -33,3 +65,78 @@ class UserViewController: UIViewController {
33 65 */
34 66  
35 67 }
  68 +
  69 +extension UserViewController:UITableViewDelegate,UITableViewDataSource{
  70 +
  71 +
  72 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  73 + let vc = Story.instantiateViewControllerWithIdentifier("HistoryViewControllerVC", storyName: "User") as! HistoryViewController
  74 + vc.type = indexPath.row
  75 + vc.title = historyType[indexPath.row]
  76 + self.navigationController?.pushViewController(vc, animated: true)
  77 + }
  78 +
  79 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  80 + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! UserCenterHistoryCell
  81 + cell.titleName.text = historyType[indexPath.row]
  82 + return cell
  83 + }
  84 +
  85 + func numberOfSections(in tableView: UITableView) -> Int {
  86 + return 1
  87 + }
  88 +
  89 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  90 + if isCloseHistoryList {
  91 + return 0
  92 + }
  93 + return historyType.count
  94 + }
  95 +
  96 + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
  97 + let headerView = UIView(frame: CGRect(x: 0, y: 0, width: getScreenWidth(), height: 44))
  98 + headerView.backgroundColor = UIColor.white
  99 + let label = UILabel(frame: CGRect(x: 8, y: headerView.frame.height/2-10, width: 100, height: 21))
  100 + label.text = "历史记录"
  101 + label.sizeToFit()
  102 + headerView.addSubview(label)
  103 +
  104 + let image = UIImageView(frame: CGRect(x: 0, y: 0, width: 9, height: 15))
  105 + image.center = CGPoint(x: getScreenWidth() - 20, y: headerView.frame.height/2)
  106 + image.image = #imageLiteral(resourceName: "arrow")
  107 + image.isUserInteractionEnabled = true
  108 + var angle:Double = 0
  109 + if !isCloseHistoryList{
  110 + angle = M_PI_2
  111 + }
  112 + image.transform = CGAffineTransform(rotationAngle: CGFloat(angle))
  113 + headerView.addSubview(image)
  114 +
  115 + let line = UILabel(frame: CGRect(x: 0, y: headerView.frame.height-1, width: getScreenWidth(), height: 1))
  116 + line.backgroundColor = historyList.backgroundColor
  117 + headerView.addSubview(line)
  118 +
  119 + headerView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(UserViewController.headerTap(tap:))))
  120 + return headerView
  121 + }
  122 +
  123 + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  124 + return 44
  125 + }
  126 +
  127 + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
  128 + return 1
  129 + }
  130 +
  131 +
  132 +
  133 +}
  134 +
  135 +class UserCenterHistoryCell:UITableViewCell{
  136 +
  137 + @IBOutlet weak var titleName: UILabel!
  138 +
  139 +
  140 +
  141 +}
  142 +
... ...
YouerLiveVideo/YouerLiveVideo/util/account.swift
... ... @@ -71,6 +71,20 @@ class AccountManager{
71 71 return ""
72 72 }
73 73  
  74 + func schoolName()->String{
  75 + if let info=rawUserInfo{
  76 + return info.contentData()["f_SchoolName"].stringValue
  77 + }
  78 + return ""
  79 + }
  80 +
  81 + func isParent()->Bool{
  82 + if let info=rawUserInfo{
  83 + return info.contentData()["f_Identity"].boolValue
  84 + }
  85 + return false
  86 + }
  87 +
74 88  
75 89 func logOut(){
76 90 //退出云信登录
... ...