Commit 6f06ed3ca1b7535ab55684e24c0bcce410f8f653

Authored by 葛建军
2 parents aa410649 8d05af0c
Exists in newLive

Merge branch 'newLive' of http://git.shunzhi.net/iosgroup/newlive into newLive

YouerLiveVideo/YouerLiveVideo.xcodeproj/project.pbxproj
@@ -46,6 +46,7 @@ @@ -46,6 +46,7 @@
46 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CCE1DE52F7E00B4F7FD /* UMShareMenuSelectionView.m */; }; 46 599B2CE11DE52F7E00B4F7FD /* UMShareMenuSelectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CCE1DE52F7E00B4F7FD /* UMShareMenuSelectionView.m */; };
47 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */; }; 47 599B2CE21DE52F7E00B4F7FD /* UMSocialShareScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */; };
48 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */; }; 48 599B2CE31DE52F7E00B4F7FD /* UMSocialUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */; };
  49 + 59AE3DF91ECE8A90003E2C62 /* pinyin.c in Sources */ = {isa = PBXBuildFile; fileRef = 59AE3DF71ECE8A90003E2C62 /* pinyin.c */; };
49 59BA13251E25CF2B00540DE0 /* AliyunPlayerSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; }; 50 59BA13251E25CF2B00540DE0 /* AliyunPlayerSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; };
50 59BA13271E25CF4B00540DE0 /* AliyunPlayerSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 51 59BA13271E25CF4B00540DE0 /* AliyunPlayerSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
51 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 59BA13301E25D1C000540DE0 /* Reachability.m */; }; 52 59BA13311E25D1C000540DE0 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 59BA13301E25D1C000540DE0 /* Reachability.m */; };
@@ -328,6 +329,8 @@ @@ -328,6 +329,8 @@
328 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialShareScrollView.m; sourceTree = "<group>"; }; 329 599B2CD01DE52F7E00B4F7FD /* UMSocialShareScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialShareScrollView.m; sourceTree = "<group>"; };
329 599B2CD11DE52F7E00B4F7FD /* UMSocialUIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UMSocialUIManager.h; sourceTree = "<group>"; }; 330 599B2CD11DE52F7E00B4F7FD /* UMSocialUIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UMSocialUIManager.h; sourceTree = "<group>"; };
330 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialUIManager.m; sourceTree = "<group>"; }; 331 599B2CD21DE52F7E00B4F7FD /* UMSocialUIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UMSocialUIManager.m; sourceTree = "<group>"; };
  332 + 59AE3DF71ECE8A90003E2C62 /* pinyin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pinyin.c; sourceTree = "<group>"; };
  333 + 59AE3DF81ECE8A90003E2C62 /* pinyin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pinyin.h; sourceTree = "<group>"; };
331 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AliyunPlayerSDK.framework; path = YouerLiveVideo/lib/AliyunPlayerSDK.framework; sourceTree = "<group>"; }; 334 59BA13241E25CF2B00540DE0 /* AliyunPlayerSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AliyunPlayerSDK.framework; path = YouerLiveVideo/lib/AliyunPlayerSDK.framework; sourceTree = "<group>"; };
332 59BA132F1E25D1C000540DE0 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; }; 335 59BA132F1E25D1C000540DE0 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
333 59BA13301E25D1C000540DE0 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; }; 336 59BA13301E25D1C000540DE0 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
@@ -1224,6 +1227,8 @@ @@ -1224,6 +1227,8 @@
1224 children = ( 1227 children = (
1225 BFBB83D41ECC4446008B404B /* PassWordView.swift */, 1228 BFBB83D41ECC4446008B404B /* PassWordView.swift */,
1226 BFBB83D51ECC4446008B404B /* PassWordView.xib */, 1229 BFBB83D51ECC4446008B404B /* PassWordView.xib */,
  1230 + 59AE3DF71ECE8A90003E2C62 /* pinyin.c */,
  1231 + 59AE3DF81ECE8A90003E2C62 /* pinyin.h */,
1227 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */, 1232 59F801A91DD57253000A78B0 /* ZSDSetPasswordView.h */,
1228 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */, 1233 59F801AA1DD57253000A78B0 /* ZSDSetPasswordView.m */,
1229 BFDFDEC81DD55C0D0040F102 /* account.swift */, 1234 BFDFDEC81DD55C0D0040F102 /* account.swift */,
@@ -1497,6 +1502,7 @@ @@ -1497,6 +1502,7 @@
1497 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */, 1502 BF7B75A81E305A6D0011D5C7 /* UIScrollView+MJRefresh.m in Sources */,
1498 BF25E0021DDAA36A003EC0C1 /* UIButton+WebCache.m in Sources */, 1503 BF25E0021DDAA36A003EC0C1 /* UIButton+WebCache.m in Sources */,
1499 BF7B759E1E305A6D0011D5C7 /* MJRefreshBackGifFooter.m in Sources */, 1504 BF7B759E1E305A6D0011D5C7 /* MJRefreshBackGifFooter.m in Sources */,
  1505 + 59AE3DF91ECE8A90003E2C62 /* pinyin.c in Sources */,
1500 BF25DFF81DDAA36A003EC0C1 /* NSData+ImageContentType.m in Sources */, 1506 BF25DFF81DDAA36A003EC0C1 /* NSData+ImageContentType.m in Sources */,
1501 BF25E0151DDAAF73003EC0C1 /* SVIndefiniteAnimatedView.m in Sources */, 1507 BF25E0151DDAAF73003EC0C1 /* SVIndefiniteAnimatedView.m in Sources */,
1502 BFF5F4921DD5B7CA00D33B89 /* SwiftyJSON.swift in Sources */, 1508 BFF5F4921DD5B7CA00D33B89 /* SwiftyJSON.swift in Sources */,
YouerLiveVideo/YouerLiveVideo/YouerLiveVideo-Bridging-Header.h
@@ -25,4 +25,5 @@ @@ -25,4 +25,5 @@
25 #import "Reachability.h" 25 #import "Reachability.h"
26 #import "MJRefresh.h" 26 #import "MJRefresh.h"
27 #import "JYScrollView.h" 27 #import "JYScrollView.h"
  28 +#import "pinyin.h"
28 #endif /* YouerLiveVideo_Bridging_Header_h */ 29 #endif /* YouerLiveVideo_Bridging_Header_h */
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/SearchTVStationListViewController.swift
@@ -8,22 +8,102 @@ @@ -8,22 +8,102 @@
8 8
9 import UIKit 9 import UIKit
10 10
11 -class SearchTVStationListViewController: UIViewController { 11 +class SearchTVStationListViewController: UIViewController,UISearchBarDelegate {
12 var alList:[String] = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] 12 var alList:[String] = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
  13 + var grad:[String] = []
13 14
14 - @IBOutlet weak var selectView: UIView! 15 + @IBOutlet weak var selectTableView: UITableView!
15 16
  17 + @IBOutlet weak var downIcon: UIImageView!
  18 + @IBOutlet weak var gradName: UILabel!
  19 + @IBOutlet weak var tableView: UITableView!
  20 + @IBOutlet weak var selectView: UIView!
  21 + var dataSet:[TVStationInfor] = []
  22 + var dataDic:[String:[TVStationInfor]] = [:]
  23 + var allKeys:[String] = []
16 override func viewDidLoad() { 24 override func viewDidLoad() {
17 super.viewDidLoad() 25 super.viewDidLoad()
  26 + gradName.text = "全部年段"
  27 + tableView.tintColor = UIColor.lightGray
  28 + AppDelegate.instance().httpServer.getAllSchool(parameters: nil) { (str, error) in
  29 + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in
  30 + self.grad.append("全部年段")
  31 + for item in json.contentData().arrayValue{
  32 + self.dataSet.append(TVStationInfor(json: item))
  33 + for (index,gr) in self.grad.enumerated(){
  34 + if item["f_SchoolType"].stringValue == gr{
  35 + break
  36 + }
  37 + if index == self.grad.count-1{
  38 + self.grad.insert(item["f_SchoolType"].stringValue, at: 0)
  39 + }
  40 + }
  41 + }
  42 + self.dataSet = self.dataSet.sorted { (t1, t2) -> Bool in
  43 + return getFirstLetter(str: t1.f_SchoolName) < getFirstLetter(str: t2.f_SchoolName)
  44 + }
  45 + self.sortDataSet(arr: self.dataSet,type: self.grad.last!)
  46 + }, failHandler: { (error) in
  47 +
  48 + })
  49 + }
18 // Do any additional setup after loading the view. 50 // Do any additional setup after loading the view.
19 } 51 }
20 - 52 +
  53 + //在一个的列表选择所有当前要求的年段的列表并放到dic中
  54 + func sortDataSet(arr:[TVStationInfor],type:String){
  55 + dataDic.removeAll()
  56 + var array:[TVStationInfor] = []
  57 + if type == grad.last{
  58 + array = arr
  59 + }else{
  60 + for item in arr {
  61 + if item.f_SchoolType == type{
  62 + array.append(item)
  63 + }
  64 + }
  65 + }
  66 + for al in alList {
  67 + var tmp:[TVStationInfor] = []
  68 + for item in array {
  69 + if getFirstLetter(str: item.f_SchoolName) == al{
  70 + tmp.append(item)
  71 + }
  72 + }
  73 + if tmp.count > 0{
  74 + dataDic.updateValue(tmp, forKey: al)
  75 + }
  76 + }
  77 + allKeys = Array(dataDic.keys).sorted(by: { (s1, s2) -> Bool in
  78 + return s1 < s2
  79 + })
  80 + tableView.reloadData()
  81 + }
  82 +
21 override func didReceiveMemoryWarning() { 83 override func didReceiveMemoryWarning() {
22 super.didReceiveMemoryWarning() 84 super.didReceiveMemoryWarning()
23 // Dispose of any resources that can be recreated. 85 // Dispose of any resources that can be recreated.
24 } 86 }
25 87
26 - 88 + @IBAction func selectGradClick(_ sender: UIButton) {
  89 + selectView.isHidden = false
  90 + selectTableView.reloadData()
  91 + }
  92 +
  93 + //搜索:根据搜索框中内容帅选全部符合的列表
  94 + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
  95 + searchBar.resignFirstResponder()
  96 + if searchBar.text != nil && searchBar.text != ""{
  97 + var arr:[TVStationInfor] = []
  98 + for item in dataSet {
  99 + if item.f_SchoolName.contains(searchBar.text!) {
  100 + arr.append(item)
  101 + }
  102 + }
  103 + sortDataSet(arr: arr, type: gradName.text!)
  104 + }
  105 + }
  106 +
