Commit 8f64232195ea936881f4759d7b5288e3087c7350

Authored by Cao yang
2 parents f015f8e3 55ec444b
Exists in parentassistant

Merge branch 'parentassistant' of http://git.shunzhi.net/iosgroup/parentassistan…

…t into parentassistant
Showing 19 changed files with 305 additions and 105 deletions   Show diff stats
.gitignore 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +*.xccheckout
  2 +*.xcuserstate
  3 +*.xcbkptlist
  4 +ParentAssistant.xcscheme
  5 +xcschememanagement.plist
  6 +*.xcuserdata
  7 +*/xcuserdatad/*
0 \ No newline at end of file 8 \ No newline at end of file
ParentAssistant/ParentAssistant/Classes/controllers/Information/InformationViewController.swift
@@ -113,7 +113,7 @@ class InformationViewController: UIViewController,UISearchBarDelegate { @@ -113,7 +113,7 @@ class InformationViewController: UIViewController,UISearchBarDelegate {
113 let leftbtn = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40)) 113 let leftbtn = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40))
114 leftLabel = UILabel(frame: CGRect(x: 0, y: 10, width: 60, height: 20)) 114 leftLabel = UILabel(frame: CGRect(x: 0, y: 10, width: 60, height: 20))
115 leftLabel.text = AccountManager.shared.address 115 leftLabel.text = AccountManager.shared.address
116 - leftLabel.textColor = UIColor.black 116 + leftLabel.textColor = UIColor.white
117 leftLabel.sizeToFit() 117 leftLabel.sizeToFit()
118 let image = UIImageView(frame: CGRect(x: leftLabel.frame.maxX+4, y: 15, width: 16, height: 9)) 118 let image = UIImageView(frame: CGRect(x: leftLabel.frame.maxX+4, y: 15, width: 16, height: 9))
119 image.image = #imageLiteral(resourceName: "evaluation_icon_pushDown") 119 image.image = #imageLiteral(resourceName: "evaluation_icon_pushDown")
@@ -182,7 +182,7 @@ class InformationViewController: UIViewController,UISearchBarDelegate { @@ -182,7 +182,7 @@ class InformationViewController: UIViewController,UISearchBarDelegate {
182 //点击资讯进入详情 182 //点击资讯进入详情
183 func pushToInfoView(index:Int){ 183 func pushToInfoView(index:Int){
184 let vcs = Story.instantiateViewControllerWithIdentifier("JSViewController", storyName: "JS") as! JSViewController 184 let vcs = Story.instantiateViewControllerWithIdentifier("JSViewController", storyName: "JS") as! JSViewController
185 - vcs.webURL = "http://60.190.202.57:8101/InformationDetail.aspx?id=75&areaname=%E4%BD%99%E6%9D%AD%E5%8C%BA"//(HTTPServer.HOSTWAP+"/InformationDetail.aspx?id="+"\(data.channelContent[index].id)"+"&areaname="+AccountManager.shared.address)//.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! 185 + vcs.webURL = (HTTPServer.HOSTWAP+"/InformationDetail.aspx?id="+"\(data.channelContent[index].id)"+"&areaname="+AccountManager.shared.address)//.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
186 186
187 self.navigationController?.present(vcs.wrapWithNavigationController(), animated: true, completion: nil) 187 self.navigationController?.present(vcs.wrapWithNavigationController(), animated: true, completion: nil)
188 } 188 }
@@ -349,7 +349,7 @@ extension ChannelSelectView:UICollectionViewDataSource,UICollectionViewDelegateF @@ -349,7 +349,7 @@ extension ChannelSelectView:UICollectionViewDataSource,UICollectionViewDelegateF
349 349
350 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 350 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
351 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "channelcell", for: indexPath) as! ChannelSelectViewCollectionViewCell 351 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "channelcell", for: indexPath) as! ChannelSelectViewCollectionViewCell
352 - cell.image.sd_setImage(with: URL(string: (HTTPServer.HOSTImage+SubchannelList[indexPath.row].channelImage).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "navigationBar_backgrounImage")) 352 + cell.image.sd_setImage(with: URL(string: (HTTPServer.HOSTImage+SubchannelList[indexPath.row].channelImage).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "evaluation_icon_highSchoolEnter"))
353 cell.channelName.text = SubchannelList[indexPath.row].channelName 353 cell.channelName.text = SubchannelList[indexPath.row].channelName
354 return cell 354 return cell
355 } 355 }
ParentAssistant/ParentAssistant/Classes/controllers/Information/view/ChannelCollectionViewCell.xib
@@ -41,25 +41,25 @@ @@ -41,25 +41,25 @@
41 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="评论:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lvp-kr-OuU"> 41 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="评论:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lvp-kr-OuU">
42 <rect key="frame" x="8" y="72" width="24" height="12"/> 42 <rect key="frame" x="8" y="72" width="24" height="12"/>
43 <fontDescription key="fontDescription" type="system" pointSize="10"/> 43 <fontDescription key="fontDescription" type="system" pointSize="10"/>
44 - <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="calibratedWhite"/> 44 + <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
45 <nil key="highlightedColor"/> 45 <nil key="highlightedColor"/>
46 </label> 46 </label>
47 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="30" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3KK-be-Vix"> 47 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="30" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3KK-be-Vix">
48 <rect key="frame" x="40" y="72" width="13" height="12"/> 48 <rect key="frame" x="40" y="72" width="13" height="12"/>
49 <fontDescription key="fontDescription" type="system" pointSize="10"/> 49 <fontDescription key="fontDescription" type="system" pointSize="10"/>
50 - <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="calibratedWhite"/> 50 + <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
51 <nil key="highlightedColor"/> 51 <nil key="highlightedColor"/>
52 </label> 52 </label>
53 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="分享:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wMQ-5O-LNi"> 53 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="转发:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wMQ-5O-LNi">
54 <rect key="frame" x="182" y="72" width="24" height="12"/> 54 <rect key="frame" x="182" y="72" width="24" height="12"/>
55 <fontDescription key="fontDescription" type="system" pointSize="10"/> 55 <fontDescription key="fontDescription" type="system" pointSize="10"/>
56 - <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="calibratedWhite"/> 56 + <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
57 <nil key="highlightedColor"/> 57 <nil key="highlightedColor"/>
58 </label> 58 </label>
59 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="15" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dfn-o9-z6k"> 59 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="15" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dfn-o9-z6k">
60 <rect key="frame" x="214" y="72" width="11.5" height="12"/> 60 <rect key="frame" x="214" y="72" width="11.5" height="12"/>
61 <fontDescription key="fontDescription" type="system" pointSize="10"/> 61 <fontDescription key="fontDescription" type="system" pointSize="10"/>
62 - <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="calibratedWhite"/> 62 + <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
63 <nil key="highlightedColor"/> 63 <nil key="highlightedColor"/>
64 </label> 64 </label>
65 </subviews> 65 </subviews>
ParentAssistant/ParentAssistant/Classes/controllers/Information/view/ChannelSelectViewCollectionViewCell.xib
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <rect key="frame" x="0.0" y="0.0" width="89" height="92"/> 20 <rect key="frame" x="0.0" y="0.0" width="89" height="92"/>
21 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 21 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
22 <subviews> 22 <subviews>
23 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Eco-Nm-1SK"> 23 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_highSchoolEnter" translatesAutoresizingMaskIntoConstraints="NO" id="Eco-Nm-1SK">
24 <rect key="frame" x="18.5" y="8" width="52" height="52"/> 24 <rect key="frame" x="18.5" y="8" width="52" height="52"/>
25 <constraints> 25 <constraints>
26 <constraint firstAttribute="width" secondItem="Eco-Nm-1SK" secondAttribute="height" multiplier="1:1" id="8K9-ZW-Cxu"/> 26 <constraint firstAttribute="width" secondItem="Eco-Nm-1SK" secondAttribute="height" multiplier="1:1" id="8K9-ZW-Cxu"/>
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 <userDefinedRuntimeAttributes> 28 <userDefinedRuntimeAttributes>
29 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/> 29 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
30 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 30 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
31 - <integer key="value" value="26"/> 31 + <integer key="value" value="0"/>
32 </userDefinedRuntimeAttribute> 32 </userDefinedRuntimeAttribute>
33 </userDefinedRuntimeAttributes> 33 </userDefinedRuntimeAttributes>
34 </imageView> 34 </imageView>
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 <constraint firstAttribute="height" constant="16" id="Zvs-7M-0pT"/> 38 <constraint firstAttribute="height" constant="16" id="Zvs-7M-0pT"/>
39 </constraints> 39 </constraints>
40 <fontDescription key="fontDescription" type="system" pointSize="13"/> 40 <fontDescription key="fontDescription" type="system" pointSize="13"/>
41 - <nil key="textColor"/> 41 + <color key="textColor" red="0.27450980390000002" green="0.50980392159999999" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
42 <nil key="highlightedColor"/> 42 <nil key="highlightedColor"/>
43 </label> 43 </label>
44 </subviews> 44 </subviews>
@@ -59,4 +59,7 @@ @@ -59,4 +59,7 @@
59 <point key="canvasLocation" x="48" y="63"/> 59 <point key="canvasLocation" x="48" y="63"/>
60 </collectionViewCell> 60 </collectionViewCell>
61 </objects> 61 </objects>
  62 + <resources>
  63 + <image name="evaluation_icon_highSchoolEnter" width="44" height="44"/>
  64 + </resources>
62 </document> 65 </document>
ParentAssistant/ParentAssistant/Classes/controllers/evaluation/EvaluationViewController.swift
@@ -28,7 +28,7 @@ class EvaluationViewController: UIViewController,CLLocationManagerDelegate,Selec @@ -28,7 +28,7 @@ class EvaluationViewController: UIViewController,CLLocationManagerDelegate,Selec
28 var leftLabel:UILabel! 28 var leftLabel:UILabel!
29 override func viewDidLoad() { 29 override func viewDidLoad() {
30 super.viewDidLoad() 30 super.viewDidLoad()
31 - self.navigationItem.title = "测评" 31 + self.navigationItem.title = "慧测慧练"
32 addLeftBarBtn() 32 addLeftBarBtn()
33 locationAction() 33 locationAction()
34 addBottomBtn() 34 addBottomBtn()
@@ -120,7 +120,7 @@ class EvaluationViewController: UIViewController,CLLocationManagerDelegate,Selec @@ -120,7 +120,7 @@ class EvaluationViewController: UIViewController,CLLocationManagerDelegate,Selec
120 let leftbtn = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40)) 120 let leftbtn = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40))
121 leftLabel = UILabel(frame: CGRect(x: 0, y: 10, width: 60, height: 20)) 121 leftLabel = UILabel(frame: CGRect(x: 0, y: 10, width: 60, height: 20))
122 leftLabel.text = AccountManager.shared.address 122 leftLabel.text = AccountManager.shared.address
123 - leftLabel.textColor = UIColor.black 123 + leftLabel.textColor = UIColor.white
124 leftLabel.sizeToFit() 124 leftLabel.sizeToFit()
125 let image = UIImageView(frame: CGRect(x: leftLabel.frame.maxX+4, y: 15, width: 16, height: 9)) 125 let image = UIImageView(frame: CGRect(x: leftLabel.frame.maxX+4, y: 15, width: 16, height: 9))
126 image.image = #imageLiteral(resourceName: "evaluation_icon_pushDown") 126 image.image = #imageLiteral(resourceName: "evaluation_icon_pushDown")
@@ -260,7 +260,7 @@ extension EvaluationViewController:UICollectionViewDataSource,UICollectionViewDe @@ -260,7 +260,7 @@ extension EvaluationViewController:UICollectionViewDataSource,UICollectionViewDe
260 260
261 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 261 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
262 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "channelcell", for: indexPath) as! ChannelSelectViewCollectionViewCell 262 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "channelcell", for: indexPath) as! ChannelSelectViewCollectionViewCell
263 - cell.image.sd_setImage(with: URL(string: (HTTPServer.HOSTImage+toolArr[indexPath.row].toolImage).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: #imageLiteral(resourceName: "defphoto")) 263 + cell.image.sd_setImage(with: URL(string: (HTTPServer.HOSTImage+toolArr[indexPath.row].toolImage).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "evaluation_icon_highSchoolEnter"))
264 cell.channelName.text = toolArr[indexPath.row].toolName 264 cell.channelName.text = toolArr[indexPath.row].toolName
265 return cell 265 return cell
266 } 266 }
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/GetBackPasswordViewController.swift
@@ -33,7 +33,7 @@ class GetBackPasswordViewController: UIViewController,UITextFieldDelegate { @@ -33,7 +33,7 @@ class GetBackPasswordViewController: UIViewController,UITextFieldDelegate {
33 getCodeBtn.layer.borderColor = UIColor.lightGray.cgColor 33 getCodeBtn.layer.borderColor = UIColor.lightGray.cgColor
34 topView.constant = (getScreenHeight()-325)/3 34 topView.constant = (getScreenHeight()-325)/3
35 passwordHiddenBtn.setImage(UIImage(named: "my_password_look"), for: UIControlState.selected) 35 passwordHiddenBtn.setImage(UIImage(named: "my_password_look"), for: UIControlState.selected)
36 - NotificationCenter.default.addObserver(self, selector: #selector(RegisterViewController.keyboardWIllChange(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil) 36 + NotificationCenter.default.addObserver(self, selector: #selector(GetBackPasswordViewController.keyboardWIllChange(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
37 } 37 }
38 // MARK: - 根据键盘调整高度 38 // MARK: - 根据键盘调整高度
39 @objc func keyboardWIllChange(_ noti: Notification){ 39 @objc func keyboardWIllChange(_ noti: Notification){
@@ -122,9 +122,63 @@ class GetBackPasswordViewController: UIViewController,UITextFieldDelegate { @@ -122,9 +122,63 @@ class GetBackPasswordViewController: UIViewController,UITextFieldDelegate {
122 httpJsonResule(jsonString: str, error: error, successHandler: { (json) -> Void in 122 httpJsonResule(jsonString: str, error: error, successHandler: { (json) -> Void in
123 let alertVC = UIAlertController(title: "提示", message: "密码修改成功", preferredStyle: UIAlertControllerStyle.alert) 123 let alertVC = UIAlertController(title: "提示", message: "密码修改成功", preferredStyle: UIAlertControllerStyle.alert)
124 let showBtn = UIAlertAction(title: "确认", style: UIAlertActionStyle.default) { (action) in 124 let showBtn = UIAlertAction(title: "确认", style: UIAlertActionStyle.default) { (action) in
125 - self.dismiss(animated: true) {  
126 - //登录  
127 - } 125 + self.navigationController?.popToRootViewController(animated: true)
  126 + //登录
  127 + SVProgressHUD.show(withStatus: "登录中...")
  128 + HTTPServer.shared.login(completionHandler: { (str, error) in
  129 + SVProgressHUD.dismiss()
  130 + let json=JSON.fromString(str)
  131 + if let ret=json{
  132 + let er=ret["error"].string
  133 + if let errorStr=er{
  134 + let Strings=errorStr.components(separatedBy: ":")
  135 + if Strings.count >= 2 {
  136 + switch Strings[1] {
  137 + //用户关联多个身份,请使用学事号登录:100
  138 + case "101"://用户认证身份不存在:101
  139 + appDelegate.window!.makeToast("用户认证身份不存在,请进行账号激活。")
  140 + break
  141 + //用户帐号或密码错误:102
  142 + case "103":// 用户不存在:103
  143 + appDelegate.window!.makeToast("该号码不存在,请联系客服400-826-2468")
  144 + break
  145 + default:
  146 + appDelegate.window!.makeToast(errorStr)
  147 + break
  148 + }
  149 + }else{
  150 + appDelegate.window!.makeToast(errorStr)
  151 + }
  152 + }else if ret["access_token"].stringValue != ""{
  153 + AccountManager.shared.setTokenInfo(tokenInfo: ret)
  154 + AccountManager.shared.saveToken(tokenInfo: ret)
  155 + AccountManager.shared.refreshUserInfo(self.phoneTextField.text!, completionHandler: { (finish) in
  156 + if finish{
  157 + let ID=AccountManager.shared.rawUserInfo!.contentData()["userid"].stringValue
  158 + YXMessageManager.share.loginWithYX(account: ID, token: ID.md5()) { (success) in
  159 + SVProgressHUD.dismiss()
  160 + if !success {
  161 + AccountManager.shared.logOut()
  162 + appDelegate.window!.makeToast("聊天服务登录失败,请连接网络重试")
  163 + }else{
  164 + //云信登录成功
  165 + self.dismiss(animated: true, completion: nil)
  166 + }
  167 + }
  168 + }else{
  169 + appDelegate.window!.makeToast("身份获取失败")
  170 + SVProgressHUD.dismiss()
  171 + }
  172 + })
  173 + }else{
  174 + SVProgressHUD.dismiss()
  175 + appDelegate.window!.makeToast("登录失败,请稍后重试")
  176 + }
  177 + }else{
  178 + SVProgressHUD.dismiss()
  179 + appDelegate.window!.makeToast("登录失败")
  180 + }
  181 + }, phone: self.phoneTextField.text!, password: self.passwordTextField.text!)
128 } 182 }
129 alertVC.addAction(showBtn) 183 alertVC.addAction(showBtn)
130 self.present(alertVC, animated: true, completion: nil) 184 self.present(alertVC, animated: true, completion: nil)
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/LoginViewController.swift
@@ -14,24 +14,22 @@ class LoginViewController: UIViewController,UITextFieldDelegate { @@ -14,24 +14,22 @@ class LoginViewController: UIViewController,UITextFieldDelegate {
14 @IBOutlet var phoneTextField: UITextField!//电话号码 14 @IBOutlet var phoneTextField: UITextField!//电话号码
15 @IBOutlet var passwordTextField: UITextField!//密码 15 @IBOutlet var passwordTextField: UITextField!//密码
16 @IBOutlet var passwordHiddenBtn: UIButton!//查看密码按钮 16 @IBOutlet var passwordHiddenBtn: UIButton!//查看密码按钮
17 - var phoneNumber:String = ""  
18 override func viewDidLoad() { 17 override func viewDidLoad() {
19 super.viewDidLoad() 18 super.viewDidLoad()
20 layoutSubViews() 19 layoutSubViews()
21 } 20 }
22 override func viewWillAppear(_ animated: Bool) { 21 override func viewWillAppear(_ animated: Bool) {
23 super.viewWillAppear(animated) 22 super.viewWillAppear(animated)
24 - self.navigationController?.navigationBar.isHidden = true 23 + self.navigationController?.navigationBar.isHidden = false
25 } 24 }
26 // MARK: - 设置控件属性 25 // MARK: - 设置控件属性
27 func layoutSubViews(){ 26 func layoutSubViews(){
28 - self.navigationController?.navigationBar.isHidden = true 27 + self.navigationController?.navigationBar.isHidden = false
  28 + self.navigationItem.title = "登录"
29 topView.constant = (getScreenHeight()-325)/3 29 topView.constant = (getScreenHeight()-325)/3
30 passwordHiddenBtn.setImage(UIImage(named: "my_password_look"), for: UIControlState.selected) 30 passwordHiddenBtn.setImage(UIImage(named: "my_password_look"), for: UIControlState.selected)
31 - NotificationCenter.default.addObserver(self, selector: #selector(RegisterViewController.keyboardWIllChange(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)  
32 - if phoneNumber != "" {  
33 - phoneTextField.text = phoneNumber  
34 - } 31 + NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.keyboardWIllChange(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
  32 + NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.getPhoneNumber(_:)), name: NSNotification.Name(rawValue: MyPhoneNumberNotification.getPhoneNumber), object: nil)
35 } 33 }
36 // MARK: - 根据键盘调整高度 34 // MARK: - 根据键盘调整高度
37 @objc func keyboardWIllChange(_ noti: Notification){ 35 @objc func keyboardWIllChange(_ noti: Notification){
@@ -40,9 +38,13 @@ class LoginViewController: UIViewController,UITextFieldDelegate { @@ -40,9 +38,13 @@ class LoginViewController: UIViewController,UITextFieldDelegate {
40 if endFrame?.origin.y == getScreenHeight() { 38 if endFrame?.origin.y == getScreenHeight() {
41 topView.constant = (getScreenHeight()-325)/3 39 topView.constant = (getScreenHeight()-325)/3
42 }else{ 40 }else{
43 - topView.constant = (endFrame?.origin.y)!-325 41 + topView.constant = (endFrame?.origin.y)!-375
44 } 42 }
45 } 43 }
  44 + @objc func getPhoneNumber(_ noti: Notification){
  45 + let userInfo:NSDictionary=noti.userInfo! as NSDictionary
  46 + phoneTextField.text = userInfo["phoneNumber"] as? String
  47 + }
46 48
47 // MARK: - 密码显示与否 49 // MARK: - 密码显示与否
48 @IBAction func passwordHiddenAction(_ sender: UIButton) { 50 @IBAction func passwordHiddenAction(_ sender: UIButton) {
@@ -121,14 +123,15 @@ class LoginViewController: UIViewController,UITextFieldDelegate { @@ -121,14 +123,15 @@ class LoginViewController: UIViewController,UITextFieldDelegate {
121 appDelegate.window!.makeToast("聊天服务登录失败,请连接网络重试") 123 appDelegate.window!.makeToast("聊天服务登录失败,请连接网络重试")
122 }else{ 124 }else{
123 //云信登录成功 125 //云信登录成功
124 - self.dismiss(animated: true, completion: nil) 126 + self.navigationController?.popToRootViewController(animated: true)
125 } 127 }
126 } 128 }
127 } 129 }
128 130
129 // MARK: - 注册页面跳转 131 // MARK: - 注册页面跳转
130 @IBAction func registerAction(_ sender: UIButton) { 132 @IBAction func registerAction(_ sender: UIButton) {
131 - self.navigationController?.popViewController(animated: true) 133 + let vc = Story.instantiateViewControllerWithIdentifier("RegisterViewController", storyName: "My") as! RegisterViewController
  134 + self.navigationController?.pushViewController(vc, animated: true)
132 } 135 }
133 // MARK: - 找回密码 136 // MARK: - 找回密码
134 @IBAction func getPasswordAction(_ sender: UIButton) { 137 @IBAction func getPasswordAction(_ sender: UIButton) {
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/My.storyboard
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a5f-wj-3dN"> 23 <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a5f-wj-3dN">
24 <rect key="frame" x="0.0" y="181" width="375" height="325"/> 24 <rect key="frame" x="0.0" y="181" width="375" height="325"/>
25 <subviews> 25 <subviews>
26 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_image" translatesAutoresizingMaskIntoConstraints="NO" id="gLu-cN-6Yp"> 26 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto" translatesAutoresizingMaskIntoConstraints="NO" id="gLu-cN-6Yp">
27 <rect key="frame" x="157.5" y="0.0" width="60" height="60"/> 27 <rect key="frame" x="157.5" y="0.0" width="60" height="60"/>
28 <constraints> 28 <constraints>
29 <constraint firstAttribute="width" constant="60" id="AhV-UG-PjF"/> 29 <constraint firstAttribute="width" constant="60" id="AhV-UG-PjF"/>
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 <userDefinedRuntimeAttributes> 32 <userDefinedRuntimeAttributes>
33 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/> 33 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
34 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 34 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
35 - <integer key="value" value="5"/> 35 + <integer key="value" value="30"/>
36 </userDefinedRuntimeAttribute> 36 </userDefinedRuntimeAttribute>
37 </userDefinedRuntimeAttributes> 37 </userDefinedRuntimeAttributes>
38 </imageView> 38 </imageView>
@@ -181,7 +181,7 @@ @@ -181,7 +181,7 @@
181 <constraint firstAttribute="height" constant="40" id="y2X-Wd-k77"/> 181 <constraint firstAttribute="height" constant="40" id="y2X-Wd-k77"/>
182 </constraints> 182 </constraints>
183 <state key="normal" title="注册"> 183 <state key="normal" title="注册">
184 - <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 184 + <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
185 </state> 185 </state>
186 <userDefinedRuntimeAttributes> 186 <userDefinedRuntimeAttributes>
187 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/> 187 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
@@ -196,14 +196,14 @@ @@ -196,14 +196,14 @@
196 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3No-8C-Khf"> 196 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3No-8C-Khf">
197 <rect key="frame" x="8" y="306" width="359" height="19"/> 197 <rect key="frame" x="8" y="306" width="359" height="19"/>
198 <subviews> 198 <subviews>
199 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="已注册,直接登录" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TUw-vF-sIc">  
200 - <rect key="frame" x="0.0" y="0.0" width="205" height="19"/> 199 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="已注册,直接登录" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TUw-vF-sIc">
  200 + <rect key="frame" x="0.0" y="0.0" width="114.5" height="19"/>
201 <fontDescription key="fontDescription" type="system" pointSize="14"/> 201 <fontDescription key="fontDescription" type="system" pointSize="14"/>
202 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> 202 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
203 <nil key="highlightedColor"/> 203 <nil key="highlightedColor"/>
204 </label> 204 </label>
205 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YZ4-eP-Zus">  
206 - <rect key="frame" x="205" y="0.0" width="154" height="19"/> 205 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YZ4-eP-Zus">
  206 + <rect key="frame" x="123" y="0.0" width="236" height="19"/>
207 <fontDescription key="fontDescription" type="system" pointSize="14"/> 207 <fontDescription key="fontDescription" type="system" pointSize="14"/>
208 <state key="normal" title="登录"/> 208 <state key="normal" title="登录"/>
209 <connections> 209 <connections>
@@ -213,14 +213,13 @@ @@ -213,14 +213,13 @@
213 </subviews> 213 </subviews>
214 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 214 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
215 <constraints> 215 <constraints>
216 - <constraint firstItem="TUw-vF-sIc" firstAttribute="width" secondItem="3No-8C-Khf" secondAttribute="width" multiplier="4:7" id="0S3-e9-Pm6"/>  
217 <constraint firstAttribute="height" constant="19" id="6xe-Im-rue"/> 216 <constraint firstAttribute="height" constant="19" id="6xe-Im-rue"/>
218 <constraint firstAttribute="bottom" secondItem="YZ4-eP-Zus" secondAttribute="bottom" id="9fU-TJ-3nM"/> 217 <constraint firstAttribute="bottom" secondItem="YZ4-eP-Zus" secondAttribute="bottom" id="9fU-TJ-3nM"/>
219 <constraint firstItem="TUw-vF-sIc" firstAttribute="leading" secondItem="3No-8C-Khf" secondAttribute="leading" id="Pxw-ua-3ch"/> 218 <constraint firstItem="TUw-vF-sIc" firstAttribute="leading" secondItem="3No-8C-Khf" secondAttribute="leading" id="Pxw-ua-3ch"/>
220 <constraint firstItem="TUw-vF-sIc" firstAttribute="top" secondItem="3No-8C-Khf" secondAttribute="top" id="Q23-ca-Ct3"/> 219 <constraint firstItem="TUw-vF-sIc" firstAttribute="top" secondItem="3No-8C-Khf" secondAttribute="top" id="Q23-ca-Ct3"/>
221 <constraint firstAttribute="trailing" secondItem="YZ4-eP-Zus" secondAttribute="trailing" id="StK-wf-UFf"/> 220 <constraint firstAttribute="trailing" secondItem="YZ4-eP-Zus" secondAttribute="trailing" id="StK-wf-UFf"/>
222 - <constraint firstItem="YZ4-eP-Zus" firstAttribute="leading" secondItem="TUw-vF-sIc" secondAttribute="trailing" id="Stg-cL-NuI"/>  
223 <constraint firstItem="YZ4-eP-Zus" firstAttribute="top" secondItem="3No-8C-Khf" secondAttribute="top" id="csH-Mm-TFr"/> 221 <constraint firstItem="YZ4-eP-Zus" firstAttribute="top" secondItem="3No-8C-Khf" secondAttribute="top" id="csH-Mm-TFr"/>
  222 + <constraint firstItem="YZ4-eP-Zus" firstAttribute="leading" secondItem="TUw-vF-sIc" secondAttribute="trailing" constant="8" id="dUi-pP-48X"/>
224 <constraint firstAttribute="bottom" secondItem="TUw-vF-sIc" secondAttribute="bottom" id="etM-WV-v9B"/> 223 <constraint firstAttribute="bottom" secondItem="TUw-vF-sIc" secondAttribute="bottom" id="etM-WV-v9B"/>
225 </constraints> 224 </constraints>
226 </view> 225 </view>
@@ -264,7 +263,7 @@ @@ -264,7 +263,7 @@
264 </viewController> 263 </viewController>
265 <placeholder placeholderIdentifier="IBFirstResponder" id="ebc-9u-7ih" userLabel="First Responder" sceneMemberID="firstResponder"/> 264 <placeholder placeholderIdentifier="IBFirstResponder" id="ebc-9u-7ih" userLabel="First Responder" sceneMemberID="firstResponder"/>
266 </objects> 265 </objects>
267 - <point key="canvasLocation" x="-1308" y="-70"/> 266 + <point key="canvasLocation" x="-1308" y="-70.614692653673174"/>
268 </scene> 267 </scene>
269 <!--修改密码--> 268 <!--修改密码-->
270 <scene sceneID="3yG-jT-RDd"> 269 <scene sceneID="3yG-jT-RDd">
@@ -277,7 +276,7 @@ @@ -277,7 +276,7 @@
277 <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9Ce-ZJ-VAH"> 276 <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9Ce-ZJ-VAH">
278 <rect key="frame" x="0.0" y="224" width="375" height="325"/> 277 <rect key="frame" x="0.0" y="224" width="375" height="325"/>
279 <subviews> 278 <subviews>
280 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_image" translatesAutoresizingMaskIntoConstraints="NO" id="Jy5-it-uFI"> 279 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto" translatesAutoresizingMaskIntoConstraints="NO" id="Jy5-it-uFI">
281 <rect key="frame" x="157.5" y="0.0" width="60" height="60"/> 280 <rect key="frame" x="157.5" y="0.0" width="60" height="60"/>
282 <constraints> 281 <constraints>
283 <constraint firstAttribute="width" secondItem="Jy5-it-uFI" secondAttribute="height" multiplier="1:1" id="3m6-TK-U6H"/> 282 <constraint firstAttribute="width" secondItem="Jy5-it-uFI" secondAttribute="height" multiplier="1:1" id="3m6-TK-U6H"/>
@@ -286,7 +285,7 @@ @@ -286,7 +285,7 @@
286 <userDefinedRuntimeAttributes> 285 <userDefinedRuntimeAttributes>
287 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/> 286 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
288 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 287 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
289 - <integer key="value" value="5"/> 288 + <integer key="value" value="30"/>
290 </userDefinedRuntimeAttribute> 289 </userDefinedRuntimeAttribute>
291 </userDefinedRuntimeAttributes> 290 </userDefinedRuntimeAttributes>
292 </imageView> 291 </imageView>
@@ -552,7 +551,7 @@ @@ -552,7 +551,7 @@
552 <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iNa-Xg-qR8"> 551 <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iNa-Xg-qR8">
553 <rect key="frame" x="0.0" y="148" width="375" height="325"/> 552 <rect key="frame" x="0.0" y="148" width="375" height="325"/>
554 <subviews> 553 <subviews>
555 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_image" translatesAutoresizingMaskIntoConstraints="NO" id="MuP-eU-u8t"> 554 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="defphoto" translatesAutoresizingMaskIntoConstraints="NO" id="MuP-eU-u8t">
556 <rect key="frame" x="157.5" y="0.0" width="60" height="60"/> 555 <rect key="frame" x="157.5" y="0.0" width="60" height="60"/>
557 <constraints> 556 <constraints>
558 <constraint firstAttribute="width" secondItem="MuP-eU-u8t" secondAttribute="height" multiplier="1:1" id="2dS-lO-wew"/> 557 <constraint firstAttribute="width" secondItem="MuP-eU-u8t" secondAttribute="height" multiplier="1:1" id="2dS-lO-wew"/>
@@ -561,7 +560,7 @@ @@ -561,7 +560,7 @@
561 <userDefinedRuntimeAttributes> 560 <userDefinedRuntimeAttributes>
562 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/> 561 <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
563 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 562 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
564 - <integer key="value" value="5"/> 563 + <integer key="value" value="30"/>
565 </userDefinedRuntimeAttribute> 564 </userDefinedRuntimeAttribute>
566 </userDefinedRuntimeAttributes> 565 </userDefinedRuntimeAttributes>
567 </imageView> 566 </imageView>
@@ -678,17 +677,14 @@ @@ -678,17 +677,14 @@
678 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X9h-K7-0bg"> 677 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X9h-K7-0bg">
679 <rect key="frame" x="8" y="268" width="359" height="19"/> 678 <rect key="frame" x="8" y="268" width="359" height="19"/>
680 <subviews> 679 <subviews>
681 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="还没有账号,快速" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fRW-Sg-QbI">  
682 - <rect key="frame" x="0.0" y="0.0" width="185.5" height="19"/> 680 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="还没有账号,快速" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fRW-Sg-QbI">
  681 + <rect key="frame" x="0.0" y="0.0" width="114.5" height="19"/>
683 <fontDescription key="fontDescription" type="system" pointSize="14"/> 682 <fontDescription key="fontDescription" type="system" pointSize="14"/>
684 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> 683 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
685 <nil key="highlightedColor"/> 684 <nil key="highlightedColor"/>
686 </label> 685 </label>
687 - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fzA-Ya-qRu">  
688 - <rect key="frame" x="185" y="0.0" width="30" height="19"/>  
689 - <constraints>  
690 - <constraint firstAttribute="width" constant="30" id="FTv-oS-l1N"/>  
691 - </constraints> 686 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fzA-Ya-qRu">
  687 + <rect key="frame" x="114" y="0.0" width="101" height="19"/>
692 <fontDescription key="fontDescription" type="system" pointSize="14"/> 688 <fontDescription key="fontDescription" type="system" pointSize="14"/>
693 <state key="normal" title="注册"/> 689 <state key="normal" title="注册"/>
694 <connections> 690 <connections>
@@ -698,7 +694,7 @@ @@ -698,7 +694,7 @@
698 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="right" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bh4-Vg-DUl"> 694 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="right" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bh4-Vg-DUl">
699 <rect key="frame" x="215.5" y="0.0" width="143.5" height="19"/> 695 <rect key="frame" x="215.5" y="0.0" width="143.5" height="19"/>
700 <fontDescription key="fontDescription" type="system" pointSize="14"/> 696 <fontDescription key="fontDescription" type="system" pointSize="14"/>
701 - <state key="normal" title="找回密码"/> 697 + <state key="normal" title="忘记密码"/>
702 <connections> 698 <connections>
703 <action selector="getPasswordAction:" destination="UG5-bJ-YrY" eventType="touchUpInside" id="EJR-6a-h6E"/> 699 <action selector="getPasswordAction:" destination="UG5-bJ-YrY" eventType="touchUpInside" id="EJR-6a-h6E"/>
704 <action selector="loginAction:" destination="Uds-ft-2AX" eventType="touchUpInside" id="WkS-hX-ran"/> 700 <action selector="loginAction:" destination="Uds-ft-2AX" eventType="touchUpInside" id="WkS-hX-ran"/>
@@ -1608,7 +1604,6 @@ @@ -1608,7 +1604,6 @@
1608 </scenes> 1604 </scenes>
1609 <resources> 1605 <resources>
1610 <image name="defphoto" width="128" height="128"/> 1606 <image name="defphoto" width="128" height="128"/>
1611 - <image name="icon_image" width="512" height="512"/>  
1612 <image name="my_currentInf_gendernoselected" width="16" height="16"/> 1607 <image name="my_currentInf_gendernoselected" width="16" height="16"/>
1613 <image name="my_headerView_backgroundimageView" width="375" height="139"/> 1608 <image name="my_headerView_backgroundimageView" width="375" height="139"/>
1614 <image name="my_order_message" width="52" height="36"/> 1609 <image name="my_order_message" width="52" height="36"/>
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MyViewController.swift
@@ -27,7 +27,6 @@ class MyViewController: UIViewController { @@ -27,7 +27,6 @@ class MyViewController: UIViewController {
27 } 27 }
28 // MARK: - 设置控件属性 28 // MARK: - 设置控件属性
29 func layoutSubViews(){ 29 func layoutSubViews(){
30 - self.navigationController?.navigationBar.barStyle = UIBarStyle.default// UIColorFromRGB(0xC5DAFF)  
31 let backImage = UIImage(named: "navigationBar_backgrounImage") 30 let backImage = UIImage(named: "navigationBar_backgrounImage")
32 self.navigationController?.navigationBar.setBackgroundImage(backImage, for: UIBarMetrics.default) 31 self.navigationController?.navigationBar.setBackgroundImage(backImage, for: UIBarMetrics.default)
33 // MARK: - 是否是iPhoneX顶部刘海 32 // MARK: - 是否是iPhoneX顶部刘海
@@ -72,7 +71,7 @@ class MyViewController: UIViewController { @@ -72,7 +71,7 @@ class MyViewController: UIViewController {
72 let info = AccountManager.shared 71 let info = AccountManager.shared
73 personNameLabel.text = info.name() 72 personNameLabel.text = info.name()
74 personNumberLabel.text = info.phone() 73 personNumberLabel.text = info.phone()
75 - personIconImageView.sd_setImage(with: URL(string: AccountManager.shared.photo().addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "defphoto")) 74 + personIconImageView.sd_setImage(with: URL(string: AccountManager.shared.photo().addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "my_defphoto"))
76 }else{ 75 }else{
77 logoutBtn.isHidden = true 76 logoutBtn.isHidden = true
78 personNameLabel.isHidden = true 77 personNameLabel.isHidden = true
@@ -80,14 +79,14 @@ class MyViewController: UIViewController { @@ -80,14 +79,14 @@ class MyViewController: UIViewController {
80 loginBtn.isHidden = false 79 loginBtn.isHidden = false
81 currentInfoBtn.isHidden = true 80 currentInfoBtn.isHidden = true
82 headerBackGroundImageView.image = UIImage(named: "navigationBar_backgrounImage") 81 headerBackGroundImageView.image = UIImage(named: "navigationBar_backgrounImage")
83 - personIconImageView.image = UIImage(named: "defphoto") 82 + personIconImageView.image = UIImage(named: "my_defphoto")
84 } 83 }
85 currentInfoTableView.reloadData() 84 currentInfoTableView.reloadData()
86 } 85 }
87 // MARK: - 登录按钮点击方法 86 // MARK: - 登录按钮点击方法
88 @IBAction func showLoginAction(_ sender: UIButton) { 87 @IBAction func showLoginAction(_ sender: UIButton) {
89 - let vc = Story.instantiateViewControllerWithIdentifier("RegisterViewController", storyName: "My") as! RegisterViewController  
90 - self.present(vc.wrapWithNavigationController(), animated: true, completion: nil) 88 + let vc = Story.instantiateViewControllerWithIdentifier("LoginViewController", storyName: "My") as! LoginViewController
  89 + self.navigationController?.pushViewController(vc, animated: true)
91 } 90 }
92 91
93 // MARK: - 个人信息按钮点击方法 92 // MARK: - 个人信息按钮点击方法
@@ -175,10 +174,13 @@ extension MyViewController: UITableViewDelegate,UITableViewDataSource{ @@ -175,10 +174,13 @@ extension MyViewController: UITableViewDelegate,UITableViewDataSource{
175 174
176 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 175 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
177 switch indexPath.row { 176 switch indexPath.row {
178 - case 0,3,5,6,7: 177 + case 5,6,7:
179 return 44 178 return 44
180 - case 1,2:  
181 - if !AccountManager.shared.isOnline() || (AccountManager.shared.isOnline() && AccountManager.shared.name()=="葛建军") {//隐藏支付相关功能 179 + case 0,1,2,3:
  180 + if !AccountManager.shared.isOnline() {
  181 + return 0
  182 + }
  183 + if AccountManager.shared.isOnline() && AccountManager.shared.name()=="葛建军" && (indexPath.row == 1 || indexPath.row == 2){//隐藏支付相关功能
182 return 0 184 return 0
183 }else{ 185 }else{
184 return 44 186 return 44
ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/RegisterViewController.swift
@@ -26,7 +26,8 @@ class RegisterViewController: UIViewController,UITextFieldDelegate { @@ -26,7 +26,8 @@ class RegisterViewController: UIViewController,UITextFieldDelegate {
26 } 26 }
27 // MARK: - 设置控件属性 27 // MARK: - 设置控件属性
28 func layoutSubViews(){ 28 func layoutSubViews(){
29 - self.navigationController?.navigationBar.isHidden = true 29 + self.navigationController?.navigationBar.isHidden = false
  30 + self.navigationItem.title = "注册"
30 getCodeBtn.layer.borderWidth = 1.0 31 getCodeBtn.layer.borderWidth = 1.0
31 getCodeBtn.layer.borderColor = UIColor.lightGray.cgColor 32 getCodeBtn.layer.borderColor = UIColor.lightGray.cgColor
32 topView.constant = (getScreenHeight()-325)/3 33 topView.constant = (getScreenHeight()-325)/3
@@ -40,7 +41,7 @@ class RegisterViewController: UIViewController,UITextFieldDelegate { @@ -40,7 +41,7 @@ class RegisterViewController: UIViewController,UITextFieldDelegate {
40 if endFrame?.origin.y == getScreenHeight() { 41 if endFrame?.origin.y == getScreenHeight() {
41 topView.constant = (getScreenHeight()-325)/3 42 topView.constant = (getScreenHeight()-325)/3
42 }else{ 43 }else{
43 - topView.constant = (endFrame?.origin.y)!-325 44 + topView.constant = (endFrame?.origin.y)!-375
44 } 45 }
45 } 46 }
46 // MARK: - 获取验证码 47 // MARK: - 获取验证码
@@ -107,14 +108,67 @@ class RegisterViewController: UIViewController,UITextFieldDelegate { @@ -107,14 +108,67 @@ class RegisterViewController: UIViewController,UITextFieldDelegate {
107 //登录并返回页面 108 //登录并返回页面
108 let alertVC = UIAlertController(title: "提示", message: "您已注册成功", preferredStyle: UIAlertControllerStyle.alert) 109 let alertVC = UIAlertController(title: "提示", message: "您已注册成功", preferredStyle: UIAlertControllerStyle.alert)
109 let backBtn = UIAlertAction(title: "返回", style: UIAlertActionStyle.default) { (action) in 110 let backBtn = UIAlertAction(title: "返回", style: UIAlertActionStyle.default) { (action) in
110 - let vc = Story.instantiateViewControllerWithIdentifier("LoginViewController", storyName: "My") as! LoginViewController  
111 - vc.phoneNumber = self.phoneTextField.text!  
112 - self.navigationController?.pushViewController(vc, animated: true) 111 + NotificationCenter.default.post(name: Notification.Name(rawValue: MyPhoneNumberNotification.getPhoneNumber), object: nil, userInfo: ["phoneNumber":self.phoneTextField.text!])
  112 + self.navigationController?.popViewController(animated: true)
113 } 113 }
114 let showBtn = UIAlertAction(title: "进入首页", style: UIAlertActionStyle.default) { (action) in 114 let showBtn = UIAlertAction(title: "进入首页", style: UIAlertActionStyle.default) { (action) in
115 - self.dismiss(animated: true) {  
116 - //登录  
117 - } 115 + self.navigationController?.popToRootViewController(animated: true)
  116 + //登录
  117 + SVProgressHUD.show(withStatus: "登录中...")
  118 + HTTPServer.shared.login(completionHandler: { (str, error) in
  119 + SVProgressHUD.dismiss()
  120 + let json=JSON.fromString(str)
  121 + if let ret=json{
  122 + let er=ret["error"].string
  123 + if let errorStr=er{
  124 + let Strings=errorStr.components(separatedBy: ":")
  125 + if Strings.count >= 2 {
  126 + switch Strings[1] {
  127 + //用户关联多个身份,请使用学事号登录:100
  128 + case "101"://用户认证身份不存在:101
  129 + appDelegate.window!.makeToast("用户认证身份不存在,请进行账号激活。")
  130 + break
  131 + //用户帐号或密码错误:102
  132 + case "103":// 用户不存在:103
  133 + appDelegate.window!.makeToast("该号码不存在,请联系客服400-826-2468")
  134 + break
  135 + default:
  136 + appDelegate.window!.makeToast(errorStr)
  137 + break
  138 + }
  139 + }else{
  140 + appDelegate.window!.makeToast(errorStr)
  141 + }
  142 + }else if ret["access_token"].stringValue != ""{
  143 + AccountManager.shared.setTokenInfo(tokenInfo: ret)
  144 + AccountManager.shared.saveToken(tokenInfo: ret)
  145 + AccountManager.shared.refreshUserInfo(self.phoneTextField.text!, completionHandler: { (finish) in
  146 + if finish{
  147 + let ID=AccountManager.shared.rawUserInfo!.contentData()["userid"].stringValue
  148 + YXMessageManager.share.loginWithYX(account: ID, token: ID.md5()) { (success) in
  149 + SVProgressHUD.dismiss()
  150 + if !success {
  151 + AccountManager.shared.logOut()
  152 + appDelegate.window!.makeToast("聊天服务登录失败,请连接网络重试")
  153 + }else{
  154 + //云信登录成功
  155 + self.dismiss(animated: true, completion: nil)
  156 + }
  157 + }
  158 + }else{
  159 + appDelegate.window!.makeToast("身份获取失败")
  160 + SVProgressHUD.dismiss()
  161 + }
  162 + })
  163 + }else{
  164 + SVProgressHUD.dismiss()
  165 + appDelegate.window!.makeToast("登录失败,请稍后重试")
  166 + }
  167 + }else{
  168 + SVProgressHUD.dismiss()
  169 + appDelegate.window!.makeToast("登录失败")
  170 + }
  171 + }, phone: self.phoneTextField.text!, password: self.passwordTextField.text!)
118 } 172 }
119 alertVC.addAction(backBtn) 173 alertVC.addAction(backBtn)
120 alertVC.addAction(showBtn) 174 alertVC.addAction(showBtn)
@@ -135,8 +189,7 @@ class RegisterViewController: UIViewController,UITextFieldDelegate { @@ -135,8 +189,7 @@ class RegisterViewController: UIViewController,UITextFieldDelegate {
135 // MARK: - 登录页面跳转 189 // MARK: - 登录页面跳转
136 190
137 @IBAction func loginAction(_ sender: UIButton) { 191 @IBAction func loginAction(_ sender: UIButton) {
138 - let vc = Story.instantiateViewControllerWithIdentifier("LoginViewController", storyName: "My") as! LoginViewController  
139 - self.navigationController?.pushViewController(vc, animated: true) 192 + self.navigationController?.popViewController(animated: true)
140 } 193 }
141 194
142 195
ParentAssistant/ParentAssistant/Classes/controllers/my/Model/MyViewControllerModel.swift
@@ -20,3 +20,6 @@ public enum MyType: Int { @@ -20,3 +20,6 @@ public enum MyType: Int {
20 case null 20 case null
21 case unknown 21 case unknown
22 } 22 }
  23 +class MyPhoneNumberNotification: NSObject {
  24 + static let getPhoneNumber = "ReceivePhoneNumber"
  25 +}
ParentAssistant/ParentAssistant/Classes/controllers/report/View/ReportHeaderView.xib
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <rect key="frame" x="20" y="7" width="46" height="30"/> 20 <rect key="frame" x="20" y="7" width="46" height="30"/>
21 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 21 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
22 <state key="normal" title="马伯骞"> 22 <state key="normal" title="马伯骞">
23 - <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 23 + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
24 </state> 24 </state>
25 <connections> 25 <connections>
26 <action selector="changeStudentAction:" destination="4WE-cx-977" eventType="touchUpInside" id="Dua-XZ-hMB"/> 26 <action selector="changeStudentAction:" destination="4WE-cx-977" eventType="touchUpInside" id="Dua-XZ-hMB"/>
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 <rect key="frame" x="434" y="7" width="31" height="30"/> 30 <rect key="frame" x="434" y="7" width="31" height="30"/>
31 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 31 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
32 <state key="normal" title="筛选"> 32 <state key="normal" title="筛选">
33 - <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 33 + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
34 </state> 34 </state>
35 <connections> 35 <connections>
36 <action selector="changeTypeAction:" destination="4WE-cx-977" eventType="touchUpInside" id="XFz-ca-od2"/> 36 <action selector="changeTypeAction:" destination="4WE-cx-977" eventType="touchUpInside" id="XFz-ca-od2"/>
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 <rect key="frame" x="191" y="7" width="102" height="30"/> 40 <rect key="frame" x="191" y="7" width="102" height="30"/>
41 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 41 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
42 <state key="normal" title="12月29日"> 42 <state key="normal" title="12月29日">
43 - <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 43 + <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
44 </state> 44 </state>
45 <connections> 45 <connections>
46 <action selector="changeDateAction:" destination="4WE-cx-977" eventType="touchUpInside" id="pCF-3R-0zv"/> 46 <action selector="changeDateAction:" destination="4WE-cx-977" eventType="touchUpInside" id="pCF-3R-0zv"/>
ParentAssistant/ParentAssistant/Classes/util/utils.swift
@@ -574,10 +574,10 @@ extension UIViewController{ @@ -574,10 +574,10 @@ extension UIViewController{
574 func configTheme(){ 574 func configTheme(){
575 self.navigationItem.title=self.navigationController?.title 575 self.navigationItem.title=self.navigationController?.title
576 self.navigationController?.navigationBar.barTintColor=Theme.topBarColor() 576 self.navigationController?.navigationBar.barTintColor=Theme.topBarColor()
577 - self.navigationController?.navigationBar.tintColor=UIColor.black 577 + self.navigationController?.navigationBar.tintColor=UIColor.white
578 self.navigationController?.navigationBar.isTranslucent=false 578 self.navigationController?.navigationBar.isTranslucent=false
579 let textAttributes = NSMutableDictionary(capacity:1) 579 let textAttributes = NSMutableDictionary(capacity:1)
580 - textAttributes.setObject(UIColor.black, forKey: NSAttributedStringKey.foregroundColor as NSCopying) 580 + textAttributes.setObject(UIColor.white, forKey: NSAttributedStringKey.foregroundColor as NSCopying)
581 self.navigationController?.navigationBar.titleTextAttributes=textAttributes as! [AnyHashable: Any] as? [NSAttributedStringKey : Any] 581 self.navigationController?.navigationBar.titleTextAttributes=textAttributes as! [AnyHashable: Any] as? [NSAttributedStringKey : Any]
582 } 582 }
583 ///套上UINavigationController 583 ///套上UINavigationController
ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_pushDown.imageset/Contents.json
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 }, 6 },
7 { 7 {
8 "idiom" : "universal", 8 "idiom" : "universal",
9 - "filename" : "下拉.png", 9 + "filename" : "down.png",
10 "scale" : "2x" 10 "scale" : "2x"
11 }, 11 },
12 { 12 {
ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_pushDown.imageset/down.png 0 → 100644

3.88 KB

ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_pushDown.imageset/下拉.png

603 Bytes

ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/my/my_defphoto.imageset/Contents.json 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "未登录.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/my/my_defphoto.imageset/未登录.png 0 → 100644

3.95 KB

ParentAssistant/ParentAssistant/Supporting Files/Base.lproj/Main.storyboard
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 </collectionView> 50 </collectionView>
51 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hb2-3p-n32"> 51 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hb2-3p-n32">
52 <rect key="frame" x="0.0" y="100" width="359" height="1"/> 52 <rect key="frame" x="0.0" y="100" width="359" height="1"/>
53 - <color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 53 + <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
54 <constraints> 54 <constraints>
55 <constraint firstAttribute="height" constant="1" id="ocV-Mf-9Bd"/> 55 <constraint firstAttribute="height" constant="1" id="ocV-Mf-9Bd"/>
56 </constraints> 56 </constraints>
@@ -64,10 +64,11 @@ @@ -64,10 +64,11 @@
64 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CKI-XD-Eo7"> 64 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CKI-XD-Eo7">
65 <rect key="frame" x="14.5" y="49.5" width="150" height="150"/> 65 <rect key="frame" x="14.5" y="49.5" width="150" height="150"/>
66 <subviews> 66 <subviews>
67 - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_training" translatesAutoresizingMaskIntoConstraints="NO" id="jM3-pe-HNZ">  
68 - <rect key="frame" x="22.5" y="8" width="105" height="105"/> 67 + <imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_training" translatesAutoresizingMaskIntoConstraints="NO" id="jM3-pe-HNZ">
  68 + <rect key="frame" x="50" y="50" width="50" height="50"/>
69 <constraints> 69 <constraints>
70 <constraint firstAttribute="width" secondItem="jM3-pe-HNZ" secondAttribute="height" multiplier="1:1" id="9C5-F1-Q52"/> 70 <constraint firstAttribute="width" secondItem="jM3-pe-HNZ" secondAttribute="height" multiplier="1:1" id="9C5-F1-Q52"/>
  71 + <constraint firstAttribute="width" constant="50" id="OAh-S9-pJU"/>
71 </constraints> 72 </constraints>
72 </imageView> 73 </imageView>
73 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="专项训练" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lMI-9m-Zal"> 74 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="专项训练" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lMI-9m-Zal">
@@ -79,15 +80,24 @@ @@ -79,15 +80,24 @@
79 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 80 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
80 <nil key="highlightedColor"/> 81 <nil key="highlightedColor"/>
81 </label> 82 </label>
  83 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DjB-iQ-LaT">
  84 + <rect key="frame" x="0.0" y="0.0" width="150" height="150"/>
  85 + <connections>
  86 + <action selector="specialTrainingAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="0Nl-aa-Vuk"/>
  87 + </connections>
  88 + </button>
82 </subviews> 89 </subviews>
83 <color key="backgroundColor" red="0.39705835388445299" green="1" blue="0.97920779819417048" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 90 <color key="backgroundColor" red="0.39705835388445299" green="1" blue="0.97920779819417048" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
84 <constraints> 91 <constraints>
85 - <constraint firstItem="jM3-pe-HNZ" firstAttribute="top" secondItem="CKI-XD-Eo7" secondAttribute="top" constant="8" id="22U-Js-vpV"/>  
86 - <constraint firstItem="lMI-9m-Zal" firstAttribute="top" secondItem="jM3-pe-HNZ" secondAttribute="bottom" constant="8" id="3Kt-US-NJz"/> 92 + <constraint firstItem="lMI-9m-Zal" firstAttribute="top" secondItem="jM3-pe-HNZ" secondAttribute="bottom" constant="21" id="2yg-E5-PY1"/>
  93 + <constraint firstItem="DjB-iQ-LaT" firstAttribute="leading" secondItem="CKI-XD-Eo7" secondAttribute="leading" id="4dA-Mq-Ul4"/>
  94 + <constraint firstItem="DjB-iQ-LaT" firstAttribute="top" secondItem="CKI-XD-Eo7" secondAttribute="top" id="D8R-bj-gd0"/>
  95 + <constraint firstItem="jM3-pe-HNZ" firstAttribute="centerY" secondItem="CKI-XD-Eo7" secondAttribute="centerY" id="HP1-hk-di8"/>
  96 + <constraint firstAttribute="trailing" secondItem="DjB-iQ-LaT" secondAttribute="trailing" id="OIA-L4-g1n"/>
87 <constraint firstAttribute="width" constant="150" id="RGQ-Uh-sQh"/> 97 <constraint firstAttribute="width" constant="150" id="RGQ-Uh-sQh"/>
88 - <constraint firstAttribute="bottom" secondItem="lMI-9m-Zal" secondAttribute="bottom" constant="8" id="YuU-rd-fZY"/>  
89 <constraint firstItem="jM3-pe-HNZ" firstAttribute="centerX" secondItem="CKI-XD-Eo7" secondAttribute="centerX" id="fPw-Rq-f06"/> 98 <constraint firstItem="jM3-pe-HNZ" firstAttribute="centerX" secondItem="CKI-XD-Eo7" secondAttribute="centerX" id="fPw-Rq-f06"/>
90 <constraint firstItem="lMI-9m-Zal" firstAttribute="centerX" secondItem="CKI-XD-Eo7" secondAttribute="centerX" id="mOJ-4Z-xW1"/> 99 <constraint firstItem="lMI-9m-Zal" firstAttribute="centerX" secondItem="CKI-XD-Eo7" secondAttribute="centerX" id="mOJ-4Z-xW1"/>
  100 + <constraint firstAttribute="bottom" secondItem="DjB-iQ-LaT" secondAttribute="bottom" id="pta-jf-lKE"/>
91 <constraint firstAttribute="width" secondItem="CKI-XD-Eo7" secondAttribute="height" multiplier="1:1" id="qLV-s3-y6S"/> 101 <constraint firstAttribute="width" secondItem="CKI-XD-Eo7" secondAttribute="height" multiplier="1:1" id="qLV-s3-y6S"/>
92 </constraints> 102 </constraints>
93 <userDefinedRuntimeAttributes> 103 <userDefinedRuntimeAttributes>
@@ -121,21 +131,31 @@ @@ -121,21 +131,31 @@
121 <nil key="highlightedColor"/> 131 <nil key="highlightedColor"/>
122 </label> 132 </label>
123 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_learningManagement" translatesAutoresizingMaskIntoConstraints="NO" id="9ln-nr-VzA"> 133 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="evaluation_icon_learningManagement" translatesAutoresizingMaskIntoConstraints="NO" id="9ln-nr-VzA">
124 - <rect key="frame" x="23" y="8" width="105" height="105"/> 134 + <rect key="frame" x="50.5" y="50" width="50" height="50"/>
125 <constraints> 135 <constraints>
  136 + <constraint firstAttribute="width" constant="50" id="4wp-cr-ltM"/>
126 <constraint firstAttribute="width" secondItem="9ln-nr-VzA" secondAttribute="height" multiplier="1:1" id="DWe-xZ-kC3"/> 137 <constraint firstAttribute="width" secondItem="9ln-nr-VzA" secondAttribute="height" multiplier="1:1" id="DWe-xZ-kC3"/>
127 </constraints> 138 </constraints>
128 </imageView> 139 </imageView>
  140 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ROd-Hw-Km6">
  141 + <rect key="frame" x="0.0" y="0.0" width="150" height="150"/>
  142 + <connections>
  143 + <action selector="detectionOfLearningAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="09k-le-jbg"/>
  144 + </connections>
  145 + </button>
129 </subviews> 146 </subviews>
130 <color key="backgroundColor" red="0.61174042456188515" green="0.82746609543490623" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 147 <color key="backgroundColor" red="0.61174042456188515" green="0.82746609543490623" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
131 <constraints> 148 <constraints>
132 - <constraint firstItem="9ln-nr-VzA" firstAttribute="top" secondItem="1z3-Uc-my7" secondAttribute="top" constant="8" id="5c5-L6-tOy"/>  
133 - <constraint firstItem="2RT-ZA-65V" firstAttribute="top" secondItem="9ln-nr-VzA" secondAttribute="bottom" constant="8" id="ILS-qi-Pqa"/>  
134 <constraint firstItem="9ln-nr-VzA" firstAttribute="centerX" secondItem="1z3-Uc-my7" secondAttribute="centerX" id="KfB-Qi-0ZA"/> 149 <constraint firstItem="9ln-nr-VzA" firstAttribute="centerX" secondItem="1z3-Uc-my7" secondAttribute="centerX" id="KfB-Qi-0ZA"/>
  150 + <constraint firstItem="ROd-Hw-Km6" firstAttribute="leading" secondItem="1z3-Uc-my7" secondAttribute="leading" id="TCz-AY-Zqd"/>
  151 + <constraint firstItem="9ln-nr-VzA" firstAttribute="centerY" secondItem="1z3-Uc-my7" secondAttribute="centerY" id="Tfz-CR-wHW"/>
  152 + <constraint firstItem="2RT-ZA-65V" firstAttribute="top" secondItem="9ln-nr-VzA" secondAttribute="bottom" constant="21" id="Vq7-Vh-JcW"/>
  153 + <constraint firstAttribute="bottom" secondItem="ROd-Hw-Km6" secondAttribute="bottom" id="l1w-4Q-Zlk"/>
135 <constraint firstAttribute="width" constant="150" id="mdM-Dj-z5q"/> 154 <constraint firstAttribute="width" constant="150" id="mdM-Dj-z5q"/>
136 <constraint firstItem="2RT-ZA-65V" firstAttribute="centerX" secondItem="1z3-Uc-my7" secondAttribute="centerX" id="nTc-V9-qbv"/> 155 <constraint firstItem="2RT-ZA-65V" firstAttribute="centerX" secondItem="1z3-Uc-my7" secondAttribute="centerX" id="nTc-V9-qbv"/>
137 <constraint firstAttribute="width" secondItem="1z3-Uc-my7" secondAttribute="height" multiplier="1:1" id="otI-Su-s6E"/> 156 <constraint firstAttribute="width" secondItem="1z3-Uc-my7" secondAttribute="height" multiplier="1:1" id="otI-Su-s6E"/>
138 - <constraint firstAttribute="bottom" secondItem="2RT-ZA-65V" secondAttribute="bottom" constant="8" id="s3B-42-Qq8"/> 157 + <constraint firstItem="ROd-Hw-Km6" firstAttribute="top" secondItem="1z3-Uc-my7" secondAttribute="top" id="pUj-0O-VnA"/>
  158 + <constraint firstAttribute="trailing" secondItem="ROd-Hw-Km6" secondAttribute="trailing" id="r9s-8F-tDy"/>
139 </constraints> 159 </constraints>
140 <userDefinedRuntimeAttributes> 160 <userDefinedRuntimeAttributes>
141 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 161 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
@@ -245,9 +265,6 @@ @@ -245,9 +265,6 @@
245 <state key="normal" title="点击参与"> 265 <state key="normal" title="点击参与">
246 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 266 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
247 </state> 267 </state>
248 - <connections>  
249 - <action selector="attendScurse:" destination="BYZ-38-t0r" eventType="touchUpInside" id="UZf-Ia-uTH"/>  
250 - </connections>  
251 </button> 268 </button>
252 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LRo-YD-6S6"> 269 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LRo-YD-6S6">
253 <rect key="frame" x="8" y="113" width="61.5" height="18"/> 270 <rect key="frame" x="8" y="113" width="61.5" height="18"/>
@@ -255,17 +272,27 @@ @@ -255,17 +272,27 @@
255 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 272 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
256 <nil key="highlightedColor"/> 273 <nil key="highlightedColor"/>
257 </label> 274 </label>
  275 + <button opaque="NO" tag="3000" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Xml-PN-wWh">
  276 + <rect key="frame" x="0.0" y="0.0" width="175" height="175.5"/>
  277 + <connections>
  278 + <action selector="attendScurse:" destination="BYZ-38-t0r" eventType="touchUpInside" id="adV-6D-vPI"/>
  279 + </connections>
  280 + </button>
258 </subviews> 281 </subviews>
259 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 282 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
260 <constraints> 283 <constraints>
261 <constraint firstItem="O7r-js-8BI" firstAttribute="leading" secondItem="kkx-lN-sfK" secondAttribute="leading" constant="8" id="3aG-x3-4Cw"/> 284 <constraint firstItem="O7r-js-8BI" firstAttribute="leading" secondItem="kkx-lN-sfK" secondAttribute="leading" constant="8" id="3aG-x3-4Cw"/>
  285 + <constraint firstItem="Xml-PN-wWh" firstAttribute="top" secondItem="kkx-lN-sfK" secondAttribute="top" id="5nJ-Lx-YaO"/>
262 <constraint firstItem="O7r-js-8BI" firstAttribute="top" secondItem="LRo-YD-6S6" secondAttribute="bottom" constant="8" id="6hq-9D-QOl"/> 286 <constraint firstItem="O7r-js-8BI" firstAttribute="top" secondItem="LRo-YD-6S6" secondAttribute="bottom" constant="8" id="6hq-9D-QOl"/>
263 <constraint firstAttribute="width" secondItem="kkx-lN-sfK" secondAttribute="height" multiplier="1:1" id="HW0-lf-ojc"/> 287 <constraint firstAttribute="width" secondItem="kkx-lN-sfK" secondAttribute="height" multiplier="1:1" id="HW0-lf-ojc"/>
264 <constraint firstItem="Jql-zY-Zqo" firstAttribute="leading" secondItem="kkx-lN-sfK" secondAttribute="leading" id="Jyr-dl-P9R"/> 288 <constraint firstItem="Jql-zY-Zqo" firstAttribute="leading" secondItem="kkx-lN-sfK" secondAttribute="leading" id="Jyr-dl-P9R"/>
265 <constraint firstAttribute="trailing" secondItem="Jql-zY-Zqo" secondAttribute="trailing" id="MEc-va-pgf"/> 289 <constraint firstAttribute="trailing" secondItem="Jql-zY-Zqo" secondAttribute="trailing" id="MEc-va-pgf"/>
  290 + <constraint firstItem="Xml-PN-wWh" firstAttribute="leading" secondItem="kkx-lN-sfK" secondAttribute="leading" id="X1z-gM-jWu"/>
266 <constraint firstItem="Jql-zY-Zqo" firstAttribute="top" secondItem="kkx-lN-sfK" secondAttribute="top" id="Zi5-eI-CED"/> 291 <constraint firstItem="Jql-zY-Zqo" firstAttribute="top" secondItem="kkx-lN-sfK" secondAttribute="top" id="Zi5-eI-CED"/>
267 <constraint firstAttribute="bottom" secondItem="O7r-js-8BI" secondAttribute="bottom" constant="8" id="bct-mp-bxS"/> 292 <constraint firstAttribute="bottom" secondItem="O7r-js-8BI" secondAttribute="bottom" constant="8" id="bct-mp-bxS"/>
  293 + <constraint firstAttribute="trailing" secondItem="Xml-PN-wWh" secondAttribute="trailing" id="cjK-ee-Ad8"/>
268 <constraint firstAttribute="bottom" secondItem="Jql-zY-Zqo" secondAttribute="bottom" id="fw3-Sp-Utr"/> 294 <constraint firstAttribute="bottom" secondItem="Jql-zY-Zqo" secondAttribute="bottom" id="fw3-Sp-Utr"/>
  295 + <constraint firstAttribute="bottom" secondItem="Xml-PN-wWh" secondAttribute="bottom" id="le8-kv-kr5"/>
269 <constraint firstItem="LRo-YD-6S6" firstAttribute="leading" secondItem="kkx-lN-sfK" secondAttribute="leading" constant="8" id="o1Q-hw-OgL"/> 296 <constraint firstItem="LRo-YD-6S6" firstAttribute="leading" secondItem="kkx-lN-sfK" secondAttribute="leading" constant="8" id="o1Q-hw-OgL"/>
270 </constraints> 297 </constraints>
271 <userDefinedRuntimeAttributes> 298 <userDefinedRuntimeAttributes>
@@ -290,9 +317,6 @@ @@ -290,9 +317,6 @@
290 <state key="normal" title="点击参与"> 317 <state key="normal" title="点击参与">
291 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 318 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
292 </state> 319 </state>
293 - <connections>  
294 - <action selector="attendScurse:" destination="BYZ-38-t0r" eventType="touchUpInside" id="gtw-he-M6X"/>  
295 - </connections>  
296 </button> 320 </button>
297 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HzZ-gc-k6q"> 321 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HzZ-gc-k6q">
298 <rect key="frame" x="8" y="21" width="61.5" height="18"/> 322 <rect key="frame" x="8" y="21" width="61.5" height="18"/>
@@ -300,17 +324,27 @@ @@ -300,17 +324,27 @@
300 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 324 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
301 <nil key="highlightedColor"/> 325 <nil key="highlightedColor"/>
302 </label> 326 </label>
  327 + <button opaque="NO" tag="3002" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zvf-dA-6kr">
  328 + <rect key="frame" x="0.0" y="0.0" width="175" height="83.5"/>
  329 + <connections>
  330 + <action selector="attendScurse:" destination="BYZ-38-t0r" eventType="touchUpInside" id="A9J-Jx-AQ0"/>
  331 + </connections>
  332 + </button>
303 </subviews> 333 </subviews>
304 <color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 334 <color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
305 <constraints> 335 <constraints>
  336 + <constraint firstItem="zvf-dA-6kr" firstAttribute="leading" secondItem="6YE-Yx-A8r" secondAttribute="leading" id="8NH-AH-kf2"/>
306 <constraint firstItem="qMv-R9-Qa3" firstAttribute="top" secondItem="6YE-Yx-A8r" secondAttribute="top" id="Dxq-Iz-iMF"/> 337 <constraint firstItem="qMv-R9-Qa3" firstAttribute="top" secondItem="6YE-Yx-A8r" secondAttribute="top" id="Dxq-Iz-iMF"/>
307 <constraint firstAttribute="bottom" secondItem="Uk9-TJ-dgw" secondAttribute="bottom" constant="8" id="HH3-Em-feP"/> 338 <constraint firstAttribute="bottom" secondItem="Uk9-TJ-dgw" secondAttribute="bottom" constant="8" id="HH3-Em-feP"/>
308 <constraint firstItem="HzZ-gc-k6q" firstAttribute="leading" secondItem="6YE-Yx-A8r" secondAttribute="leading" constant="8" id="M3h-3z-fNn"/> 339 <constraint firstItem="HzZ-gc-k6q" firstAttribute="leading" secondItem="6YE-Yx-A8r" secondAttribute="leading" constant="8" id="M3h-3z-fNn"/>
  340 + <constraint firstAttribute="bottom" secondItem="zvf-dA-6kr" secondAttribute="bottom" id="OSu-2B-h8K"/>
309 <constraint firstAttribute="bottom" secondItem="qMv-R9-Qa3" secondAttribute="bottom" id="PPZ-aE-DTb"/> 341 <constraint firstAttribute="bottom" secondItem="qMv-R9-Qa3" secondAttribute="bottom" id="PPZ-aE-DTb"/>
310 <constraint firstItem="Uk9-TJ-dgw" firstAttribute="leading" secondItem="6YE-Yx-A8r" secondAttribute="leading" constant="8" id="QJX-22-tpU"/> 342 <constraint firstItem="Uk9-TJ-dgw" firstAttribute="leading" secondItem="6YE-Yx-A8r" secondAttribute="leading" constant="8" id="QJX-22-tpU"/>
311 <constraint firstItem="Uk9-TJ-dgw" firstAttribute="top" secondItem="HzZ-gc-k6q" secondAttribute="bottom" constant="8" id="QUt-cW-eX3"/> 343 <constraint firstItem="Uk9-TJ-dgw" firstAttribute="top" secondItem="HzZ-gc-k6q" secondAttribute="bottom" constant="8" id="QUt-cW-eX3"/>
312 <constraint firstItem="qMv-R9-Qa3" firstAttribute="leading" secondItem="6YE-Yx-A8r" secondAttribute="leading" id="VjX-HK-2qc"/> 344 <constraint firstItem="qMv-R9-Qa3" firstAttribute="leading" secondItem="6YE-Yx-A8r" secondAttribute="leading" id="VjX-HK-2qc"/>
  345 + <constraint firstAttribute="trailing" secondItem="zvf-dA-6kr" secondAttribute="trailing" id="ZnF-a0-mry"/>
313 <constraint firstAttribute="trailing" secondItem="qMv-R9-Qa3" secondAttribute="trailing" id="drR-7g-3VH"/> 346 <constraint firstAttribute="trailing" secondItem="qMv-R9-Qa3" secondAttribute="trailing" id="drR-7g-3VH"/>
  347 + <constraint firstItem="zvf-dA-6kr" firstAttribute="top" secondItem="6YE-Yx-A8r" secondAttribute="top" id="i0b-gT-YFK"/>
314 </constraints> 348 </constraints>
315 <userDefinedRuntimeAttributes> 349 <userDefinedRuntimeAttributes>
316 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 350 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
@@ -334,9 +368,6 @@ @@ -334,9 +368,6 @@
334 <state key="normal" title="点击参与"> 368 <state key="normal" title="点击参与">
335 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 369 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
336 </state> 370 </state>
337 - <connections>  
338 - <action selector="attendScurse:" destination="BYZ-38-t0r" eventType="touchUpInside" id="MBq-mi-A8z"/>  
339 - </connections>  
340 </button> 371 </button>
341 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IlG-SR-47u"> 372 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="热门课程" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IlG-SR-47u">
342 <rect key="frame" x="8" y="22" width="61.5" height="18"/> 373 <rect key="frame" x="8" y="22" width="61.5" height="18"/>
@@ -344,6 +375,12 @@ @@ -344,6 +375,12 @@
344 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 375 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
345 <nil key="highlightedColor"/> 376 <nil key="highlightedColor"/>
346 </label> 377 </label>
  378 + <button opaque="NO" tag="3001" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YIw-qU-3V5">
  379 + <rect key="frame" x="-0.5" y="0.0" width="176" height="83.5"/>
  380 + <connections>
  381 + <action selector="attendScurse:" destination="BYZ-38-t0r" eventType="touchUpInside" id="7cN-If-1H1"/>
  382 + </connections>
  383 + </button>
347 </subviews> 384 </subviews>
348 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 385 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
349 <constraints> 386 <constraints>
@@ -353,7 +390,11 @@ @@ -353,7 +390,11 @@
353 <constraint firstItem="IlG-SR-47u" firstAttribute="leading" secondItem="nTE-Oc-4PW" secondAttribute="leading" constant="8" id="PHY-SB-wic"/> 390 <constraint firstItem="IlG-SR-47u" firstAttribute="leading" secondItem="nTE-Oc-4PW" secondAttribute="leading" constant="8" id="PHY-SB-wic"/>
354 <constraint firstAttribute="trailing" secondItem="P7A-gb-DMF" secondAttribute="trailing" id="RXm-NJ-H9Z"/> 391 <constraint firstAttribute="trailing" secondItem="P7A-gb-DMF" secondAttribute="trailing" id="RXm-NJ-H9Z"/>
355 <constraint firstAttribute="bottom" secondItem="P7A-gb-DMF" secondAttribute="bottom" id="UDc-4Y-4Df"/> 392 <constraint firstAttribute="bottom" secondItem="P7A-gb-DMF" secondAttribute="bottom" id="UDc-4Y-4Df"/>
  393 + <constraint firstAttribute="trailing" secondItem="YIw-qU-3V5" secondAttribute="trailing" id="WjU-kd-7cK"/>
  394 + <constraint firstAttribute="bottom" secondItem="YIw-qU-3V5" secondAttribute="bottom" id="dlT-rW-fLJ"/>
  395 + <constraint firstItem="YIw-qU-3V5" firstAttribute="leading" secondItem="nTE-Oc-4PW" secondAttribute="leading" id="g3m-Eg-Sph"/>
356 <constraint firstItem="l93-Wh-xSB" firstAttribute="top" secondItem="IlG-SR-47u" secondAttribute="bottom" constant="8" id="ofC-a7-KtM"/> 396 <constraint firstItem="l93-Wh-xSB" firstAttribute="top" secondItem="IlG-SR-47u" secondAttribute="bottom" constant="8" id="ofC-a7-KtM"/>
  397 + <constraint firstItem="YIw-qU-3V5" firstAttribute="top" secondItem="nTE-Oc-4PW" secondAttribute="top" id="vEb-rf-vQs"/>
357 <constraint firstItem="P7A-gb-DMF" firstAttribute="top" secondItem="nTE-Oc-4PW" secondAttribute="top" id="yZn-vR-IZN"/> 398 <constraint firstItem="P7A-gb-DMF" firstAttribute="top" secondItem="nTE-Oc-4PW" secondAttribute="top" id="yZn-vR-IZN"/>
358 </constraints> 399 </constraints>
359 <userDefinedRuntimeAttributes> 400 <userDefinedRuntimeAttributes>
@@ -414,23 +455,33 @@ @@ -414,23 +455,33 @@
414 </constraints> 455 </constraints>
415 <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> 456 <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
416 </view> 457 </view>
417 - <navigationItem key="navigationItem" title="测评" id="1Lk-x4-9OW"/> 458 + <navigationItem key="navigationItem" title="测评" id="1Lk-x4-9OW">
  459 + <barButtonItem key="rightBarButtonItem" systemItem="camera" id="e8u-Kr-J32">
  460 + <color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  461 + <connections>
  462 + <action selector="selectCamareAction:" destination="BYZ-38-t0r" id="ePR-Ms-0ze"/>
  463 + </connections>
  464 + </barButtonItem>
  465 + </navigationItem>
418 <connections> 466 <connections>
419 <outlet property="collectionView" destination="FnF-em-s4P" id="5l4-ct-nXK"/> 467 <outlet property="collectionView" destination="FnF-em-s4P" id="5l4-ct-nXK"/>
420 <outlet property="contentHeight" destination="BmN-ke-PtF" id="ecB-Td-MI3"/> 468 <outlet property="contentHeight" destination="BmN-ke-PtF" id="ecB-Td-MI3"/>
421 <outlet property="height" destination="5vQ-vS-Ne0" id="ZR5-kQ-ing"/> 469 <outlet property="height" destination="5vQ-vS-Ne0" id="ZR5-kQ-ing"/>
422 - <outletCollection property="attendCourse" destination="O7r-js-8BI" collectionClass="NSMutableArray" id="UGC-Dc-LPn"/>  
423 - <outletCollection property="attendCourse" destination="l93-Wh-xSB" collectionClass="NSMutableArray" id="3iO-bh-taP"/>  
424 - <outletCollection property="attendCourse" destination="Uk9-TJ-dgw" collectionClass="NSMutableArray" id="Ivq-87-Txu"/>  
425 - <outletCollection property="courseImage" destination="Jql-zY-Zqo" collectionClass="NSMutableArray" id="yaz-YZ-hex"/>  
426 - <outletCollection property="courseImage" destination="P7A-gb-DMF" collectionClass="NSMutableArray" id="FKF-z0-4tL"/>  
427 - <outletCollection property="courseImage" destination="qMv-R9-Qa3" collectionClass="NSMutableArray" id="3R6-7o-dG2"/>  
428 <outletCollection property="activityImage" destination="9ln-nr-VzA" collectionClass="NSMutableArray" id="IGS-Cv-m1D"/> 470 <outletCollection property="activityImage" destination="9ln-nr-VzA" collectionClass="NSMutableArray" id="IGS-Cv-m1D"/>
429 <outletCollection property="activityName" destination="2RT-ZA-65V" collectionClass="NSMutableArray" id="cRJ-xB-lVl"/> 471 <outletCollection property="activityName" destination="2RT-ZA-65V" collectionClass="NSMutableArray" id="cRJ-xB-lVl"/>
430 <outletCollection property="activityEntrance" destination="1z3-Uc-my7" collectionClass="NSMutableArray" id="CsC-me-5U1"/> 472 <outletCollection property="activityEntrance" destination="1z3-Uc-my7" collectionClass="NSMutableArray" id="CsC-me-5U1"/>
431 <outletCollection property="activityImage" destination="jM3-pe-HNZ" collectionClass="NSMutableArray" id="pyE-2j-xA6"/> 473 <outletCollection property="activityImage" destination="jM3-pe-HNZ" collectionClass="NSMutableArray" id="pyE-2j-xA6"/>
432 <outletCollection property="activityName" destination="lMI-9m-Zal" collectionClass="NSMutableArray" id="Qyw-lY-6Tz"/> 474 <outletCollection property="activityName" destination="lMI-9m-Zal" collectionClass="NSMutableArray" id="Qyw-lY-6Tz"/>
433 <outletCollection property="activityEntrance" destination="CKI-XD-Eo7" collectionClass="NSMutableArray" id="UkU-ac-oj9"/> 475 <outletCollection property="activityEntrance" destination="CKI-XD-Eo7" collectionClass="NSMutableArray" id="UkU-ac-oj9"/>
  476 + <outletCollection property="courseImage" destination="Jql-zY-Zqo" collectionClass="NSMutableArray" id="cPm-xr-S7M"/>
  477 + <outletCollection property="courseImage" destination="P7A-gb-DMF" collectionClass="NSMutableArray" id="Wl2-Cg-QJH"/>
  478 + <outletCollection property="courseImage" destination="qMv-R9-Qa3" collectionClass="NSMutableArray" id="jhY-aE-Mf4"/>
  479 + <outletCollection property="attendCourse" destination="O7r-js-8BI" collectionClass="NSMutableArray" id="mzx-RT-t4D"/>
  480 + <outletCollection property="attendCourse" destination="l93-Wh-xSB" collectionClass="NSMutableArray" id="lBl-gA-e4U"/>
  481 + <outletCollection property="attendCourse" destination="Uk9-TJ-dgw" collectionClass="NSMutableArray" id="ZIQ-2G-3gb"/>
  482 + <outletCollection property="courseLabel" destination="LRo-YD-6S6" collectionClass="NSMutableArray" id="usG-zW-SgY"/>
  483 + <outletCollection property="courseLabel" destination="IlG-SR-47u" collectionClass="NSMutableArray" id="hO0-8Y-LCn"/>
  484 + <outletCollection property="courseLabel" destination="HzZ-gc-k6q" collectionClass="NSMutableArray" id="cuT-aO-hXY"/>
434 </connections> 485 </connections>
435 </viewController> 486 </viewController>
436 <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> 487 <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
@@ -1601,7 +1652,7 @@ @@ -1601,7 +1652,7 @@
1601 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6b5-x5-1h9"> 1652 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6b5-x5-1h9">
1602 <rect key="frame" x="0.0" y="64" width="375" height="128"/> 1653 <rect key="frame" x="0.0" y="64" width="375" height="128"/>
1603 <subviews> 1654 <subviews>
1604 - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_headerView_backgroundimageView" translatesAutoresizingMaskIntoConstraints="NO" id="VfB-06-9W9"> 1655 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_defphoto" translatesAutoresizingMaskIntoConstraints="NO" id="VfB-06-9W9">
1605 <rect key="frame" x="8" y="34" width="60" height="60"/> 1656 <rect key="frame" x="8" y="34" width="60" height="60"/>
1606 <constraints> 1657 <constraints>
1607 <constraint firstAttribute="width" constant="60" id="OfT-bN-uA8"/> 1658 <constraint firstAttribute="width" constant="60" id="OfT-bN-uA8"/>
@@ -2022,7 +2073,7 @@ @@ -2022,7 +2073,7 @@
2022 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NYX-xp-uf1"> 2073 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NYX-xp-uf1">
2023 <rect key="frame" x="8" y="21" width="42" height="21"/> 2074 <rect key="frame" x="8" y="21" width="42" height="21"/>
2024 <fontDescription key="fontDescription" type="system" pointSize="17"/> 2075 <fontDescription key="fontDescription" type="system" pointSize="17"/>
2025 - <color key="textColor" red="0.27503338459999999" green="0.50970917940000005" blue="0.90092128520000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 2076 + <color key="textColor" red="0.27450980392156865" green="0.50980392156862742" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
2026 <nil key="highlightedColor"/> 2077 <nil key="highlightedColor"/>
2027 </label> 2078 </label>
2028 </subviews> 2079 </subviews>
@@ -2059,15 +2110,18 @@ @@ -2059,15 +2110,18 @@
2059 </objects> 2110 </objects>
2060 <point key="canvasLocation" x="1599" y="-272"/> 2111 <point key="canvasLocation" x="1599" y="-272"/>
2061 </scene> 2112 </scene>
2062 - <!--测评--> 2113 + <!--慧测慧练-->
2063 <scene sceneID="uiJ-2h-Wbz"> 2114 <scene sceneID="uiJ-2h-Wbz">
2064 <objects> 2115 <objects>
2065 <navigationController automaticallyAdjustsScrollViewInsets="NO" id="fWd-Qg-F7w" customClass="MainViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> 2116 <navigationController automaticallyAdjustsScrollViewInsets="NO" id="fWd-Qg-F7w" customClass="MainViewController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController">
2066 - <tabBarItem key="tabBarItem" title="测评" image="evaluation_bar_icon" selectedImage="evaluation_bar_icon_select" id="wbm-sK-I2A"/> 2117 + <tabBarItem key="tabBarItem" title="慧测慧练" image="evaluation_bar_icon" selectedImage="evaluation_bar_icon_select" id="wbm-sK-I2A"/>
2067 <toolbarItems/> 2118 <toolbarItems/>
2068 <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="5av-Vy-e7z"> 2119 <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="5av-Vy-e7z">
2069 <rect key="frame" x="0.0" y="20" width="375" height="44"/> 2120 <rect key="frame" x="0.0" y="20" width="375" height="44"/>
2070 <autoresizingMask key="autoresizingMask"/> 2121 <autoresizingMask key="autoresizingMask"/>
  2122 + <textAttributes key="titleTextAttributes">
  2123 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  2124 + </textAttributes>
2071 </navigationBar> 2125 </navigationBar>
2072 <nil name="viewControllers"/> 2126 <nil name="viewControllers"/>
2073 <connections> 2127 <connections>
@@ -2125,6 +2179,10 @@ @@ -2125,6 +2179,10 @@
2125 <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="faE-a1-9KB"> 2179 <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="faE-a1-9KB">
2126 <rect key="frame" x="0.0" y="20" width="375" height="44"/> 2180 <rect key="frame" x="0.0" y="20" width="375" height="44"/>
2127 <autoresizingMask key="autoresizingMask"/> 2181 <autoresizingMask key="autoresizingMask"/>
  2182 + <textAttributes key="titleTextAttributes">
  2183 + <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  2184 + <color key="textShadowColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
  2185 + </textAttributes>
2128 </navigationBar> 2186 </navigationBar>
2129 <nil name="viewControllers"/> 2187 <nil name="viewControllers"/>
2130 <connections> 2188 <connections>
@@ -2146,6 +2204,7 @@ @@ -2146,6 +2204,7 @@
2146 <image name="evaluation_icon_training" width="47" height="47"/> 2204 <image name="evaluation_icon_training" width="47" height="47"/>
2147 <image name="my_bar_icon" width="19" height="22"/> 2205 <image name="my_bar_icon" width="19" height="22"/>
2148 <image name="my_bar_icon_select" width="19" height="22"/> 2206 <image name="my_bar_icon_select" width="19" height="22"/>
  2207 + <image name="my_defphoto" width="61" height="61"/>
2149 <image name="my_headerView_backgroundimageView" width="375" height="139"/> 2208 <image name="my_headerView_backgroundimageView" width="375" height="139"/>
2150 <image name="my_icon_currentInfo" width="9" height="16"/> 2209 <image name="my_icon_currentInfo" width="9" height="16"/>
2151 <image name="my_icon_orderMessage" width="14" height="19"/> 2210 <image name="my_icon_orderMessage" width="14" height="19"/>