Commit 235e5ed1981a9df19ed17a53afa6b1f2be1fa64c
1 parent
0fcdc1f6
Exists in
newLive
no message
Showing
13 changed files
with
864 additions
and
21 deletions
Show diff stats
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
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 | //退出云信登录 | ... | ... |