27 /* 107 /*
28 // MARK: - Navigation 108 // MARK: - Navigation
29 109
@@ -38,26 +118,84 @@ class SearchTVStationListViewController: UIViewController { @@ -38,26 +118,84 @@ class SearchTVStationListViewController: UIViewController {
38 118
39 extension SearchTVStationListViewController:UITableViewDataSource,UITableViewDelegate{ 119 extension SearchTVStationListViewController:UITableViewDataSource,UITableViewDelegate{
40 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 120 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
41 - 121 + if tableView == selectTableView{
  122 + selectView.isHidden = true
  123 + gradName.text = grad[indexPath.row]
  124 + sortDataSet(arr: dataSet,type: grad[indexPath.row])
  125 + }
42 } 126 }
43 127
44 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 128 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
45 - return 1 129 + if tableView == selectTableView{
  130 + return grad.count
  131 + }else{
  132 + return dataDic[allKeys[section]]!.count
  133 + }
  134 +
46 } 135 }
47 136
48 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 137 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
49 - let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)  
50 - return cell 138 + if tableView == selectTableView{
  139 + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SearchSelectCell
  140 + cell.selectName.text = grad[indexPath.row]
  141 + return cell
  142 + }else{
  143 + let item = dataDic[allKeys[indexPath.section]]![indexPath.row]
  144 + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SearchTVStationListCell
  145 + cell.stationName.text = item.f_SchoolName
  146 + cell.tvStationImage.sd_setImage(with: URL(string: item.f_Logo), placeholderImage: UIImage(named:"icon"))
  147 + return cell
  148 + }
  149 +
51 } 150 }
52 151
53 func sectionIndexTitles(for tableView: UITableView) -> [String]? { 152 func sectionIndexTitles(for tableView: UITableView) -> [String]? {
54 - return alList+["#"] 153 + if tableView == selectTableView{
  154 + return []
  155 + }else{
  156 + return allKeys+["#"]
  157 + }
  158 +
55 } 159 }
56 160
57 func numberOfSections(in tableView: UITableView) -> Int { 161 func numberOfSections(in tableView: UITableView) -> Int {
58 - return alList.count 162 + if tableView == selectTableView{
  163 + return 1
  164 + }else{
  165 + return dataDic.keys.count
  166 + }
  167 +
  168 + }
  169 +
  170 + func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
  171 + if tableView == selectTableView{
  172 + return nil
  173 + }else{
  174 + return allKeys[section]
  175 + }
59 } 176 }
60 177
  178 + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  179 + if tableView == selectTableView{
  180 + return 0
  181 + }else{
  182 + return 44
  183 + }
  184 + }
  185 +
  186 + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
  187 + return 1
  188 + }
  189 +}
  190 +
  191 +class SearchTVStationListCell: UITableViewCell {
  192 + @IBOutlet weak var stationName: UILabel!
  193 + @IBOutlet weak var tvStationImage: UIImageView!
  194 +
  195 +}
  196 +
  197 +class SearchSelectCell: UITableViewCell {
61 198
  199 + @IBOutlet weak var selectName: UILabel!
62 200
63 } 201 }
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/TVStation.storyboard
@@ -97,196 +97,59 @@ @@ -97,196 +97,59 @@
97 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 97 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
98 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 98 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
99 <subviews> 99 <subviews>
100 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LO5-7p-BlF">  
101 - <rect key="frame" x="0.0" y="92" width="375" height="575"/> 100 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="q0y-9I-pQG">
  101 + <rect key="frame" x="0.0" y="44" width="375" height="48"/>
102 <subviews> 102 <subviews>
103 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pA5-mr-wp5">  
104 - <rect key="frame" x="0.0" y="0.0" width="375" height="48"/> 103 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="REy-qu-6cO">
  104 + <rect key="frame" x="144.5" y="0.0" width="86" height="48"/>
105 <subviews> 105 <subviews>
106 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fd9-K0-dbd">  
107 - <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>  
108 - <state key="normal" title="Button"/>  
109 - </button>  
110 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Unb-Qo-FiA">  
111 - <rect key="frame" x="16" y="0.0" width="343" height="0.0"/>  
112 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
113 - <constraints>  
114 - <constraint firstAttribute="height" id="BI9-34-fQB"/>  
115 - </constraints>  
116 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
117 - <nil key="textColor"/>  
118 - <nil key="highlightedColor"/>  
119 - </label>  
120 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="小学" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rF3-mJ-pPr">  
121 - <rect key="frame" x="169.5" y="13" width="35" height="21"/>  
122 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
123 - <nil key="textColor"/>  
124 - <nil key="highlightedColor"/>  
125 - </label>  
126 - </subviews>  
127 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
128 - <constraints>  
129 - <constraint firstAttribute="bottom" secondItem="fd9-K0-dbd" secondAttribute="bottom" id="6rw-GD-06f"/>  
130 - <constraint firstItem="rF3-mJ-pPr" firstAttribute="centerY" secondItem="pA5-mr-wp5" secondAttribute="centerY" id="Ncu-FL-IUg"/>  
131 - <constraint firstItem="fd9-K0-dbd" firstAttribute="top" secondItem="pA5-mr-wp5" secondAttribute="top" id="S2u-C5-cpE"/>  
132 - <constraint firstAttribute="trailing" secondItem="Unb-Qo-FiA" secondAttribute="trailing" constant="16" id="Wee-qc-CcZ"/>  
133 - <constraint firstAttribute="trailing" secondItem="fd9-K0-dbd" secondAttribute="trailing" id="Wz9-N2-5FD"/>  
134 - <constraint firstAttribute="height" constant="48" id="YGb-kx-Bvs"/>  
135 - <constraint firstItem="Unb-Qo-FiA" firstAttribute="leading" secondItem="pA5-mr-wp5" secondAttribute="leading" constant="16" id="eAi-qh-uTW"/>  
136 - <constraint firstItem="fd9-K0-dbd" firstAttribute="leading" secondItem="pA5-mr-wp5" secondAttribute="leading" id="lsn-sl-gUI"/>  
137 - <constraint firstItem="rF3-mJ-pPr" firstAttribute="centerX" secondItem="pA5-mr-wp5" secondAttribute="centerX" id="sKe-eU-InU"/>  
138 - <constraint firstItem="Unb-Qo-FiA" firstAttribute="top" secondItem="pA5-mr-wp5" secondAttribute="top" id="zmH-Rb-P8G"/>  
139 - </constraints>  
140 - </view>  
141 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pKJ-J9-5CR">  
142 - <rect key="frame" x="0.0" y="48" width="375" height="48"/>  
143 - <subviews>  
144 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="veE-AU-inD">  
145 - <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>  
146 - <state key="normal" title="Button"/>  
147 - </button>  
148 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ma4-Vs-Ai5">  
149 - <rect key="frame" x="16" y="0.0" width="343" height="0.0"/>  
150 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
151 - <constraints>  
152 - <constraint firstAttribute="height" id="jyL-SO-bbs"/>  
153 - </constraints>  
154 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
155 - <nil key="textColor"/>  
156 - <nil key="highlightedColor"/>  
157 - </label>  
158 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="初中" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FLD-Vw-eZ9">  
159 - <rect key="frame" x="169.5" y="13" width="35" height="21"/> 106 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EkU-OV-GCU">
  107 + <rect key="frame" x="8" y="13" width="42" height="21"/>
160 <fontDescription key="fontDescription" type="system" pointSize="17"/> 108 <fontDescription key="fontDescription" type="system" pointSize="17"/>
161 <nil key="textColor"/> 109 <nil key="textColor"/>
162 <nil key="highlightedColor"/> 110 <nil key="highlightedColor"/>
163 </label> 111 </label>
164 - </subviews>  
165 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
166 - <constraints>  
167 - <constraint firstItem="ma4-Vs-Ai5" firstAttribute="top" secondItem="pKJ-J9-5CR" secondAttribute="top" id="Em3-dK-r7A"/>  
168 - <constraint firstItem="veE-AU-inD" firstAttribute="top" secondItem="pKJ-J9-5CR" secondAttribute="top" id="FHs-Rr-oDw"/>  
169 - <constraint firstItem="FLD-Vw-eZ9" firstAttribute="centerX" secondItem="pKJ-J9-5CR" secondAttribute="centerX" id="MaF-vn-NFk"/>  
170 - <constraint firstItem="FLD-Vw-eZ9" firstAttribute="centerY" secondItem="pKJ-J9-5CR" secondAttribute="centerY" id="OSS-PS-lIG"/>  
171 - <constraint firstAttribute="trailing" secondItem="ma4-Vs-Ai5" secondAttribute="trailing" constant="16" id="TK9-u0-NYJ"/>  
172 - <constraint firstAttribute="trailing" secondItem="veE-AU-inD" secondAttribute="trailing" id="he0-3w-aKO"/>  
173 - <constraint firstItem="ma4-Vs-Ai5" firstAttribute="leading" secondItem="pKJ-J9-5CR" secondAttribute="leading" constant="16" id="hvr-W0-KtG"/>  
174 - <constraint firstItem="veE-AU-inD" firstAttribute="leading" secondItem="pKJ-J9-5CR" secondAttribute="leading" id="iIG-ef-wiQ"/>  
175 - <constraint firstAttribute="bottom" secondItem="veE-AU-inD" secondAttribute="bottom" id="nnX-Fn-UsA"/>  
176 - <constraint firstAttribute="height" constant="48" id="zHI-3d-Hhy"/>  
177 - </constraints>  
178 - </view>  
179 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jQ0-hJ-LW9">  
180 - <rect key="frame" x="0.0" y="96" width="375" height="48"/>  
181 - <subviews>  
182 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rrk-re-JuF">  
183 - <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>  
184 - <state key="normal" title="Button"/>  
185 - </button>  
186 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TwL-7i-SFE">  
187 - <rect key="frame" x="16" y="0.0" width="343" height="0.0"/>  
188 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> 112 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="30V-Xl-lRB">
  113 + <rect key="frame" x="58" y="14" width="20" height="20"/>
189 <constraints> 114 <constraints>
190 - <constraint firstAttribute="height" id="wf7-2t-CcQ"/> 115 + <constraint firstAttribute="height" constant="20" id="5L5-sW-hMu"/>
  116 + <constraint firstAttribute="width" secondItem="30V-Xl-lRB" secondAttribute="height" multiplier="1:1" id="MYE-j0-EQV"/>
191 </constraints> 117 </constraints>
192 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
193 - <nil key="textColor"/>  
194 - <nil key="highlightedColor"/>  
195 - </label>  
196 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="高中" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bx3-SK-e4z">  
197 - <rect key="frame" x="169.5" y="13" width="35" height="21"/>  
198 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
199 - <nil key="textColor"/>  
200 - <nil key="highlightedColor"/>  
201 - </label> 118 + </imageView>
202 </subviews> 119 </subviews>
203 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 120 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
204 <constraints> 121 <constraints>
205 - <constraint firstAttribute="bottom" secondItem="rrk-re-JuF" secondAttribute="bottom" id="1aG-FJ-kgi"/>  
206 - <constraint firstItem="rrk-re-JuF" firstAttribute="top" secondItem="jQ0-hJ-LW9" secondAttribute="top" id="4mU-tH-19D"/>  
207 - <constraint firstItem="rrk-re-JuF" firstAttribute="leading" secondItem="jQ0-hJ-LW9" secondAttribute="leading" id="8FP-Fd-szb"/>  
208 - <constraint firstAttribute="trailing" secondItem="TwL-7i-SFE" secondAttribute="trailing" constant="16" id="FJF-cd-6MQ"/>  
209 - <constraint firstItem="TwL-7i-SFE" firstAttribute="top" secondItem="jQ0-hJ-LW9" secondAttribute="top" id="HJS-18-xud"/>  
210 - <constraint firstAttribute="height" constant="48" id="L2i-9Z-Zje"/>  
211 - <constraint firstItem="TwL-7i-SFE" firstAttribute="leading" secondItem="jQ0-hJ-LW9" secondAttribute="leading" constant="16" id="WjE-rt-bZ1"/>  
212 - <constraint firstAttribute="trailing" secondItem="rrk-re-JuF" secondAttribute="trailing" id="ech-I6-0JJ"/>  
213 - <constraint firstItem="bx3-SK-e4z" firstAttribute="centerX" secondItem="jQ0-hJ-LW9" secondAttribute="centerX" id="l2K-Ec-fBQ"/>  
214 - <constraint firstItem="bx3-SK-e4z" firstAttribute="centerY" secondItem="jQ0-hJ-LW9" secondAttribute="centerY" id="yXB-yv-iX2"/>  
215 - </constraints>  
216 - </view>  
217 - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PdH-vs-Gjn">  
218 - <rect key="frame" x="0.0" y="144" width="375" height="48"/>  
219 - <subviews>  
220 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bqH-ub-Nyu">  
221 - <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>  
222 - <state key="normal" title="Button"/>  
223 - </button>  
224 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BGW-tg-2H6">  
225 - <rect key="frame" x="16" y="0.0" width="343" height="0.0"/>  
226 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>  
227 - <constraints>  
228 - <constraint firstAttribute="height" id="eIc-hV-0qY"/>  
229 - </constraints>  
230 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
231 - <nil key="textColor"/>  
232 - <nil key="highlightedColor"/>  
233 - </label>  
234 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="全部学段" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VfQ-qt-gdx">  
235 - <rect key="frame" x="152.5" y="13" width="69.5" height="21"/>  
236 - <fontDescription key="fontDescription" type="system" pointSize="17"/>  
237 - <nil key="textColor"/>  
238 - <nil key="highlightedColor"/>  
239 - </label>  
240 - </subviews>  
241 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>  
242 - <constraints>  
243 - <constraint firstItem="BGW-tg-2H6" firstAttribute="leading" secondItem="PdH-vs-Gjn" secondAttribute="leading" constant="16" id="46b-DV-o1H"/>  
244 - <constraint firstAttribute="trailing" secondItem="bqH-ub-Nyu" secondAttribute="trailing" id="8sC-if-wSg"/>  
245 - <constraint firstAttribute="height" constant="48" id="Kcs-Jq-OVL"/>  
246 - <constraint firstItem="VfQ-qt-gdx" firstAttribute="centerY" secondItem="PdH-vs-Gjn" secondAttribute="centerY" id="OqZ-vB-B5C"/>  
247 - <constraint firstAttribute="trailing" secondItem="BGW-tg-2H6" secondAttribute="trailing" constant="16" id="Rw7-eI-JeT"/>  
248 - <constraint firstItem="VfQ-qt-gdx" firstAttribute="centerX" secondItem="PdH-vs-Gjn" secondAttribute="centerX" id="UYW-un-bnL"/>  
249 - <constraint firstItem="bqH-ub-Nyu" firstAttribute="leading" secondItem="PdH-vs-Gjn" secondAttribute="leading" id="gA6-4E-cUz"/>  
250 - <constraint firstAttribute="bottom" secondItem="bqH-ub-Nyu" secondAttribute="bottom" id="kIr-4b-3GM"/>  
251 - <constraint firstItem="BGW-tg-2H6" firstAttribute="top" secondItem="PdH-vs-Gjn" secondAttribute="top" id="waV-La-z9s"/>  
252 - <constraint firstItem="bqH-ub-Nyu" firstAttribute="top" secondItem="PdH-vs-Gjn" secondAttribute="top" id="z5F-fk-r4o"/> 122 + <constraint firstItem="EkU-OV-GCU" firstAttribute="leading" secondItem="REy-qu-6cO" secondAttribute="leading" constant="8" id="BP2-0y-W2m"/>
  123 + <constraint firstItem="30V-Xl-lRB" firstAttribute="leading" secondItem="EkU-OV-GCU" secondAttribute="trailing" constant="8" id="MuH-Ax-jK5"/>
  124 + <constraint firstAttribute="height" constant="48" id="Wyu-Lq-o7c"/>
  125 + <constraint firstItem="30V-Xl-lRB" firstAttribute="centerY" secondItem="REy-qu-6cO" secondAttribute="centerY" id="ere-Pn-a1S"/>
  126 + <constraint firstAttribute="trailing" secondItem="30V-Xl-lRB" secondAttribute="trailing" constant="8" id="oCN-2l-mHX"/>
  127 + <constraint firstItem="EkU-OV-GCU" firstAttribute="centerY" secondItem="REy-qu-6cO" secondAttribute="centerY" id="veC-Ip-0YS"/>
253 </constraints> 128 </constraints>
254 </view> 129 </view>
  130 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DWH-iG-AGA">
  131 + <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
  132 + <connections>
  133 + <action selector="selectGradClick:" destination="zPk-GV-x5H" eventType="touchUpInside" id="mFn-6w-fBL"/>
  134 + </connections>
  135 + </button>
255 </subviews> 136 </subviews>
256 - <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> 137 + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
257 <constraints> 138 <constraints>
258 - <constraint firstItem="pKJ-J9-5CR" firstAttribute="top" secondItem="pA5-mr-wp5" secondAttribute="bottom" id="As5-CP-OI8"/>  
259 - <constraint firstItem="PdH-vs-Gjn" firstAttribute="leading" secondItem="LO5-7p-BlF" secondAttribute="leading" id="EiX-RE-2mV"/>  
260 - <constraint firstItem="pA5-mr-wp5" firstAttribute="leading" secondItem="LO5-7p-BlF" secondAttribute="leading" id="NGc-W1-gFS"/>  
261 - <constraint firstItem="jQ0-hJ-LW9" firstAttribute="top" secondItem="pKJ-J9-5CR" secondAttribute="bottom" id="Rxs-mm-zbn"/>  
262 - <constraint firstItem="jQ0-hJ-LW9" firstAttribute="leading" secondItem="LO5-7p-BlF" secondAttribute="leading" id="SBR-LH-mkw"/>  
263 - <constraint firstItem="PdH-vs-Gjn" firstAttribute="top" secondItem="jQ0-hJ-LW9" secondAttribute="bottom" id="gRO-D5-TbH"/>  
264 - <constraint firstItem="pKJ-J9-5CR" firstAttribute="leading" secondItem="LO5-7p-BlF" secondAttribute="leading" id="krW-ip-UgT"/>  
265 - <constraint firstAttribute="trailing" secondItem="pA5-mr-wp5" secondAttribute="trailing" id="n92-8Z-2xl"/>  
266 - <constraint firstAttribute="trailing" secondItem="PdH-vs-Gjn" secondAttribute="trailing" id="nWt-wP-1JQ"/>  
267 - <constraint firstItem="pA5-mr-wp5" firstAttribute="top" secondItem="LO5-7p-BlF" secondAttribute="top" id="nsI-me-a5D"/>  
268 - <constraint firstAttribute="trailing" secondItem="pKJ-J9-5CR" secondAttribute="trailing" id="pqL-tc-0qy"/>  
269 - <constraint firstAttribute="trailing" secondItem="jQ0-hJ-LW9" secondAttribute="trailing" id="yc8-tE-p0i"/> 139 + <constraint firstAttribute="bottom" secondItem="DWH-iG-AGA" secondAttribute="bottom" id="BB2-Ef-8Oz"/>
  140 + <constraint firstItem="DWH-iG-AGA" firstAttribute="top" secondItem="q0y-9I-pQG" secondAttribute="top" id="KdR-z6-VcZ"/>
  141 + <constraint firstItem="REy-qu-6cO" firstAttribute="top" secondItem="q0y-9I-pQG" secondAttribute="top" id="YeU-Ex-rj0"/>
  142 + <constraint firstAttribute="trailing" secondItem="DWH-iG-AGA" secondAttribute="trailing" id="eW0-uW-isJ"/>
  143 + <constraint firstAttribute="height" constant="48" id="u0w-Ne-gDI"/>
  144 + <constraint firstItem="DWH-iG-AGA" firstAttribute="leading" secondItem="q0y-9I-pQG" secondAttribute="leading" id="z34-2n-v3C"/>
  145 + <constraint firstItem="REy-qu-6cO" firstAttribute="centerX" secondItem="q0y-9I-pQG" secondAttribute="centerX" id="zoe-K7-XTj"/>
270 </constraints> 146 </constraints>
271 </view> 147 </view>
272 - <searchBar contentMode="redraw" placeholder="搜索" translatesAutoresizingMaskIntoConstraints="NO" id="ChK-me-hP6">  
273 - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>  
274 - <constraints>  
275 - <constraint firstAttribute="height" constant="44" id="wzh-nF-6vU"/>  
276 - </constraints>  
277 - <textInputTraits key="textInputTraits"/>  
278 - </searchBar>  
279 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DWH-iG-AGA">  
280 - <rect key="frame" x="0.0" y="44" width="375" height="48"/>  
281 - <constraints>  
282 - <constraint firstAttribute="height" constant="48" id="ikm-dk-mzG"/>  
283 - </constraints>  
284 - </button>  
285 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="123" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="o4U-1y-nqL"> 148 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="123" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="o4U-1y-nqL">
286 <rect key="frame" x="0.0" y="92" width="375" height="575"/> 149 <rect key="frame" x="0.0" y="92" width="375" height="575"/>
287 - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 150 + <color key="backgroundColor" red="0.93503493069999999" green="0.93562394380000002" blue="0.96585971120000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
288 <prototypes> 151 <prototypes>
289 - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="123" id="MMn-tR-I0v"> 152 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" rowHeight="123" id="MMn-tR-I0v" customClass="SearchTVStationListCell" customModule="YouerLiveVideo" customModuleProvider="target">
290 <rect key="frame" x="0.0" y="28" width="375" height="123"/> 153 <rect key="frame" x="0.0" y="28" width="375" height="123"/>
291 <autoresizingMask key="autoresizingMask"/> 154 <autoresizingMask key="autoresizingMask"/>
292 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MMn-tR-I0v" id="H7d-Zz-WAS"> 155 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MMn-tR-I0v" id="H7d-Zz-WAS">
@@ -326,6 +189,11 @@ @@ -326,6 +189,11 @@
326 <constraint firstItem="9Yk-8z-nas" firstAttribute="top" secondItem="H7d-Zz-WAS" secondAttribute="top" constant="4" id="vne-hK-wLf"/> 189 <constraint firstItem="9Yk-8z-nas" firstAttribute="top" secondItem="H7d-Zz-WAS" secondAttribute="top" constant="4" id="vne-hK-wLf"/>
327 </constraints> 190 </constraints>
328 </tableViewCellContentView> 191 </tableViewCellContentView>
  192 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
  193 + <connections>
  194 + <outlet property="stationName" destination="Lnl-RY-Pw3" id="0S0-Kr-H0X"/>
  195 + <outlet property="tvStationImage" destination="IYQ-S7-ka2" id="m9f-mQ-TFc"/>
  196 + </connections>
329 </tableViewCell> 197 </tableViewCell>
330 </prototypes> 198 </prototypes>
331 <connections> 199 <connections>
@@ -333,27 +201,87 @@ @@ -333,27 +201,87 @@
333 <outlet property="delegate" destination="zPk-GV-x5H" id="30K-a5-vlb"/> 201 <outlet property="delegate" destination="zPk-GV-x5H" id="30K-a5-vlb"/>
334 </connections> 202 </connections>
335 </tableView> 203 </tableView>
  204 + <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LO5-7p-BlF">
  205 + <rect key="frame" x="0.0" y="92" width="375" height="575"/>
  206 + <subviews>
  207 + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="IbJ-62-QUz">
  208 + <rect key="frame" x="0.0" y="0.0" width="375" height="575"/>
  209 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
  210 + <prototypes>
  211 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="cell" id="1Ns-5p-fDD" customClass="SearchSelectCell" customModule="YouerLiveVideo" customModuleProvider="target">
  212 + <rect key="frame" x="0.0" y="28" width="375" height="44"/>
  213 + <autoresizingMask key="autoresizingMask"/>
  214 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1Ns-5p-fDD" id="vyn-xK-ILQ">
  215 + <rect key="frame" x="0.0" y="0.0" width="375" height="43"/>
  216 + <autoresizingMask key="autoresizingMask"/>
  217 + <subviews>
  218 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vrU-H8-dYc">
  219 + <rect key="frame" x="166" y="11" width="42" height="21"/>
  220 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
  221 + <nil key="textColor"/>
  222 + <nil key="highlightedColor"/>
  223 + </label>
  224 + </subviews>
  225 + <constraints>
  226 + <constraint firstItem="vrU-H8-dYc" firstAttribute="centerX" secondItem="vyn-xK-ILQ" secondAttribute="centerX" id="5wV-xH-hMA"/>
  227 + <constraint firstItem="vrU-H8-dYc" firstAttribute="centerY" secondItem="vyn-xK-ILQ" secondAttribute="centerY" id="zWG-wG-2M2"/>
  228 + </constraints>
  229 + </tableViewCellContentView>
  230 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
  231 + <connections>
  232 + <outlet property="selectName" destination="vrU-H8-dYc" id="ywV-L6-dGm"/>
  233 + </connections>
  234 + </tableViewCell>
  235 + </prototypes>
  236 + <connections>
  237 + <outlet property="dataSource" destination="zPk-GV-x5H" id="i24-vK-mDm"/>
  238 + <outlet property="delegate" destination="zPk-GV-x5H" id="oP3-9x-9qA"/>
  239 + </connections>
  240 + </tableView>
  241 + </subviews>
  242 + <color key="backgroundColor" white="0.66666666666666663" alpha="0.50786493288590606" colorSpace="calibratedWhite"/>
  243 + <constraints>
  244 + <constraint firstItem="IbJ-62-QUz" firstAttribute="leading" secondItem="LO5-7p-BlF" secondAttribute="leading" id="JAu-J6-dIy"/>
  245 + <constraint firstAttribute="bottom" secondItem="IbJ-62-QUz" secondAttribute="bottom" id="JKF-1f-M6c"/>
  246 + <constraint firstAttribute="trailing" secondItem="IbJ-62-QUz" secondAttribute="trailing" id="KD6-Yw-jTW"/>
  247 + <constraint firstItem="IbJ-62-QUz" firstAttribute="top" secondItem="LO5-7p-BlF" secondAttribute="top" id="o12-8S-W6V"/>
  248 + </constraints>
  249 + </view>
  250 + <searchBar contentMode="redraw" placeholder="搜索" translatesAutoresizingMaskIntoConstraints="NO" id="ChK-me-hP6">
  251 + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
  252 + <constraints>
  253 + <constraint firstAttribute="height" constant="44" id="wzh-nF-6vU"/>
  254 + </constraints>
  255 + <textInputTraits key="textInputTraits"/>
  256 + <connections>
  257 + <outlet property="delegate" destination="zPk-GV-x5H" id="KiT-X3-fSi"/>
  258 + </connections>
  259 + </searchBar>
336 </subviews> 260 </subviews>
337 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 261 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
338 <constraints> 262 <constraints>
339 <constraint firstAttribute="trailing" secondItem="o4U-1y-nqL" secondAttribute="trailing" id="6aw-Wu-lvQ"/> 263 <constraint firstAttribute="trailing" secondItem="o4U-1y-nqL" secondAttribute="trailing" id="6aw-Wu-lvQ"/>
  264 + <constraint firstItem="q0y-9I-pQG" firstAttribute="top" secondItem="ChK-me-hP6" secondAttribute="bottom" id="BKw-ks-FzH"/>
340 <constraint firstItem="LO5-7p-BlF" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="NYD-jI-WGE"/> 265 <constraint firstItem="LO5-7p-BlF" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="NYD-jI-WGE"/>
341 - <constraint firstItem="DWH-iG-AGA" firstAttribute="top" secondItem="ChK-me-hP6" secondAttribute="bottom" id="OJG-ox-1L1"/>  
342 - <constraint firstItem="DWH-iG-AGA" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="TKP-Gf-d9n"/> 266 + <constraint firstItem="LO5-7p-BlF" firstAttribute="top" secondItem="q0y-9I-pQG" secondAttribute="bottom" id="OlM-Cx-1Pu"/>
  267 + <constraint firstItem="q0y-9I-pQG" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="R3W-MX-aXd"/>
343 <constraint firstItem="14l-HJ-g5s" firstAttribute="top" secondItem="LO5-7p-BlF" secondAttribute="bottom" id="VFT-qT-lpJ"/> 268 <constraint firstItem="14l-HJ-g5s" firstAttribute="top" secondItem="LO5-7p-BlF" secondAttribute="bottom" id="VFT-qT-lpJ"/>
344 <constraint firstAttribute="trailing" secondItem="LO5-7p-BlF" secondAttribute="trailing" id="Vi7-T1-ipE"/> 269 <constraint firstAttribute="trailing" secondItem="LO5-7p-BlF" secondAttribute="trailing" id="Vi7-T1-ipE"/>
  270 + <constraint firstItem="o4U-1y-nqL" firstAttribute="top" secondItem="q0y-9I-pQG" secondAttribute="bottom" id="bZr-dz-CRh"/>
  271 + <constraint firstAttribute="trailing" secondItem="q0y-9I-pQG" secondAttribute="trailing" id="d9O-y7-yDw"/>
345 <constraint firstItem="ChK-me-hP6" firstAttribute="top" secondItem="cjj-7m-eAq" secondAttribute="top" id="dpW-I0-30v"/> 272 <constraint firstItem="ChK-me-hP6" firstAttribute="top" secondItem="cjj-7m-eAq" secondAttribute="top" id="dpW-I0-30v"/>
346 <constraint firstItem="14l-HJ-g5s" firstAttribute="top" secondItem="o4U-1y-nqL" secondAttribute="bottom" id="fSk-oc-iab"/> 273 <constraint firstItem="14l-HJ-g5s" firstAttribute="top" secondItem="o4U-1y-nqL" secondAttribute="bottom" id="fSk-oc-iab"/>
347 - <constraint firstAttribute="trailing" secondItem="DWH-iG-AGA" secondAttribute="trailing" id="hha-QC-DTt"/>  
348 <constraint firstItem="o4U-1y-nqL" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="j5g-by-76o"/> 274 <constraint firstItem="o4U-1y-nqL" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="j5g-by-76o"/>
349 - <constraint firstItem="LO5-7p-BlF" firstAttribute="top" secondItem="DWH-iG-AGA" secondAttribute="bottom" id="om1-z7-AYr"/>  
350 <constraint firstAttribute="trailing" secondItem="ChK-me-hP6" secondAttribute="trailing" id="pC3-2b-J0P"/> 275 <constraint firstAttribute="trailing" secondItem="ChK-me-hP6" secondAttribute="trailing" id="pC3-2b-J0P"/>
351 <constraint firstItem="ChK-me-hP6" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="uMH-Xr-Czy"/> 276 <constraint firstItem="ChK-me-hP6" firstAttribute="leading" secondItem="cjj-7m-eAq" secondAttribute="leading" id="uMH-Xr-Czy"/>
352 - <constraint firstItem="o4U-1y-nqL" firstAttribute="top" secondItem="DWH-iG-AGA" secondAttribute="bottom" id="zEQ-6J-fPf"/>  
353 </constraints> 277 </constraints>
354 </view> 278 </view>
355 <connections> 279 <connections>
  280 + <outlet property="downIcon" destination="30V-Xl-lRB" id="GHM-Kf-F2D"/>
  281 + <outlet property="gradName" destination="EkU-OV-GCU" id="1x2-I5-Dmb"/>
  282 + <outlet property="selectTableView" destination="IbJ-62-QUz" id="g3g-lN-96y"/>
356 <outlet property="selectView" destination="LO5-7p-BlF" id="BCJ-8J-krQ"/> 283 <outlet property="selectView" destination="LO5-7p-BlF" id="BCJ-8J-krQ"/>
  284 + <outlet property="tableView" destination="o4U-1y-nqL" id="mW2-XQ-YbM"/>
357 </connections> 285 </connections>
358 </viewController> 286 </viewController>
359 <placeholder placeholderIdentifier="IBFirstResponder" id="aje-z7-dD9" userLabel="First Responder" sceneMemberID="firstResponder"/> 287 <placeholder placeholderIdentifier="IBFirstResponder" id="aje-z7-dD9" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -384,8 +312,8 @@ @@ -384,8 +312,8 @@
384 <nil key="textColor"/> 312 <nil key="textColor"/>
385 <nil key="highlightedColor"/> 313 <nil key="highlightedColor"/>
386 </label> 314 </label>
387 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="创建时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tOg-Dx-FMX">  
388 - <rect key="frame" x="16" y="303" width="69.5" height="21"/> 315 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="创建时间:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tOg-Dx-FMX">
  316 + <rect key="frame" x="16" y="303" width="74" height="21"/>
389 <fontDescription key="fontDescription" type="system" pointSize="17"/> 317 <fontDescription key="fontDescription" type="system" pointSize="17"/>
390 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> 318 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
391 <nil key="highlightedColor"/> 319 <nil key="highlightedColor"/>
@@ -419,7 +347,6 @@ @@ -419,7 +347,6 @@
419 <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" editable="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="Nwx-qi-TmG"> 347 <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" editable="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="Nwx-qi-TmG">
420 <rect key="frame" x="16" y="0.0" width="343" height="290"/> 348 <rect key="frame" x="16" y="0.0" width="343" height="290"/>
421 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 349 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
422 - <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.阿萨德会卡死对方不懂撒八十 按时 啊施工方按时啊 按时按时按时按时按时按时按时按时啊啊发送按时按时按时阿萨斯按时按时阿斯顿发的说法是发送到发送到发斯蒂芬啊啊的所发生的法守法的司法手段办公室的风格无法改变第三方合法工本费撒da.阿萨德会卡死对方不懂撒八十 按时 啊施工方按时啊 按时按时按时按时按时按时按时按时啊啊发送按时按时按时阿萨斯按时按时阿斯顿发的说法是发送到发送到发斯蒂芬啊啊的所发生的法守法的司法手段办公室的风格无法改变第三方合法工本费撒</string>  
423 <fontDescription key="fontDescription" type="system" pointSize="15"/> 350 <fontDescription key="fontDescription" type="system" pointSize="15"/>
424 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> 351 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
425 </textView> 352 </textView>
@@ -433,7 +360,7 @@ @@ -433,7 +360,7 @@
433 </constraints> 360 </constraints>
434 </view> 361 </view>
435 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="04n-fF-iSZ"> 362 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="04n-fF-iSZ">
436 - <rect key="frame" x="93" y="303" width="42" height="21"/> 363 + <rect key="frame" x="97.5" y="303" width="42" height="21"/>
437 <fontDescription key="fontDescription" type="system" pointSize="17"/> 364 <fontDescription key="fontDescription" type="system" pointSize="17"/>
438 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> 365 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
439 <nil key="highlightedColor"/> 366 <nil key="highlightedColor"/>
YouerLiveVideo/YouerLiveVideo/controllers/TVStation/TVStationViewController.swift
@@ -19,11 +19,13 @@ class TVStationViewController: UIViewController { @@ -19,11 +19,13 @@ class TVStationViewController: UIViewController {
19 super.viewDidLoad() 19 super.viewDidLoad()
20 self.configTheme() 20 self.configTheme()
21 getDataList() 21 getDataList()
  22 + self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .search, target: self, action: #selector(TVStationViewController.pushToSeachViewController))
22 // Do any additional setup after loading the view. 23 // Do any additional setup after loading the view.
23 } 24 }
24 25
25 func pushToSeachViewController(){ 26 func pushToSeachViewController(){
26 let vc = Story.instantiateViewControllerWithIdentifier("SearchTVStationListViewControllerVC", storyName: "TVStation") as! SearchTVStationListViewController 27 let vc = Story.instantiateViewControllerWithIdentifier("SearchTVStationListViewControllerVC", storyName: "TVStation") as! SearchTVStationListViewController
  28 + vc.title = "搜索电视台"
27 self.navigationController?.pushViewController(vc, animated: true) 29 self.navigationController?.pushViewController(vc, animated: true)
28 } 30 }
29 31
@@ -194,6 +196,7 @@ class TVStationViewControllerCollectionCell:UICollectionViewCell{ @@ -194,6 +196,7 @@ class TVStationViewControllerCollectionCell:UICollectionViewCell{
194 } 196 }
195 197
196 class TVStationInfor { 198 class TVStationInfor {
  199 + var f_SchoolType:String!
197 var f_Id:String! //标识字段,Guid标识 , 200 var f_Id:String! //标识字段,Guid标识 ,
198 var f_DeleteMark:Bool = false //删除标识,1-已删除 , 201 var f_DeleteMark:Bool = false //删除标识,1-已删除 ,
199 var f_CreatorTime:String!//创建时间 , 202 var f_CreatorTime:String!//创建时间 ,
@@ -210,6 +213,7 @@ class TVStationInfor { @@ -210,6 +213,7 @@ class TVStationInfor {
210 var f_Url:String!// 机构地址 213 var f_Url:String!// 机构地址
211 214
212 init(json:JSON){ 215 init(json:JSON){
  216 + f_SchoolType = json["f_SchoolType"].stringValue
213 f_Id = json["f_Id"].stringValue 217 f_Id = json["f_Id"].stringValue
214 f_DeleteMark = json["f_DeleteMark"].boolValue 218 f_DeleteMark = json["f_DeleteMark"].boolValue
215 f_CreatorTime = json["f_CreatorTime"].stringValue 219 f_CreatorTime = json["f_CreatorTime"].stringValue
YouerLiveVideo/YouerLiveVideo/util/network.swift
@@ -124,6 +124,10 @@ final class HTTPServer{ @@ -124,6 +124,10 @@ final class HTTPServer{
124 static let URL_COURSEGETTESTCATAGORY=HOST+"/api/Course/GetTestCatagory" //获取考点目录(已初始化成ztree所要求的格式) 124 static let URL_COURSEGETTESTCATAGORY=HOST+"/api/Course/GetTestCatagory" //获取考点目录(已初始化成ztree所要求的格式)
125 static let URL_COURSEGETTELEVISIONSTATIONCATAGORY=HOST+"/api/Course/GetTelevisionStationCatagory" //获取电视台目录 125 static let URL_COURSEGETTELEVISIONSTATIONCATAGORY=HOST+"/api/Course/GetTelevisionStationCatagory" //获取电视台目录
126 126
  127 + //MARK:-APP
  128 + static let URL_APPGETALLSCHOOL=HOST+"/api/App/GetAllSchool" //获取所有学校
  129 + static let URL_APPGETSCHOOLBYID=HOST+"/api/App/GetSchoolById" //获取学校详情
  130 +
127 //MARK:-DataStatistics(url) 131 //MARK:-DataStatistics(url)
128 static let URL_DATASTATISTICGETSCHOOLGENERAL=HOST+"/api/DataStatistics/GetSchoolGeneral" //获取前十学校的综合排行 132 static let URL_DATASTATISTICGETSCHOOLGENERAL=HOST+"/api/DataStatistics/GetSchoolGeneral" //获取前十学校的综合排行
129 static let URL_DATASTATISTICGETSCHOOLPV=HOST+"/api/DataStatistics/GetSchoolPv" //获取前十学校的阅读量排行 133 static let URL_DATASTATISTICGETSCHOOLPV=HOST+"/api/DataStatistics/GetSchoolPv" //获取前十学校的阅读量排行
@@ -290,6 +294,17 @@ final class HTTPServer{ @@ -290,6 +294,17 @@ final class HTTPServer{
290 KHttp.GET(url: HTTPServer.URL_COURSEGETTELEVISIONSTATIONCATAGORY, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler) 294 KHttp.GET(url: HTTPServer.URL_COURSEGETTELEVISIONSTATIONCATAGORY, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
291 } 295 }
292 296
  297 + //MARK:-APP
  298 + //获取所有学校
  299 + func getAllSchool(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
  300 + KHttp.GET(url: HTTPServer.URL_APPGETALLSCHOOL, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
  301 + }
  302 +
  303 + //获取学校详情
  304 + func getSchoolById(parameters: [String : AnyObject]?,completionHandler:@escaping (String?, NSError?) -> ()){
  305 + KHttp.GET(url: HTTPServer.URL_APPGETSCHOOLBYID, parameters: parameters,headers:["Authorization":token!], completionHandler: completionHandler)
  306 + }
  307 +
293 308
294 //MARK:-DataStatistics 309 //MARK:-DataStatistics
295 //获取前十学校的综合排行 310 //获取前十学校的综合排行
YouerLiveVideo/YouerLiveVideo/util/pinyin.c 0 → 100644
@@ -0,0 +1,235 @@ @@ -0,0 +1,235 @@
  1 +/*
  2 + * pinyin.c
  3 + * Chinese Pinyin First Letter
  4 + *
  5 + * Created by George on 4/21/10.
  6 + * Copyright 2010 RED/SAFI. All rights reserved.
  7 + *
  8 + */
  9 +#define HANZI_START 19968
  10 +#define HANZI_COUNT 20902
  11 +
  12 +static char firstLetterArray[HANZI_COUNT] =
  13 +"ydkqsxnwzssxjbymgcczqpssqbycdscdqldylybssjgyqzjjfgcclzznwdwzjljpfyynnjjtmynzwzhflzppqhgccyynmjqyxxgd"
  14 +"nnsnsjnjnsnnmlnrxyfsngnnnnqzggllyjlnyzssecykyyhqwjssggyxyqyjtwktjhychmnxjtlhjyqbyxdldwrrjnwysrldzjpc"
  15 +"bzjjbrcfslnczstzfxxchtrqggddlyccssymmrjcyqzpwwjjyfcrwfdfzqpyddwyxkyjawjffxjbcftzyhhycyswccyxsclcxxwz"
  16 +"cxnbgnnxbxlzsqsbsjpysazdhmdzbqbscwdzzyytzhbtsyyfzgntnxjywqnknphhlxgybfmjnbjhhgqtjcysxstkzglyckglysmz"
  17 +"xyalmeldccxgzyrjxjzlnjzcqkcnnjwhjczccqljststbnhbtyxceqxkkwjyflzqlyhjxspsfxlmpbysxxxytccnylllsjxfhjxp"
  18 +"jbtffyabyxbcczbzyclwlczggbtssmdtjcxpthyqtgjjxcjfzkjzjqnlzwlslhdzbwjncjzyzsqnycqynzcjjwybrtwpyftwexcs"
  19 +"kdzctbyhyzqyyjxzcfbzzmjyxxsdczottbzljwfckscsxfyrlrygmbdthjxsqjccsbxyytswfbjdztnbcnzlcyzzpsacyzzsqqcs"
  20 +"hzqydxlbpjllmqxqydzxsqjtzpxlcglqdcwzfhctdjjsfxjejjtlbgxsxjmyjjqpfzasyjnsydjxkjcdjsznbartcclnjqmwnqnc"
  21 +"lllkbdbzzsyhqcltwlccrshllzntylnewyzyxczxxgdkdmtcedejtsyyssdqdfmxdbjlkrwnqlybglxnlgtgxbqjdznyjsjyjcjm"
  22 +"rnymgrcjczgjmzmgxmmryxkjnymsgmzzymknfxmbdtgfbhcjhkylpfmdxlxjjsmsqgzsjlqdldgjycalcmzcsdjllnxdjffffjcn"
  23 +"fnnffpfkhkgdpqxktacjdhhzdddrrcfqyjkqccwjdxhwjlyllzgcfcqjsmlzpbjjblsbcjggdckkdezsqcckjgcgkdjtjllzycxk"
  24 +"lqccgjcltfpcqczgwbjdqyzjjbyjhsjddwgfsjgzkcjctllfspkjgqjhzzljplgjgjjthjjyjzccmlzlyqbgjwmljkxzdznjqsyz"
  25 +"mljlljkywxmkjlhskjhbmclyymkxjqlbmllkmdxxkwyxwslmlpsjqqjqxyqfjtjdxmxxllcrqbsyjbgwynnggbcnxpjtgpapfgdj"
  26 +"qbhbncfjyzjkjkhxqfgqckfhygkhdkllsdjqxpqyaybnqsxqnszswhbsxwhxwbzzxdmndjbsbkbbzklylxgwxjjwaqzmywsjqlsj"
  27 +"xxjqwjeqxnchetlzalyyyszzpnkyzcptlshtzcfycyxyljsdcjqagyslcllyyysslqqqnldxzsccscadycjysfsgbfrsszqsbxjp"
  28 +"sjysdrckgjlgtkzjzbdktcsyqpyhstcldjnhmymcgxyzhjdctmhltxzhylamoxyjcltyfbqqjpfbdfehthsqhzywwcncxcdwhowg"
  29 +"yjlegmdqcwgfjhcsntmydolbygnqwesqpwnmlrydzszzlyqpzgcwxhnxpyxshmdqjgztdppbfbhzhhjyfdzwkgkzbldnzsxhqeeg"
  30 +"zxylzmmzyjzgszxkhkhtxexxgylyapsthxdwhzydpxagkydxbhnhnkdnjnmyhylpmgecslnzhkxxlbzzlbmlsfbhhgsgyyggbhsc"
  31 +"yajtxglxtzmcwzydqdqmngdnllszhngjzwfyhqswscelqajynytlsxthaznkzzsdhlaxxtwwcjhqqtddwzbcchyqzflxpslzqgpz"
  32 +"sznglydqtbdlxntctajdkywnsyzljhhdzckryyzywmhychhhxhjkzwsxhdnxlyscqydpslyzwmypnkxyjlkchtyhaxqsyshxasmc"
  33 +"hkdscrsgjpwqsgzjlwwschsjhsqnhnsngndantbaalczmsstdqjcjktscjnxplggxhhgoxzcxpdmmhldgtybynjmxhmrzplxjzck"
  34 +"zxshflqxxcdhxwzpckczcdytcjyxqhlxdhypjqxnlsyydzozjnhhqezysjyayxkypdgxddnsppyzndhthrhxydpcjjhtcnnctlhb"
  35 +"ynyhmhzllnnxmylllmdcppxhmxdkycyrdltxjchhznxclcclylnzsxnjzzlnnnnwhyqsnjhxynttdkyjpychhyegkcwtwlgjrlgg"
  36 +"tgtygyhpyhylqyqgcwyqkpyyettttlhyylltyttsylnyzwgywgpydqqzzdqnnkcqnmjjzzbxtqfjkdffbtkhzkbxdjjkdjjtlbwf"
  37 +"zpptkqtztgpdwntpjyfalqmkgxbcclzfhzcllllanpnxtjklcclgyhdzfgyddgcyyfgydxkssendhykdndknnaxxhbpbyyhxccga"
  38 +"pfqyjjdmlxcsjzllpcnbsxgjyndybwjspcwjlzkzddtacsbkzdyzypjzqsjnkktknjdjgyepgtlnyqnacdntcyhblgdzhbbydmjr"
  39 +"egkzyheyybjmcdtafzjzhgcjnlghldwxjjkytcyksssmtwcttqzlpbszdtwcxgzagyktywxlnlcpbclloqmmzsslcmbjcsdzkydc"
  40 +"zjgqjdsmcytzqqlnzqzxssbpkdfqmddzzsddtdmfhtdycnaqjqkypbdjyyxtljhdrqxlmhkydhrnlklytwhllrllrcxylbnsrnzz"
  41 +"symqzzhhkyhxksmzsyzgcxfbnbsqlfzxxnnxkxwymsddyqnggqmmyhcdzttfgyyhgsbttybykjdnkyjbelhdypjqnfxfdnkzhqks"
  42 +"byjtzbxhfdsbdaswpawajldyjsfhblcnndnqjtjnchxfjsrfwhzfmdrfjyxwzpdjkzyjympcyznynxfbytfyfwygdbnzzzdnytxz"
  43 +"emmqbsqehxfznbmflzzsrsyqjgsxwzjsprytjsjgskjjgljjynzjjxhgjkymlpyyycxycgqzswhwlyrjlpxslcxmnsmwklcdnkny"
  44 +"npsjszhdzeptxmwywxyysywlxjqcqxzdclaeelmcpjpclwbxsqhfwrtfnjtnqjhjqdxhwlbyccfjlylkyynldxnhycstyywncjtx"
  45 +"ywtrmdrqnwqcmfjdxzmhmayxnwmyzqtxtlmrspwwjhanbxtgzypxyyrrclmpamgkqjszycymyjsnxtplnbappypylxmyzkynldgy"
  46 +"jzcchnlmzhhanqnbgwqtzmxxmllhgdzxnhxhrxycjmffxywcfsbssqlhnndycannmtcjcypnxnytycnnymnmsxndlylysljnlxys"
  47 +"sqmllyzlzjjjkyzzcsfbzxxmstbjgnxnchlsnmcjscyznfzlxbrnnnylmnrtgzqysatswryhyjzmgdhzgzdwybsscskxsyhytsxg"
  48 +"cqgxzzbhyxjscrhmkkbsczjyjymkqhzjfnbhmqhysnjnzybknqmcjgqhwlsnzswxkhljhyybqcbfcdsxdldspfzfskjjzwzxsddx"
  49 +"jseeegjscssygclxxnwwyllymwwwgydkzjggggggsycknjwnjpcxbjjtqtjwdsspjxcxnzxnmelptfsxtllxcljxjjljsxctnswx"
  50 +"lennlyqrwhsycsqnybyaywjejqfwqcqqcjqgxaldbzzyjgkgxbltqyfxjltpydkyqhpmatlcndnkxmtxynhklefxdllegqtymsaw"
  51 +"hzmljtkynxlyjzljeeyybqqffnlyxhdsctgjhxywlkllxqkcctnhjlqmkkzgcyygllljdcgydhzwypysjbzjdzgyzzhywyfqdtyz"
  52 +"szyezklymgjjhtsmqwyzljyywzcsrkqyqltdxwcdrjalwsqzwbdcqyncjnnszjlncdcdtlzzzacqqzzddxyblxcbqjylzllljddz"
  53 +"jgyqyjzyxnyyyexjxksdaznyrdlzyyynjlslldyxjcykywnqcclddnyyynycgczhjxcclgzqjgnwnncqqjysbzzxyjxjnxjfzbsb"
  54 +"dsfnsfpzxhdwztdmpptflzzbzdmyypqjrsdzsqzsqxbdgcpzswdwcsqzgmdhzxmwwfybpngphdmjthzsmmbgzmbzjcfzhfcbbnmq"
  55 +"dfmbcmcjxlgpnjbbxgyhyyjgptzgzmqbqdcgybjxlwnkydpdymgcftpfxyztzxdzxtgkptybbclbjaskytssqyymscxfjhhlslls"
  56 +"jpqjjqaklyldlycctsxmcwfgngbqxllllnyxtyltyxytdpjhnhgnkbyqnfjyyzbyyessessgdyhfhwtcqbsdzjtfdmxhcnjzymqw"
  57 +"srxjdzjqbdqbbsdjgnfbknbxdkqhmkwjjjgdllthzhhyyyyhhsxztyyyccbdbpypzyccztjpzywcbdlfwzcwjdxxhyhlhwczxjtc"
  58 +"nlcdpxnqczczlyxjjcjbhfxwpywxzpcdzzbdccjwjhmlxbqxxbylrddgjrrctttgqdczwmxfytmmzcwjwxyywzzkybzcccttqnhx"
  59 +"nwxxkhkfhtswoccjybcmpzzykbnnzpbthhjdlszddytyfjpxyngfxbyqxzbhxcpxxtnzdnnycnxsxlhkmzxlthdhkghxxsshqyhh"
  60 +"cjyxglhzxcxnhekdtgqxqypkdhentykcnymyyjmkqyyyjxzlthhqtbyqhxbmyhsqckwwyllhcyylnneqxqwmcfbdccmljggxdqkt"
  61 +"lxkknqcdgcjwyjjlyhhqyttnwchhxcxwherzjydjccdbqcdgdnyxzdhcqrxcbhztqcbxwgqwyybxhmbymykdyecmqkyaqyngyzsl"
  62 +"fnkkqgyssqyshngjctxkzycssbkyxhyylstycxqthysmnscpmmgcccccmnztasmgqzjhklosjylswtmqzyqkdzljqqyplzycztcq"
  63 +"qpbbcjzclpkhqcyyxxdtdddsjcxffllchqxmjlwcjcxtspycxndtjshjwhdqqqckxyamylsjhmlalygxcyydmamdqmlmcznnyybz"
  64 +"xkyflmcncmlhxrcjjhsylnmtjggzgywjxsrxcwjgjqhqzdqjdcjjskjkgdzcgjjyjylxzxxcdqhhheslmhlfsbdjsyyshfyssczq"
  65 +"lpbdrfnztzdkykhsccgkwtqzckmsynbcrxqbjyfaxpzzedzcjykbcjwhyjbqzzywnyszptdkzpfpbaztklqnhbbzptpptyzzybhn"
  66 +"ydcpzmmcycqmcjfzzdcmnlfpbplngqjtbttajzpzbbdnjkljqylnbzqhksjznggqstzkcxchpzsnbcgzkddzqanzgjkdrtlzldwj"
  67 +"njzlywtxndjzjhxnatncbgtzcsskmljpjytsnwxcfjwjjtkhtzplbhsnjssyjbhbjyzlstlsbjhdnwqpslmmfbjdwajyzccjtbnn"
  68 +"nzwxxcdslqgdsdpdzgjtqqpsqlyyjzlgyhsdlctcbjtktyczjtqkbsjlgnnzdncsgpynjzjjyyknhrpwszxmtncszzyshbyhyzax"
  69 +"ywkcjtllckjjtjhgcssxyqyczbynnlwqcglzgjgqyqcczssbcrbcskydznxjsqgxssjmecnstjtpbdlthzwxqwqczexnqczgwesg"
  70 +"ssbybstscslccgbfsdqnzlccglllzghzcthcnmjgyzazcmsksstzmmzckbjygqljyjppldxrkzyxccsnhshhdznlzhzjjcddcbcj"
  71 +"xlbfqbczztpqdnnxljcthqzjgylklszzpcjdscqjhjqkdxgpbajynnsmjtzdxlcjyryynhjbngzjkmjxltbsllrzpylssznxjhll"
  72 +"hyllqqzqlsymrcncxsljmlzltzldwdjjllnzggqxppskyggggbfzbdkmwggcxmcgdxjmcjsdycabxjdlnbcddygskydqdxdjjyxh"
  73 +"saqazdzfslqxxjnqzylblxxwxqqzbjzlfbblylwdsljhxjyzjwtdjcyfqzqzzdzsxzzqlzcdzfxhwspynpqzmlpplffxjjnzzyls"
  74 +"jnyqzfpfzgsywjjjhrdjzzxtxxglghtdxcskyswmmtcwybazbjkshfhgcxmhfqhyxxyzftsjyzbxyxpzlchmzmbxhzzssyfdmncw"
  75 +"dabazlxktcshhxkxjjzjsthygxsxyyhhhjwxkzxssbzzwhhhcwtzzzpjxsyxqqjgzyzawllcwxznxgyxyhfmkhydwsqmnjnaycys"
  76 +"pmjkgwcqhylajgmzxhmmcnzhbhxclxdjpltxyjkdyylttxfqzhyxxsjbjnayrsmxyplckdnyhlxrlnllstycyyqygzhhsccsmcct"
  77 +"zcxhyqfpyyrpbflfqnntszlljmhwtcjqyzwtlnmlmdwmbzzsnzrbpdddlqjjbxtcsnzqqygwcsxfwzlxccrszdzmcyggdyqsgtnn"
  78 +"nlsmymmsyhfbjdgyxccpshxczcsbsjyygjmpbwaffyfnxhydxzylremzgzzyndsznlljcsqfnxxkptxzgxjjgbmyyssnbtylbnlh"
  79 +"bfzdcyfbmgqrrmzszxysjtznnydzzcdgnjafjbdknzblczszpsgcycjszlmnrznbzzldlnllysxsqzqlcxzlsgkbrxbrbzcycxzj"
  80 +"zeeyfgklzlnyhgzcgzlfjhgtgwkraajyzkzqtsshjjxdzyznynnzyrzdqqhgjzxsszbtkjbbfrtjxllfqwjgclqtymblpzdxtzag"
  81 +"bdhzzrbgjhwnjtjxlkscfsmwlldcysjtxkzscfwjlbnntzlljzllqblcqmqqcgcdfpbphzczjlpyyghdtgwdxfczqyyyqysrclqz"
  82 +"fklzzzgffcqnwglhjycjjczlqzzyjbjzzbpdcsnnjgxdqnknlznnnnpsntsdyfwwdjzjysxyyczcyhzwbbyhxrylybhkjksfxtjj"
  83 +"mmchhlltnyymsxxyzpdjjycsycwmdjjkqyrhllngpngtlyycljnnnxjyzfnmlrgjjtyzbsyzmsjyjhgfzqmsyxrszcytlrtqzsst"
  84 +"kxgqkgsptgxdnjsgcqcqhmxggztqydjjznlbznxqlhyqgggthqscbyhjhhkyygkggcmjdzllcclxqsftgjslllmlcskctbljszsz"
  85 +"mmnytpzsxqhjcnnqnyexzqzcpshkzzyzxxdfgmwqrllqxrfztlystctmjcsjjthjnxtnrztzfqrhcgllgcnnnnjdnlnnytsjtlny"
  86 +"xsszxcgjzyqpylfhdjsbbdczgjjjqzjqdybssllcmyttmqnbhjqmnygjyeqyqmzgcjkpdcnmyzgqllslnclmholzgdylfzslncnz"
  87 +"lylzcjeshnyllnxnjxlyjyyyxnbcljsswcqqnnyllzldjnllzllbnylnqchxyyqoxccqkyjxxxyklksxeyqhcqkkkkcsnyxxyqxy"
  88 +"gwtjohthxpxxhsnlcykychzzcbwqbbwjqcscszsslcylgddsjzmmymcytsdsxxscjpqqsqylyfzychdjynywcbtjsydchcyddjlb"
  89 +"djjsodzyqyskkyxdhhgqjyohdyxwgmmmazdybbbppbcmnnpnjzsmtxerxjmhqdntpjdcbsnmssythjtslmltrcplzszmlqdsdmjm"
  90 +"qpnqdxcfrnnfsdqqyxhyaykqyddlqyyysszbydslntfgtzqbzmchdhczcwfdxtmqqsphqwwxsrgjcwnntzcqmgwqjrjhtqjbbgwz"
  91 +"fxjhnqfxxqywyyhyscdydhhqmrmtmwctbszppzzglmzfollcfwhmmsjzttdhlmyffytzzgzyskjjxqyjzqbhmbzclyghgfmshpcf"
  92 +"zsnclpbqsnjyzslxxfpmtyjygbxlldlxpzjyzjyhhzcywhjylsjexfszzywxkzjlnadymlymqjpwxxhxsktqjezrpxxzghmhwqpw"
  93 +"qlyjjqjjzszcnhjlchhnxjlqwzjhbmzyxbdhhypylhlhlgfwlcfyytlhjjcwmscpxstkpnhjxsntyxxtestjctlsslstdlllwwyh"
  94 +"dnrjzsfgxssyczykwhtdhwjglhtzdqdjzxxqgghltzphcsqfclnjtclzpfstpdynylgmjllycqhynspchylhqyqtmzymbywrfqyk"
  95 +"jsyslzdnjmpxyyssrhzjnyqtqdfzbwwdwwrxcwggyhxmkmyyyhmxmzhnksepmlqqmtcwctmxmxjpjjhfxyyzsjzhtybmstsyjznq"
  96 +"jnytlhynbyqclcycnzwsmylknjxlggnnpjgtysylymzskttwlgsmzsylmpwlcwxwqcssyzsyxyrhssntsrwpccpwcmhdhhxzdzyf"
  97 +"jhgzttsbjhgyglzysmyclllxbtyxhbbzjkssdmalhhycfygmqypjyjqxjllljgclzgqlycjcctotyxmtmshllwlqfxymzmklpszz"
  98 +"cxhkjyclctyjcyhxsgyxnnxlzwpyjpxhjwpjpwxqqxlxsdhmrslzzydwdtcxknstzshbsccstplwsscjchjlcgchssphylhfhhxj"
  99 +"sxallnylmzdhzxylsxlmzykcldyahlcmddyspjtqjzlngjfsjshctsdszlblmssmnyymjqbjhrzwtyydchjljapzwbgqxbkfnbjd"
  100 +"llllyylsjydwhxpsbcmljpscgbhxlqhyrljxyswxhhzlldfhlnnymjljyflyjycdrjlfsyzfsllcqyqfgqyhnszlylmdtdjcnhbz"
  101 +"llnwlqxygyyhbmgdhxxnhlzzjzxczzzcyqzfngwpylcpkpykpmclgkdgxzgxwqbdxzzkzfbddlzxjtpjpttbythzzdwslcpnhslt"
  102 +"jxxqlhyxxxywzyswttzkhlxzxzpyhgzhknfsyhntjrnxfjcpjztwhplshfcrhnslxxjxxyhzqdxqwnnhyhmjdbflkhcxcwhjfyjc"
  103 +"fpqcxqxzyyyjygrpynscsnnnnchkzdyhflxxhjjbyzwttxnncyjjymswyxqrmhxzwfqsylznggbhyxnnbwttcsybhxxwxyhhxyxn"
  104 +"knyxmlywrnnqlxbbcljsylfsytjzyhyzawlhorjmnsczjxxxyxchcyqryxqzddsjfslyltsffyxlmtyjmnnyyyxltzcsxqclhzxl"
  105 +"wyxzhnnlrxkxjcdyhlbrlmbrdlaxksnlljlyxxlynrylcjtgncmtlzllcyzlpzpzyawnjjfybdyyzsepckzzqdqpbpsjpdyttbdb"
  106 +"bbyndycncpjmtmlrmfmmrwyfbsjgygsmdqqqztxmkqwgxllpjgzbqrdjjjfpkjkcxbljmswldtsjxldlppbxcwkcqqbfqbccajzg"
  107 +"mykbhyhhzykndqzybpjnspxthlfpnsygyjdbgxnhhjhzjhstrstldxskzysybmxjlxyslbzyslzxjhfybqnbylljqkygzmcyzzym"
  108 +"ccslnlhzhwfwyxzmwyxtynxjhbyymcysbmhysmydyshnyzchmjjmzcaahcbjbbhblytylsxsnxgjdhkxxtxxnbhnmlngsltxmrhn"
  109 +"lxqqxmzllyswqgdlbjhdcgjyqyymhwfmjybbbyjyjwjmdpwhxqldyapdfxxbcgjspckrssyzjmslbzzjfljjjlgxzgyxyxlszqkx"
  110 +"bexyxhgcxbpndyhwectwwcjmbtxchxyqqllxflyxlljlssnwdbzcmyjclwswdczpchqekcqbwlcgydblqppqzqfnqdjhymmcxtxd"
  111 +"rmzwrhxcjzylqxdyynhyyhrslnrsywwjjymtltllgtqcjzyabtckzcjyccqlysqxalmzynywlwdnzxqdllqshgpjfjljnjabcqzd"
  112 +"jgthhsstnyjfbswzlxjxrhgldlzrlzqzgsllllzlymxxgdzhgbdphzpbrlwnjqbpfdwonnnhlypcnjccndmbcpbzzncyqxldomzb"
  113 +"lzwpdwyygdstthcsqsccrsssyslfybnntyjszdfndpdhtqzmbqlxlcmyffgtjjqwftmnpjwdnlbzcmmcngbdzlqlpnfhyymjylsd"
  114 +"chdcjwjcctljcldtljjcbddpndsszycndbjlggjzxsxnlycybjjxxcbylzcfzppgkcxqdzfztjjfjdjxzbnzyjqctyjwhdyczhym"
  115 +"djxttmpxsplzcdwslshxypzgtfmlcjtacbbmgdewycyzxdszjyhflystygwhkjyylsjcxgywjcbllcsnddbtzbsclyzczzssqdll"
  116 +"mjyyhfllqllxfdyhabxggnywyypllsdldllbjcyxjznlhljdxyyqytdlllbngpfdfbbqbzzmdpjhgclgmjjpgaehhbwcqxajhhhz"
  117 +"chxyphjaxhlphjpgpzjqcqzgjjzzgzdmqyybzzphyhybwhazyjhykfgdpfqsdlzmljxjpgalxzdaglmdgxmmzqwtxdxxpfdmmssy"
  118 +"mpfmdmmkxksyzyshdzkjsysmmzzzmdydyzzczxbmlstmdyemxckjmztyymzmzzmsshhdccjewxxkljsthwlsqlyjzllsjssdppmh"
  119 +"nlgjczyhmxxhgncjmdhxtkgrmxfwmckmwkdcksxqmmmszzydkmsclcmpcjmhrpxqpzdsslcxkyxtwlkjyahzjgzjwcjnxyhmmbml"
  120 +"gjxmhlmlgmxctkzmjlyscjsyszhsyjzjcdajzhbsdqjzgwtkqxfkdmsdjlfmnhkzqkjfeypzyszcdpynffmzqykttdzzefmzlbnp"
  121 +"plplpbpszalltnlkckqzkgenjlwalkxydpxnhsxqnwqnkxqclhyxxmlnccwlymqyckynnlcjnszkpyzkcqzqljbdmdjhlasqlbyd"
  122 +"wqlwdgbqcryddztjybkbwszdxdtnpjdtcnqnfxqqmgnseclstbhpwslctxxlpwydzklnqgzcqapllkqcylbqmqczqcnjslqzdjxl"
  123 +"ddhpzqdljjxzqdjyzhhzlkcjqdwjppypqakjyrmpzbnmcxkllzllfqpylllmbsglzysslrsysqtmxyxzqzbscnysyztffmzzsmzq"
  124 +"hzssccmlyxwtpzgxzjgzgsjzgkddhtqggzllbjdzlsbzhyxyzhzfywxytymsdnzzyjgtcmtnxqyxjscxhslnndlrytzlryylxqht"
  125 +"xsrtzcgyxbnqqzfhykmzjbzymkbpnlyzpblmcnqyzzzsjztjctzhhyzzjrdyzhnfxklfzslkgjtctssyllgzrzbbjzzklpkbczys"
  126 +"nnyxbjfbnjzzxcdwlzyjxzzdjjgggrsnjkmsmzjlsjywqsnyhqjsxpjztnlsnshrnynjtwchglbnrjlzxwjqxqkysjycztlqzybb"
  127 +"ybyzjqdwgyzcytjcjxckcwdkkzxsnkdnywwyyjqyytlytdjlxwkcjnklccpzcqqdzzqlcsfqchqqgssmjzzllbjjzysjhtsjdysj"
  128 +"qjpdszcdchjkjzzlpycgmzndjxbsjzzsyzyhgxcpbjydssxdzncglqmbtsfcbfdzdlznfgfjgfsmpnjqlnblgqcyyxbqgdjjqsrf"
  129 +"kztjdhczklbsdzcfytplljgjhtxzcsszzxstjygkgckgynqxjplzbbbgcgyjzgczqszlbjlsjfzgkqqjcgycjbzqtldxrjnbsxxp"
  130 +"zshszycfwdsjjhxmfczpfzhqhqmqnknlyhtycgfrzgnqxcgpdlbzcsczqlljblhbdcypscppdymzzxgyhckcpzjgslzlnscnsldl"
  131 +"xbmsdlddfjmkdqdhslzxlsznpqpgjdlybdskgqlbzlnlkyyhzttmcjnqtzzfszqktlljtyyllnllqyzqlbdzlslyyzxmdfszsnxl"
  132 +"xznczqnbbwskrfbcylctnblgjpmczzlstlxshtzcyzlzbnfmqnlxflcjlyljqcbclzjgnsstbrmhxzhjzclxfnbgxgtqncztmsfz"
  133 +"kjmssncljkbhszjntnlzdntlmmjxgzjyjczxyhyhwrwwqnztnfjscpyshzjfyrdjsfscjzbjfzqzchzlxfxsbzqlzsgyftzdcszx"
  134 +"zjbjpszkjrhxjzcgbjkhcggtxkjqglxbxfgtrtylxqxhdtsjxhjzjjcmzlcqsbtxwqgxtxxhxftsdkfjhzyjfjxnzldlllcqsqqz"
  135 +"qwqxswqtwgwbzcgcllqzbclmqjtzgzyzxljfrmyzflxnsnxxjkxrmjdzdmmyxbsqbhgzmwfwygmjlzbyytgzyccdjyzxsngnyjyz"
  136 +"nbgpzjcqsyxsxrtfyzgrhztxszzthcbfclsyxzlzqmzlmplmxzjssfsbysmzqhxxnxrxhqzzzsslyflczjrcrxhhzxqndshxsjjh"
  137 +"qcjjbcynsysxjbqjpxzqplmlxzkyxlxcnlcycxxzzlxdlllmjyhzxhyjwkjrwyhcpsgnrzlfzwfzznsxgxflzsxzzzbfcsyjdbrj"
  138 +"krdhhjxjljjtgxjxxstjtjxlyxqfcsgswmsbctlqzzwlzzkxjmltmjyhsddbxgzhdlbmyjfrzfcgclyjbpmlysmsxlszjqqhjzfx"
  139 +"gfqfqbphngyyqxgztnqwyltlgwgwwhnlfmfgzjmgmgbgtjflyzzgzyzaflsspmlbflcwbjztljjmzlpjjlymqtmyyyfbgygqzgly"
  140 +"zdxqyxrqqqhsxyyqxygjtyxfsfsllgnqcygycwfhcccfxpylypllzqxxxxxqqhhsshjzcftsczjxspzwhhhhhapylqnlpqafyhxd"
  141 +"ylnkmzqgggddesrenzltzgchyppcsqjjhclljtolnjpzljlhymhezdydsqycddhgznndzclzywllznteydgnlhslpjjbdgwxpcnn"
  142 +"tycklkclwkllcasstknzdnnjttlyyzssysszzryljqkcgdhhyrxrzydgrgcwcgzqffbppjfzynakrgywyjpqxxfkjtszzxswzddf"
  143 +"bbqtbgtzkznpzfpzxzpjszbmqhkyyxyldkljnypkyghgdzjxxeaxpnznctzcmxcxmmjxnkszqnmnlwbwwqjjyhclstmcsxnjcxxt"
  144 +"pcnfdtnnpglllzcjlspblpgjcdtnjjlyarscffjfqwdpgzdwmrzzcgodaxnssnyzrestyjwjyjdbcfxnmwttbqlwstszgybljpxg"
  145 +"lbnclgpcbjftmxzljylzxcltpnclcgxtfzjshcrxsfysgdkntlbyjcyjllstgqcbxnhzxbxklylhzlqzlnzcqwgzlgzjncjgcmnz"
  146 +"zgjdzxtzjxycyycxxjyyxjjxsssjstsstdppghtcsxwzdcsynptfbchfbblzjclzzdbxgcjlhpxnfzflsyltnwbmnjhszbmdnbcy"
  147 +"sccldnycndqlyjjhmqllcsgljjsyfpyyccyltjantjjpwycmmgqyysxdxqmzhszxbftwwzqswqrfkjlzjqqyfbrxjhhfwjgzyqac"
  148 +"myfrhcyybynwlpexcczsyyrlttdmqlrkmpbgmyyjprkznbbsqyxbhyzdjdnghpmfsgbwfzmfqmmbzmzdcgjlnnnxyqgmlrygqccy"
  149 +"xzlwdkcjcggmcjjfyzzjhycfrrcmtznzxhkqgdjxccjeascrjthpljlrzdjrbcqhjdnrhylyqjsymhzydwcdfryhbbydtssccwbx"
  150 +"glpzmlzjdqsscfjmmxjcxjytycghycjwynsxlfemwjnmkllswtxhyyyncmmcyjdqdjzglljwjnkhpzggflccsczmcbltbhbqjxqd"
  151 +"jpdjztghglfjawbzyzjltstdhjhctcbchflqmpwdshyytqwcnntjtlnnmnndyyyxsqkxwyyflxxnzwcxypmaelyhgjwzzjbrxxaq"
  152 +"jfllpfhhhytzzxsgqjmhspgdzqwbwpjhzjdyjcqwxkthxsqlzyymysdzgnqckknjlwpnsyscsyzlnmhqsyljxbcxtlhzqzpcycyk"
  153 +"pppnsxfyzjjrcemhszmnxlxglrwgcstlrsxbygbzgnxcnlnjlclynymdxwtzpalcxpqjcjwtcyyjlblxbzlqmyljbghdslssdmxm"
  154 +"bdczsxyhamlczcpjmcnhjyjnsykchskqmczqdllkablwjqsfmocdxjrrlyqchjmybyqlrhetfjzfrfksryxfjdwtsxxywsqjysly"
  155 +"xwjhsdlxyyxhbhawhwjcxlmyljcsqlkydttxbzslfdxgxsjkhsxxybssxdpwncmrptqzczenygcxqfjxkjbdmljzmqqxnoxslyxx"
  156 +"lylljdzptymhbfsttqqwlhsgynlzzalzxclhtwrrqhlstmypyxjjxmnsjnnbryxyjllyqyltwylqyfmlkljdnlltfzwkzhljmlhl"
  157 +"jnljnnlqxylmbhhlnlzxqchxcfxxlhyhjjgbyzzkbxscqdjqdsndzsygzhhmgsxcsymxfepcqwwrbpyyjqryqcyjhqqzyhmwffhg"
  158 +"zfrjfcdbxntqyzpcyhhjlfrzgpbxzdbbgrqstlgdgylcqmgchhmfywlzyxkjlypjhsywmqqggzmnzjnsqxlqsyjtcbehsxfszfxz"
  159 +"wfllbcyyjdytdthwzsfjmqqyjlmqsxlldttkghybfpwdyysqqrnqwlgwdebzwcyygcnlkjxtmxmyjsxhybrwfymwfrxyymxysctz"
  160 +"ztfykmldhqdlgyjnlcryjtlpsxxxywlsbrrjwxhqybhtydnhhxmmywytycnnmnssccdalwztcpqpyjllqzyjswjwzzmmglmxclmx"
  161 +"nzmxmzsqtzppjqblpgxjzhfljjhycjsrxwcxsncdlxsyjdcqzxslqyclzxlzzxmxqrjmhrhzjbhmfljlmlclqnldxzlllfyprgjy"
  162 +"nxcqqdcmqjzzxhnpnxzmemmsxykynlxsxtljxyhwdcwdzhqyybgybcyscfgfsjnzdrzzxqxrzrqjjymcanhrjtldbpyzbstjhxxz"
  163 +"ypbdwfgzzrpymnnkxcqbyxnbnfyckrjjcmjegrzgyclnnzdnkknsjkcljspgyyclqqjybzssqlllkjftbgtylcccdblsppfylgyd"
  164 +"tzjqjzgkntsfcxbdkdxxhybbfytyhbclnnytgdhryrnjsbtcsnyjqhklllzslydxxwbcjqsbxnpjzjzjdzfbxxbrmladhcsnclbj"
  165 +"dstblprznswsbxbcllxxlzdnzsjpynyxxyftnnfbhjjjgbygjpmmmmsszljmtlyzjxswxtyledqpjmpgqzjgdjlqjwjqllsdgjgy"
  166 +"gmscljjxdtygjqjjjcjzcjgdzdshqgzjggcjhqxsnjlzzbxhsgzxcxyljxyxyydfqqjhjfxdhctxjyrxysqtjxyefyyssyxjxncy"
  167 +"zxfxcsxszxyyschshxzzzgzzzgfjdldylnpzgsjaztyqzpbxcbdztzczyxxyhhscjshcggqhjhgxhsctmzmehyxgebtclzkkwytj"
  168 +"zrslekestdbcyhqqsayxcjxwwgsphjszsdncsjkqcxswxfctynydpccczjqtcwjqjzzzqzljzhlsbhpydxpsxshhezdxfptjqyzc"
  169 +"xhyaxncfzyyhxgnqmywntzsjbnhhgymxmxqcnssbcqsjyxxtyyhybcqlmmszmjzzllcogxzaajzyhjmchhcxzsxsdznleyjjzjbh"
  170 +"zwjzsqtzpsxzzdsqjjjlnyazphhyysrnqzthzhnyjyjhdzxzlswclybzyecwcycrylchzhzydzydyjdfrjjhtrsqtxyxjrjhojyn"
  171 +"xelxsfsfjzghpzsxzszdzcqzbyyklsgsjhczshdgqgxyzgxchxzjwyqwgyhksseqzzndzfkwyssdclzstsymcdhjxxyweyxczayd"
  172 +"mpxmdsxybsqmjmzjmtjqlpjyqzcgqhyjhhhqxhlhdldjqcfdwbsxfzzyyschtytyjbhecxhjkgqfxbhyzjfxhwhbdzfyzbchpnpg"
  173 +"dydmsxhkhhmamlnbyjtmpxejmcthqbzyfcgtyhwphftgzzezsbzegpbmdskftycmhbllhgpzjxzjgzjyxzsbbqsczzlzscstpgxm"
  174 +"jsfdcczjzdjxsybzlfcjsazfgszlwbczzzbyztzynswyjgxzbdsynxlgzbzfygczxbzhzftpbgzgejbstgkdmfhyzzjhzllzzgjq"
  175 +"zlsfdjsscbzgpdlfzfzszyzyzsygcxsnxxchczxtzzljfzgqsqqxcjqccccdjcdszzyqjccgxztdlgscxzsyjjqtcclqdqztqchq"
  176 +"qyzynzzzpbkhdjfcjfztypqyqttynlmbdktjcpqzjdzfpjsbnjlgyjdxjdcqkzgqkxclbzjtcjdqbxdjjjstcxnxbxqmslyjcxnt"
  177 +"jqwwcjjnjjlllhjcwqtbzqqczczpzzdzyddcyzdzccjgtjfzdprntctjdcxtqzdtjnplzbcllctdsxkjzqdmzlbznbtjdcxfczdb"
  178 +"czjjltqqpldckztbbzjcqdcjwynllzlzccdwllxwzlxrxntqjczxkjlsgdnqtddglnlajjtnnynkqlldzntdnycygjwyxdxfrsqs"
  179 +"tcdenqmrrqzhhqhdldazfkapbggpzrebzzykyqspeqjjglkqzzzjlysyhyzwfqznlzzlzhwcgkypqgnpgblplrrjyxcccgyhsfzf"
  180 +"wbzywtgzxyljczwhncjzplfflgskhyjdeyxhlpllllcygxdrzelrhgklzzyhzlyqszzjzqljzflnbhgwlczcfjwspyxzlzlxgccp"
  181 +"zbllcxbbbbnbbcbbcrnnzccnrbbnnldcgqyyqxygmqzwnzytyjhyfwtehznjywlccntzyjjcdedpwdztstnjhtymbjnyjzlxtsst"
  182 +"phndjxxbyxqtzqddtjtdyztgwscszqflshlnzbcjbhdlyzjyckwtydylbnydsdsycctyszyyebgexhqddwnygyclxtdcystqnygz"
  183 +"ascsszzdzlcclzrqxyywljsbymxshzdembbllyyllytdqyshymrqnkfkbfxnnsbychxbwjyhtqbpbsbwdzylkgzskyghqzjxhxjx"
  184 +"gnljkzlyycdxlfwfghljgjybxblybxqpqgntzplncybxdjyqydymrbeyjyyhkxxstmxrczzjwxyhybmcflyzhqyzfwxdbxbcwzms"
  185 +"lpdmyckfmzklzcyqycclhxfzlydqzpzygyjyzmdxtzfnnyttqtzhgsfcdmlccytzxjcytjmkslpzhysnwllytpzctzccktxdhxxt"
  186 +"qcyfksmqccyyazhtjplylzlyjbjxtfnyljyynrxcylmmnxjsmybcsysslzylljjgyldzdlqhfzzblfndsqkczfyhhgqmjdsxyctt"
  187 +"xnqnjpyybfcjtyyfbnxejdgyqbjrcnfyyqpghyjsyzngrhtknlnndzntsmgklbygbpyszbydjzsstjztsxzbhbscsbzczptqfzlq"
  188 +"flypybbjgszmnxdjmtsyskkbjtxhjcegbsmjyjzcstmljyxrczqscxxqpyzhmkyxxxjcljyrmyygadyskqlnadhrskqxzxztcggz"
  189 +"dlmlwxybwsyctbhjhcfcwzsxwwtgzlxqshnyczjxemplsrcgltnzntlzjcyjgdtclglbllqpjmzpapxyzlaktkdwczzbncctdqqz"
  190 +"qyjgmcdxltgcszlmlhbglkznnwzndxnhlnmkydlgxdtwcfrjerctzhydxykxhwfzcqshknmqqhzhhymjdjskhxzjzbzzxympajnm"
  191 +"ctbxlsxlzynwrtsqgscbptbsgzwyhtlkssswhzzlyytnxjgmjrnsnnnnlskztxgxlsammlbwldqhylakqcqctmycfjbslxclzjcl"
  192 +"xxknbnnzlhjphqplsxsckslnhpsfqcytxjjzljldtzjjzdlydjntptnndskjfsljhylzqqzlbthydgdjfdbyadxdzhzjnthqbykn"
  193 +"xjjqczmlljzkspldsclbblnnlelxjlbjycxjxgcnlcqplzlznjtsljgyzdzpltqcssfdmnycxgbtjdcznbgbqyqjwgkfhtnbyqzq"
  194 +"gbkpbbyzmtjdytblsqmbsxtbnpdxklemyycjynzdtldykzzxtdxhqshygmzsjycctayrzlpwltlkxslzcggexclfxlkjrtlqjaqz"
  195 +"ncmbqdkkcxglczjzxjhptdjjmzqykqsecqzdshhadmlzfmmzbgntjnnlhbyjbrbtmlbyjdzxlcjlpldlpcqdhlhzlycblcxccjad"
  196 +"qlmzmmsshmybhbnkkbhrsxxjmxmdznnpklbbrhgghfchgmnklltsyyycqlcskymyehywxnxqywbawykqldnntndkhqcgdqktgpkx"
  197 +"hcpdhtwnmssyhbwcrwxhjmkmzngwtmlkfghkjyldyycxwhyyclqhkqhtdqkhffldxqwytyydesbpkyrzpjfyyzjceqdzzdlattpb"
  198 +"fjllcxdlmjsdxegwgsjqxcfbssszpdyzcxznyxppzydlyjccpltxlnxyzyrscyyytylwwndsahjsygyhgywwaxtjzdaxysrltdps"
  199 +"syxfnejdxyzhlxlllzhzsjnyqyqyxyjghzgjcyjchzlycdshhsgczyjscllnxzjjyyxnfsmwfpyllyllabmddhwzxjmcxztzpmlq"
  200 +"chsfwzynctlndywlslxhymmylmbwwkyxyaddxylldjpybpwnxjmmmllhafdllaflbnhhbqqjqzjcqjjdjtffkmmmpythygdrjrdd"
  201 +"wrqjxnbysrmzdbyytbjhpymyjtjxaahggdqtmystqxkbtzbkjlxrbyqqhxmjjbdjntgtbxpgbktlgqxjjjcdhxqdwjlwrfmjgwqh"
  202 +"cnrxswgbtgygbwhswdwrfhwytjjxxxjyzyslphyypyyxhydqpxshxyxgskqhywbdddpplcjlhqeewjgsyykdpplfjthkjltcyjhh"
  203 +"jttpltzzcdlyhqkcjqysteeyhkyzyxxyysddjkllpymqyhqgxqhzrhbxpllnqydqhxsxxwgdqbshyllpjjjthyjkyphthyyktyez"
  204 +"yenmdshlzrpqfbnfxzbsftlgxsjbswyysksflxlpplbbblnsfbfyzbsjssylpbbffffsscjdstjsxtryjcyffsyzyzbjtlctsbsd"
  205 +"hrtjjbytcxyyeylycbnebjdsysyhgsjzbxbytfzwgenhhhthjhhxfwgcstbgxklstyymtmbyxjskzscdyjrcythxzfhmymcxlzns"
  206 +"djtxtxrycfyjsbsdyerxhljxbbdeynjghxgckgscymblxjmsznskgxfbnbbthfjyafxwxfbxmyfhdttcxzzpxrsywzdlybbktyqw"
  207 +"qjbzypzjznjpzjlztfysbttslmptzrtdxqsjehbnylndxljsqmlhtxtjecxalzzspktlzkqqyfsyjywpcpqfhjhytqxzkrsgtksq"
  208 +"czlptxcdyyzsslzslxlzmacpcqbzyxhbsxlzdltztjtylzjyytbzypltxjsjxhlbmytxcqrblzssfjzztnjytxmyjhlhpblcyxqj"
  209 +"qqkzzscpzkswalqsplczzjsxgwwwygyatjbbctdkhqhkgtgpbkqyslbxbbckbmllndzstbklggqkqlzbkktfxrmdkbftpzfrtppm"
  210 +"ferqnxgjpzsstlbztpszqzsjdhljqlzbpmsmmsxlqqnhknblrddnhxdkddjcyyljfqgzlgsygmjqjkhbpmxyxlytqwlwjcpbmjxc"
  211 +"yzydrjbhtdjyeqshtmgsfyplwhlzffnynnhxqhpltbqpfbjwjdbygpnxtbfzjgnnntjshxeawtzylltyqbwjpgxghnnkndjtmszs"
  212 +"qynzggnwqtfhclssgmnnnnynzqqxncjdqgzdlfnykljcjllzlmzznnnnsshthxjlzjbbhqjwwycrdhlyqqjbeyfsjhthnrnwjhwp"
  213 +"slmssgzttygrqqwrnlalhmjtqjsmxqbjjzjqzyzkxbjqxbjxshzssfglxmxnxfghkzszggslcnnarjxhnlllmzxelglxydjytlfb"
  214 +"kbpnlyzfbbhptgjkwetzhkjjxzxxglljlstgshjjyqlqzfkcgnndjsszfdbctwwseqfhqjbsaqtgypjlbxbmmywxgslzhglsgnyf"
  215 +"ljbyfdjfngsfmbyzhqffwjsyfyjjphzbyyzffwotjnlmftwlbzgyzqxcdjygzyyryzynyzwegazyhjjlzrthlrmgrjxzclnnnljj"
  216 +"yhtbwjybxxbxjjtjteekhwslnnlbsfazpqqbdlqjjtyyqlyzkdksqjnejzldqcgjqnnjsncmrfqthtejmfctyhypymhydmjncfgy"
  217 +"yxwshctxrljgjzhzcyyyjltkttntmjlzclzzayyoczlrlbszywjytsjyhbyshfjlykjxxtmzyyltxxypslqyjzyzyypnhmymdyyl"
  218 +"blhlsyygqllnjjymsoycbzgdlyxylcqyxtszegxhzglhwbljheyxtwqmakbpqcgyshhegqcmwyywljyjhyyzlljjylhzyhmgsljl"
  219 +"jxcjjyclycjbcpzjzjmmwlcjlnqljjjlxyjmlszljqlycmmgcfmmfpqqmfxlqmcffqmmmmhnznfhhjgtthxkhslnchhyqzxtmmqd"
  220 +"cydyxyqmyqylddcyaytazdcymdydlzfffmmycqcwzzmabtbyctdmndzggdftypcgqyttssffwbdttqssystwnjhjytsxxylbyyhh"
  221 +"whxgzxwznnqzjzjjqjccchykxbzszcnjtllcqxynjnckycynccqnxyewyczdcjycchyjlbtzyycqwlpgpyllgktltlgkgqbgychj"
  222 +"xy";
  223 +
  224 +char pinyinFirstLetter(unsigned short hanzi)
  225 +{
  226 + int index = hanzi - HANZI_START;
  227 + if (index >= 0 && index <= HANZI_COUNT)
  228 + {
  229 + return firstLetterArray[index];
  230 + }
  231 + else
  232 + {
  233 + return hanzi;
  234 + }
  235 +}
0 \ No newline at end of file 236 \ No newline at end of file
YouerLiveVideo/YouerLiveVideo/util/pinyin.h 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +/*
  2 + * pinyin.h
  3 + * Chinese Pinyin First Letter
  4 + *
  5 + * Created by George on 4/21/10.
  6 + * Copyright 2010 RED/SAFI. All rights reserved.
  7 + *
  8 + */
  9 +
  10 +/*
  11 + * // Example
  12 + *
  13 + * #import "pinyin.h"
  14 + *
  15 + * NSString *hanyu = @"中国共产党万岁!";
  16 + * for (int i = 0; i < [hanyu length]; i++)
  17 + * {
  18 + * printf("%c", pinyinFirstLetter([hanyu characterAtIndex:i]));
  19 + * }
  20 + *
  21 + */
  22 +#define ALPHA @"ABCDEFGHIJKLMNOPQRSTUVWXYZ#"
  23 +char pinyinFirstLetter(unsigned short hanzi);
0 \ No newline at end of file 24 \ No newline at end of file
YouerLiveVideo/YouerLiveVideo/util/utiles.swift
@@ -440,4 +440,6 @@ func selectImageFromString(string:String)-&gt;String{ @@ -440,4 +440,6 @@ func selectImageFromString(string:String)-&gt;String{
440 return "icon" 440 return "icon"
441 } 441 }
442 442
443 - 443 +func getFirstLetter(str:String)->String{
  444 + return String(format: "%c",pinyinFirstLetter((str as NSString).character(at: 0))).uppercased()
  445 +}