diff --git a/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj b/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj index 47a9abb..3bea018 100644 --- a/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj +++ b/ParentAssistant/ParentAssistant.xcodeproj/project.pbxproj @@ -98,6 +98,7 @@ BFBC06CC2063AE8900CCFAFF /* ZLaunchAdWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBC06C22063AE8800CCFAFF /* ZLaunchAdWindow.swift */; }; BFBC06CD2063AE8900CCFAFF /* ZLaunchImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBC06C32063AE8800CCFAFF /* ZLaunchImageView.swift */; }; BFBC06CE2063AE8900CCFAFF /* ZLaunchLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBC06C42063AE8800CCFAFF /* ZLaunchLog.swift */; }; + BFBC06D22064FDDE00CCFAFF /* LaunchIntroductionView.m in Sources */ = {isa = PBXBuildFile; fileRef = BFBC06D12064FDDE00CCFAFF /* LaunchIntroductionView.m */; }; BFCED888205280B700055373 /* MyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCED887205280B700055373 /* MyViewController.swift */; }; BFCED88B20528DE700055373 /* MyViewControllerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCED88A20528DE700055373 /* MyViewControllerModel.swift */; }; BFEAAAA7205118370072FAAF /* TabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFEAAAA6205118370072FAAF /* TabBarController.swift */; }; @@ -240,6 +241,8 @@ BFBC06C22063AE8800CCFAFF /* ZLaunchAdWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZLaunchAdWindow.swift; sourceTree = "<group>"; }; BFBC06C32063AE8800CCFAFF /* ZLaunchImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZLaunchImageView.swift; sourceTree = "<group>"; }; BFBC06C42063AE8800CCFAFF /* ZLaunchLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZLaunchLog.swift; sourceTree = "<group>"; }; + BFBC06D02064FDDE00CCFAFF /* LaunchIntroductionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LaunchIntroductionView.h; sourceTree = "<group>"; }; + BFBC06D12064FDDE00CCFAFF /* LaunchIntroductionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LaunchIntroductionView.m; sourceTree = "<group>"; }; BFCED887205280B700055373 /* MyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyViewController.swift; sourceTree = "<group>"; }; BFCED88A20528DE700055373 /* MyViewControllerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyViewControllerModel.swift; sourceTree = "<group>"; }; BFEAAAA6205118370072FAAF /* TabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarController.swift; sourceTree = "<group>"; }; @@ -601,6 +604,15 @@ path = ZLaunchAd; sourceTree = "<group>"; }; + BFBC06CF2064FDDE00CCFAFF /* LaunchIntroduction */ = { + isa = PBXGroup; + children = ( + BFBC06D02064FDDE00CCFAFF /* LaunchIntroductionView.h */, + BFBC06D12064FDDE00CCFAFF /* LaunchIntroductionView.m */, + ); + path = LaunchIntroduction; + sourceTree = "<group>"; + }; BFCED886205280B700055373 /* Controller */ = { isa = PBXGroup; children = ( @@ -642,6 +654,7 @@ BFEAAAAC205257270072FAAF /* libs */ = { isa = PBXGroup; children = ( + BFBC06CF2064FDDE00CCFAFF /* LaunchIntroduction */, BFBC06BA2063AE8800CCFAFF /* ZLaunchAd */, 5980BF5F2061048A00F4A35E /* LZCityPickerClass */, BFEAAAAD205257460072FAAF /* LXCalendar */, @@ -910,6 +923,7 @@ BF7A4C36204CD55300460463 /* ViewController.swift in Sources */, BFEAAAA9205248AC0072FAAF /* TaskPresentationTableViewCell.swift in Sources */, 5980BF6A2061048A00F4A35E /* LZPickerModel.m in Sources */, + BFBC06D22064FDDE00CCFAFF /* LaunchIntroductionView.m in Sources */, BFEAAAA7205118370072FAAF /* TabBarController.swift in Sources */, BF67F3C020590A2F002FDC61 /* SwiftyJSON.swift in Sources */, 599364ED204E62E700C8B371 /* InformationViewController.swift in Sources */, diff --git a/ParentAssistant/ParentAssistant/AppDelegate.swift b/ParentAssistant/ParentAssistant/AppDelegate.swift index c0e2d62..94cd8af 100644 --- a/ParentAssistant/ParentAssistant/AppDelegate.swift +++ b/ParentAssistant/ParentAssistant/AppDelegate.swift @@ -38,8 +38,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { }) } setShareSDKSetting() + let tabbarVC = Story.instantiateViewControllerWithIdentifier("TabBarController", storyName: "Main") as! TabBarController + self.window?.rootViewController = tabbarVC + self.window?.makeKeyAndVisible() // 加载广告 - requestAD() + requestAD(vc: tabbarVC) return true } //设置云信的appkey @@ -60,33 +63,61 @@ class AppDelegate: UIResponder, UIApplicationDelegate { YXMessageManager.share.addYXDelegate() } // MARK: - 加载广告页 - func requestAD() -> Void { + func requestAD(vc:TabBarController) -> Void { var position:Int = 0 - if Setting.getString("isFirst") == "true" {//是否是第一次下载 + if Setting.getString("isFirst") == "\(AppDelegate.version())" {//是否是第一次下载 position = 1 + let adView = ZLaunchAd.create() + //position 广告位置0-首次广告位1-开屏广告位2-资讯首页3-频道首页4-频道内容5-文章内容页 AccountManager.shared.address + HTTPServer.shared.getAds(["position":position as AnyObject], completionHandler: { (str, error) in + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in + if json["status"] == 1 && error == nil{ + if json.contentData().arrayValue.count>0 { + let imageResource = ZLaunchAdImageResourceConfigure() + imageResource.imageNameOrImageURL = HTTPServer.HOSTImage+json.contentData().arrayValue[0]["fileSrc"].stringValue.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! + imageResource.imageDuration = 5 + imageResource.imageFrame = UIScreen.main.bounds + adView.setImageResource(imageResource, action: { + /// 广告点击 + }) + } + } + }, failHandler: { (error) in + let imageResource = ZLaunchAdImageResourceConfigure() + imageResource.imageNameOrImageURL = "http://chatm-icon.oss-cn-beijing.aliyuncs.com/pic/pic_20170725104352981.jpg" + imageResource.imageDuration = 5 + imageResource.imageFrame = UIScreen.main.bounds + adView.setImageResource(imageResource, action: { + /// 广告点击 + }) + + }) + }) }else{ +// Thread.sleep(forTimeInterval: 5.0)//延长启动页面10秒 + let view = UIView(frame: CGRect(x: 0, y: 0, width: getScreenWidth(), height: getScreenHeight())) + view.backgroundColor = UIColor.red + vc.view.addSubview(view) position = 0 - Setting.save("true", forKey: "isFirst") - } - //position 广告位置0-首次广告位1-开屏广告位2-资讯首页3-频道首页4-频道内容5-文章内容页 AccountManager.shared.address - HTTPServer.shared.getAds(["position":position as AnyObject,"areaName":"" as AnyObject], completionHandler: { (str, error) in - httpJsonResule(jsonString: str, error: error, successHandler: { (json) in - if json["status"] == 1 && error == nil{ - if json.contentData().arrayValue.count>0 { - let adView = ZLaunchAd.create() - let imageResource = ZLaunchAdImageResourceConfigure() - imageResource.imageNameOrImageURL = HTTPServer.HOSTImage+json.contentData().arrayValue[0]["fileSrc"].stringValue - imageResource.imageDuration = 5 - imageResource.imageFrame = UIScreen.main.bounds - adView.setImageResource(imageResource, action: { - /// 广告点击 - }) + let _ = Setting.save("\(AppDelegate.version())", forKey: "isFirst") + //position 广告位置0-首次广告位1-开屏广告位2-资讯首页3-频道首页4-频道内容5-文章内容页 AccountManager.shared.address + HTTPServer.shared.getAds(["position":position as AnyObject], completionHandler: { (str, error) in + view.removeFromSuperview() + httpJsonResule(jsonString: str, error: error, successHandler: { (json) in + if json["status"] == 1 && error == nil{ + var images:[String] = [] + if json.contentData().arrayValue.count>0 { + for item in json.contentData().arrayValue { + NSLog("************\(HTTPServer.HOSTImage+item["fileSrc"].stringValue.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)"); images.append(HTTPServer.HOSTImage+item["fileSrc"].stringValue.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!) + } + LaunchIntroductionView.shared(withImages: images, buttonImage: "icon_image", buttonFrame: CGRect(x: getScreenWidth()/2-551/4, y: getScreenHeight()-150, width: 551/2, height: 45)) + } } - } - }, failHandler: { (error) in - + }, failHandler: { (error) in + }) }) - }) + + } } // MARK: - 设置网络 @objc func networkStatusChange() { diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/Information/InformationViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/Information/InformationViewController.swift index 9e2801f..76cd037 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/Information/InformationViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/Information/InformationViewController.swift @@ -31,7 +31,7 @@ class InformationViewController: UIViewController,UISearchBarDelegate { searchView.placeholder = "请输入搜索内容" searchView.showsCancelButton = false self.navigationItem.titleView = searchView - + self.configTheme() } @@ -182,8 +182,11 @@ class InformationViewController: UIViewController,UISearchBarDelegate { //点击资讯进入详情 func pushToInfoView(index:Int){ let vcs = Story.instantiateViewControllerWithIdentifier("JSViewController", storyName: "JS") as! JSViewController - vcs.webURL = (HTTPServer.HOSTWAP+"/InformationDetail.aspx?id="+"\(data.channelContent[index].id)"+"&areaname="+AccountManager.shared.address)//.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! - + if data.channelContent[index].url != "" { + vcs.webURL = data.channelContent[index].url + }else{ + vcs.webURL = (HTTPServer.HOSTWAP+"/InformationDetail.aspx?id="+"\(data.channelContent[index].id)"+"&areaname="+AccountManager.shared.address).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! + } self.navigationController?.present(vcs.wrapWithNavigationController(), animated: true, completion: nil) } @@ -262,7 +265,7 @@ extension InformationViewController:UICollectionViewDataSource,UICollectionViewD let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "contentCell", for: indexPath) as! ChannelCollectionViewCell cell.title.text = item.title cell.option.text = item.content - cell.optionNum.text = "\(item.talkNum)" + cell.optionNum.text = "\(item.lookNum)" cell.shareNum.text = "\(item.forwardingNum)" cell.picture.sd_setImage(with: URL(string: (HTTPServer.HOSTImage+item.image).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "navigationBar_backgrounImage")) return cell @@ -283,10 +286,14 @@ extension InformationViewController:UICollectionViewDataSource,UICollectionViewD break default: let vcs = Story.instantiateViewControllerWithIdentifier("JSViewController", storyName: "JS") as! JSViewController - vcs.webURL = data.channelContent[indexPath.row].url//"\(HTTPServer.HOSTWAP!)/ParentOrderCenter.aspx?userid=\(AccountManager.shared.id())" + if data.channelContent[indexPath.row].url != "" { + vcs.webURL = data.channelContent[indexPath.row].url + }else{ + vcs.webURL = (HTTPServer.HOSTWAP+"/InformationDetail.aspx?id="+"\(data.channelContent[indexPath.row].id)"+"&areaname="+AccountManager.shared.address).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! + } self.navigationController?.present(vcs.wrapWithNavigationController(), animated: true, completion: nil) - pushToInfoView(index: indexPath.row) +// pushToInfoView(index: indexPath.row) } } @@ -407,6 +414,7 @@ class ChannelContentDemol: NSObject { var content:String=""// 资讯内容 , var forwardingNum:Int=0// 资讯转发数 , var talkNum:Int=0 // 评论数 , + var lookNum:Int = 0 //浏览数 var orderById:Int=0// 资讯排序 var isAds:Int=0// 是否为广告 1是广告 init(j:JSON){ @@ -417,6 +425,7 @@ class ChannelContentDemol: NSObject { content = j["content"].stringValue forwardingNum = j["forwardingNum"].intValue talkNum = j["talkNum"].intValue + lookNum = j["lookNum"].intValue orderById = j["orderById"].intValue isAds = j["isAds"].intValue } diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/Information/view/ChannelCollectionViewCell.xib b/ParentAssistant/ParentAssistant/Classes/controllers/Information/view/ChannelCollectionViewCell.xib index 47a0afc..ff3c811 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/Information/view/ChannelCollectionViewCell.xib +++ b/ParentAssistant/ParentAssistant/Classes/controllers/Information/view/ChannelCollectionViewCell.xib @@ -38,25 +38,25 @@ <color key="textColor" red="0.27503338459999999" green="0.50970917940000005" blue="0.90092128520000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <nil key="highlightedColor"/> </label> - <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"> - <rect key="frame" x="8" y="72" width="24" height="12"/> + <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"> + <rect key="frame" x="8" y="72" width="34" height="12"/> <fontDescription key="fontDescription" type="system" pointSize="10"/> <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> <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"> - <rect key="frame" x="40" y="72" width="13" height="12"/> + <rect key="frame" x="50" y="72" width="13" height="12"/> <fontDescription key="fontDescription" type="system" pointSize="10"/> <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> - <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"> + <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="转发:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wMQ-5O-LNi"> <rect key="frame" x="182" y="72" width="24" height="12"/> <fontDescription key="fontDescription" type="system" pointSize="10"/> <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> <nil key="highlightedColor"/> </label> - <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"> + <label hidden="YES" 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"> <rect key="frame" x="214" y="72" width="11.5" height="12"/> <fontDescription key="fontDescription" type="system" pointSize="10"/> <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/evaluation/EvaluationViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/evaluation/EvaluationViewController.swift index 26074f3..5769e81 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/evaluation/EvaluationViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/evaluation/EvaluationViewController.swift @@ -229,7 +229,11 @@ class EvaluationViewController: UIViewController,CLLocationManagerDelegate,Selec return } let vcs = Story.instantiateViewControllerWithIdentifier("JSViewController", storyName: "JS") as! JSViewController + if activityArr[sender.tag-3000].toolUrl != "" { vcs.webURL = activityArr[sender.tag-3000].toolUrl + }else{ + vcs.webURL = (HTTPServer.HOSTWAP+"/InformationDetail.aspx?id="+"\(activityArr[sender.tag-3000].toolId)"+"&areaname="+AccountManager.shared.address).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! + } self.navigationController?.present(vcs.wrapWithNavigationController(), animated: true, completion: nil) } @@ -267,7 +271,11 @@ extension EvaluationViewController:UICollectionViewDataSource,UICollectionViewDe func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let vcs = Story.instantiateViewControllerWithIdentifier("JSViewController", storyName: "JS") as! JSViewController - vcs.webURL = toolArr[indexPath.row].toolUrl + if toolArr[indexPath.row].toolUrl != "" { + vcs.webURL = toolArr[indexPath.row].toolUrl + }else{ + vcs.webURL = (HTTPServer.HOSTWAP+"/InformationDetail.aspx?id="+"\(toolArr[indexPath.row].toolId)"+"&areaname="+AccountManager.shared.address).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! + } self.navigationController?.present(vcs.wrapWithNavigationController(), animated: true, completion: nil) } } diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/LoginViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/LoginViewController.swift index 8814cab..906264c 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/LoginViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/LoginViewController.swift @@ -14,6 +14,7 @@ class LoginViewController: UIViewController,UITextFieldDelegate { @IBOutlet var phoneTextField: UITextField!//电话号码 @IBOutlet var passwordTextField: UITextField!//密码 @IBOutlet var passwordHiddenBtn: UIButton!//查看密码按钮 + @IBOutlet var loginBtn: UIButton! override func viewDidLoad() { super.viewDidLoad() layoutSubViews() @@ -61,6 +62,15 @@ class LoginViewController: UIViewController,UITextFieldDelegate { self.view.endEditing(true) return true } + func textFieldDidEndEditing(_ textField: UITextField) { + if textField==passwordTextField && phoneTextField.text! != "" && passwordTextField.text! != ""{ + loginBtn.isUserInteractionEnabled = true + loginBtn.backgroundColor = UIColorFromRGB(0xC5DAFF) + }else{ + loginBtn.isUserInteractionEnabled = false + loginBtn.backgroundColor = UIColor.lightGray + } + } func isMobilePhoneNumber(_ mobile:String)->Bool { let str="^1[0-9]{10}" return NSPredicate(format: "SELF MATCHES %@", str).evaluate(with: mobile) diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/My.storyboard b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/My.storyboard index 2bcad60..013cced 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/My.storyboard +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/My.storyboard @@ -654,9 +654,9 @@ <constraint firstAttribute="trailing" secondItem="1J2-p5-3X1" secondAttribute="trailing" constant="16" id="zP0-t8-7QU"/> </constraints> </view> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8rh-jr-h8p"> + <button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8rh-jr-h8p"> <rect key="frame" x="8" y="198" width="359" height="40"/> - <color key="backgroundColor" red="0.7725490196" green="0.85490196080000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/> <constraints> <constraint firstAttribute="height" constant="40" id="EUp-oS-yvq"/> </constraints> @@ -746,6 +746,7 @@ <nil key="simulatedTopBarMetrics"/> <connections> <outlet property="iconImageView" destination="MuP-eU-u8t" id="PTg-zh-c8A"/> + <outlet property="loginBtn" destination="8rh-jr-h8p" id="sCl-jk-qmI"/> <outlet property="passwordHiddenBtn" destination="1J2-p5-3X1" id="nRt-UB-PLr"/> <outlet property="passwordTextField" destination="IOQ-sk-Ckx" id="WdM-7n-kAj"/> <outlet property="phoneTextField" destination="zJR-4G-Ym9" id="9rT-Uj-tRY"/> diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MyViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MyViewController.swift index e74142b..fbe12a0 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MyViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/my/Controller/MyViewController.swift @@ -19,7 +19,7 @@ class MyViewController: UIViewController { @IBOutlet var loginBtn: UIButton!//登录按钮 @IBOutlet var currentInfoBtn: UIButton!//查看个人信息按钮 @IBOutlet var logoutBtn: UIButton! - var titleDataSet:[String]=["消息","订购详情","家校通订购","我的孩子","空白","意见与反馈","清除缓存","关于"] + var titleDataSet:[String]=["消息","订购详情","订购中心","我的孩子","空白","意见与反馈","清除缓存","关于"] var iconDataSet:[String] = ["my_icon_orderMessage","my_icon_orderDetail","my_icon_order","my_icon_children","","my_icon_service","my_icon_cachingClear","my_icon_about"] override func viewDidLoad() { super.viewDidLoad() @@ -71,7 +71,7 @@ class MyViewController: UIViewController { let info = AccountManager.shared personNameLabel.text = info.name() personNumberLabel.text = info.phone() - personIconImageView.sd_setImage(with: URL(string: AccountManager.shared.photo().addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "my_defphoto")) + personIconImageView.sd_setImage(with: URL(string: AccountManager.shared.photo().addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!), placeholderImage: UIImage(named: "defphoto")) }else{ logoutBtn.isHidden = true personNameLabel.isHidden = true diff --git a/ParentAssistant/ParentAssistant/Classes/controllers/report/ReportViewController.swift b/ParentAssistant/ParentAssistant/Classes/controllers/report/ReportViewController.swift index bb090a5..808b029 100644 --- a/ParentAssistant/ParentAssistant/Classes/controllers/report/ReportViewController.swift +++ b/ParentAssistant/ParentAssistant/Classes/controllers/report/ReportViewController.swift @@ -27,7 +27,8 @@ class ReportViewController: UIViewController { self.navigationController?.navigationBar.barStyle = UIBarStyle.default// UIColorFromRGB(0xC5DAFF) let backImage = UIImage(named: "navigationBar_backgrounImage") self.navigationController?.navigationBar.setBackgroundImage(backImage, for: UIBarMetrics.default) - setuptitleView() + self.navigationItem.title = "报告" +// setuptitleView() titleView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: 44) self.navigationItem.titleView = titleView titleView.layoutSubviews() @@ -55,9 +56,6 @@ class ReportViewController: UIViewController { dateAry = getCurrentWeeks() //添加日历 dateView = LXCalendarView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: screenWidth/2)) -// dateView.currentMonthTitleColor = UIColorFromRGB(0xC5DAFF) -// dateView.lastMonthTitleColor = UIColorFromRGB(0xC5DAFF) -// dateView.nextMonthTitleColor = UIColorFromRGB(0xC5DAFF) dateView.isHaveAnimation = true dateView.isCanScroll = true dateView.isShowLastAndNextBtn = false @@ -138,7 +136,6 @@ extension ReportViewController: ReportHeaderViewDelegate{ func selectTypeButton() { appDelegate.window!.makeToast("该功能暂不开放", duration: 1, position: CSToastPositionCenter) return - appDelegate.window!.makeToast("筛选", duration: 3, position: CSToastPositionCenter) } } // MARK: - 顶部展示日期 diff --git a/ParentAssistant/ParentAssistant/Classes/libs/LaunchIntroduction/LaunchIntroductionView.h b/ParentAssistant/ParentAssistant/Classes/libs/LaunchIntroduction/LaunchIntroductionView.h new file mode 100755 index 0000000..5a18543 --- /dev/null +++ b/ParentAssistant/ParentAssistant/Classes/libs/LaunchIntroduction/LaunchIntroductionView.h @@ -0,0 +1,63 @@ +// +// LaunchIntroductionView.h +// ZYGLaunchIntroductionDemo +// +// Created by ZhangYunguang on 16/4/7. +// Copyright © 2016年 ZhangYunguang. All rights reserved. +// + +#import <UIKit/UIKit.h> + +#define kScreen_height [[UIScreen mainScreen] bounds].size.height +#define kScreen_width [[UIScreen mainScreen] bounds].size.width + +@interface LaunchIntroductionView : UIView +/** + * 选中page的指示器颜色,默认白色 + */ +@property (nonatomic, strong) UIColor *currentColor; +/** + * 其他状态下的指示器的颜色,默认 + */ +@property (nonatomic, strong) UIColor *nomalColor; +/** + * 不带按钮的引导页,滑动到最后一页,再向右滑直接隐藏引导页 + * + * @param imageNames 背景图片数组 + * + * @return LaunchIntroductionView对象 + */ ++(instancetype)sharedWithImages:(NSArray *) imageNames; +/** + * 带按钮的引导页 + * + * @param imageNames 背景图片数组 + * @param buttonImageName 按钮的图片 + * @param frame 按钮的frame + * + * @return LaunchIntroductionView对象 + */ ++(instancetype)sharedWithImages:(NSArray *) imageNames buttonImage:(NSString *) buttonImageName buttonFrame:(CGRect ) frame; + +/** + 用storyboard创建的project调用此方法 + + @param storyboardName storyboardName + @param imageNames 图片名字数组 + @return LaunchIntroductionView对象 + */ ++ (instancetype)sharedWithStoryboardName:(NSString *)storyboardName images:(NSArray *)imageNames; + +/** + 用storyboard创建的project调用此方法 + + @param storyboardName storyboardName + @param imageNames 图片名字数组 + @param buttonImageName 按钮图片名字 + @param frame 按钮的frame + @return LaunchIntroductionView对象 + */ ++(instancetype)sharedWithStoryboard:(NSString *)storyboardName images:(NSArray *) imageNames buttonImage:(NSString *) buttonImageName buttonFrame:(CGRect ) frame; + + +@end diff --git a/ParentAssistant/ParentAssistant/Classes/libs/LaunchIntroduction/LaunchIntroductionView.m b/ParentAssistant/ParentAssistant/Classes/libs/LaunchIntroduction/LaunchIntroductionView.m new file mode 100755 index 0000000..d16068a --- /dev/null +++ b/ParentAssistant/ParentAssistant/Classes/libs/LaunchIntroduction/LaunchIntroductionView.m @@ -0,0 +1,199 @@ +// +// LaunchIntroductionView.m +// ZYGLaunchIntroductionDemo +// +// Created by ZhangYunguang on 16/4/7. +// Copyright © 2016年 ZhangYunguang. All rights reserved. +// + +#import "LaunchIntroductionView.h" +#import "UIImageView+WebCache.h" +static NSString *const kAppVersion = @"appVersion"; + +@interface LaunchIntroductionView ()<UIScrollViewDelegate> +{ + UIScrollView *launchScrollView; + UIPageControl *page; +} + +@end + +@implementation LaunchIntroductionView +NSArray *images; +BOOL isScrollOut;//在最后一页再次滑动是否隐藏引导页 +CGRect enterBtnFrame; +NSString *enterBtnImage; +static LaunchIntroductionView *launch = nil; +NSString *storyboard; + +#pragma mark - 创建对象-->>不带button ++(instancetype)sharedWithImages:(NSArray *)imageNames{ + images = imageNames; + isScrollOut = YES; + launch = [[LaunchIntroductionView alloc] initWithFrame:CGRectMake(0, 0, kScreen_width, kScreen_height)]; + launch.backgroundColor = [UIColor whiteColor]; + return launch; +} + +#pragma mark - 创建对象-->>带button ++(instancetype)sharedWithImages:(NSArray *)imageNames buttonImage:(NSString *)buttonImageName buttonFrame:(CGRect)frame{ + images = imageNames; + isScrollOut = NO; + enterBtnFrame = frame; + enterBtnImage = buttonImageName; + launch = [[LaunchIntroductionView alloc] initWithFrame:CGRectMake(0, 0, kScreen_width, kScreen_height)]; + launch.backgroundColor = [UIColor whiteColor]; + return launch; +} +#pragma mark - 用storyboard创建的项目时调用,不带button ++ (instancetype)sharedWithStoryboardName:(NSString *)storyboardName images:(NSArray *)imageNames { + images = imageNames; + storyboard = storyboardName; + isScrollOut = YES; + launch = [[LaunchIntroductionView alloc] initWithFrame:CGRectMake(0, 0, kScreen_width, kScreen_height)]; + launch.backgroundColor = [UIColor whiteColor]; + return launch; +} +#pragma mark - 用storyboard创建的项目时调用,带button ++ (instancetype)sharedWithStoryboard:(NSString *)storyboardName images:(NSArray *)imageNames buttonImage:(NSString *)buttonImageName buttonFrame:(CGRect)frame{ + images = imageNames; + isScrollOut = NO; + enterBtnFrame = frame; + storyboard = storyboardName; + enterBtnImage = buttonImageName; + launch = [[LaunchIntroductionView alloc] initWithFrame:CGRectMake(0, 0, kScreen_width, kScreen_height)]; + launch.backgroundColor = [UIColor whiteColor]; + return launch; +} +#pragma mark - 初始化 +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self addObserver:self forKeyPath:@"currentColor" options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:@"nomalColor" options:NSKeyValueObservingOptionNew context:nil]; + if ([self isFirstLauch]) { + UIStoryboard *story; + if (storyboard) { + story = [UIStoryboard storyboardWithName:storyboard bundle:nil]; + } + UIWindow *window = [UIApplication sharedApplication].windows.lastObject; + if (story) { + UIViewController * vc = story.instantiateInitialViewController; + window.rootViewController = vc; + [vc.view addSubview:self]; + }else { + [window addSubview:self]; + } + [self addImages]; + }else{ + [self removeFromSuperview]; + } + } + return self; +} +#pragma mark - 判断是不是首次登录或者版本更新 +-(BOOL )isFirstLauch{ + //获取当前版本号 + NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; + NSString *currentAppVersion = infoDic[@"CFBundleShortVersionString"]; + //获取上次启动应用保存的appVersion + NSString *version = [[NSUserDefaults standardUserDefaults] objectForKey:kAppVersion]; + //版本升级或首次登录 + if (version == nil || ![version isEqualToString:currentAppVersion]) { + [[NSUserDefaults standardUserDefaults] setObject:currentAppVersion forKey:kAppVersion]; + [[NSUserDefaults standardUserDefaults] synchronize]; + return YES; + }else{ + return NO; + } +} +#pragma mark - 添加引导页图片 +-(void)addImages{ + [self createScrollView]; +} +#pragma mark - 创建滚动视图 +-(void)createScrollView{ + launchScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, kScreen_width, kScreen_height)]; + launchScrollView.showsHorizontalScrollIndicator = NO; + launchScrollView.bounces = NO; + launchScrollView.pagingEnabled = YES; + launchScrollView.delegate = self; + launchScrollView.contentSize = CGSizeMake(kScreen_width * images.count, kScreen_height); + [self addSubview:launchScrollView]; + for (int i = 0; i < images.count; i ++) { + UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * kScreen_width, 0, kScreen_width, kScreen_height)]; + imageView.contentMode = UIViewContentModeScaleAspectFit; +// imageView.image = [UIImage imageNamed:images[i]]; + [imageView sd_setImageWithURL:[NSURL URLWithString:images[i]]]; + [launchScrollView addSubview:imageView]; + if (i == images.count - 1) { + //判断要不要添加button + if (!isScrollOut) { + UIButton *enterButton = [[UIButton alloc] initWithFrame:CGRectMake(enterBtnFrame.origin.x, enterBtnFrame.origin.y, enterBtnFrame.size.width, enterBtnFrame.size.height)]; + [enterButton setImage:[UIImage imageNamed:enterBtnImage] forState:UIControlStateNormal]; + [enterButton addTarget:self action:@selector(enterBtnClick) forControlEvents:UIControlEventTouchUpInside]; + [imageView addSubview:enterButton]; + imageView.userInteractionEnabled = YES; + } + } + } + page = [[UIPageControl alloc] initWithFrame:CGRectMake(0, kScreen_height - 50, kScreen_width, 30)]; + page.numberOfPages = images.count; + page.backgroundColor = [UIColor clearColor]; + page.currentPage = 0; + page.defersCurrentPageDisplay = YES; + [self addSubview:page]; +} +#pragma mark - 进入按钮 +-(void)enterBtnClick{ + [self hideGuidView]; +} +#pragma mark - 隐藏引导页 +-(void)hideGuidView{ + [UIView animateWithDuration:0.5 animations:^{ + self.alpha = 0; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self removeFromSuperview]; + }); + + }]; +} +#pragma mark - scrollView Delegate +-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ + int cuttentIndex = (int)(scrollView.contentOffset.x + kScreen_width/2)/kScreen_width; + if (cuttentIndex == images.count - 1) { + if ([self isScrolltoLeft:scrollView]) { + if (!isScrollOut) { + return ; + } + [self hideGuidView]; + } + } +} +-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ + if (scrollView == launchScrollView) { + int cuttentIndex = (int)(scrollView.contentOffset.x + kScreen_width/2)/kScreen_width; + page.currentPage = cuttentIndex; + } +} +#pragma mark - 判断滚动方向 +-(BOOL )isScrolltoLeft:(UIScrollView *) scrollView{ + //返回YES为向左反动,NO为右滚动 + if ([scrollView.panGestureRecognizer translationInView:scrollView.superview].x < 0) { + return YES; + }else{ + return NO; + } +} +#pragma mark - KVO监测值的变化 +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{ + if ([keyPath isEqualToString:@"currentColor"]) { + page.currentPageIndicatorTintColor = self.currentColor; + } + if ([keyPath isEqualToString:@"nomalColor"]) { + page.pageIndicatorTintColor = self.nomalColor; + } +} + +@end diff --git a/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAd.swift b/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAd.swift index 4cb756a..90a585b 100755 --- a/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAd.swift +++ b/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAd.swift @@ -20,7 +20,7 @@ public class ZLaunchAd: NSObject { /// - adNetRequest: 广告网络请求。如果需要每次进入前台是显示不同的广告图片,网络请求写在此闭包中 /// - Returns: ZLaunchAdView @discardableResult - @objc public class func create(waitTime: Int = 3, showEnterForeground: Bool = false, adNetRequest: ((ZLaunchAdView)->())? = nil) -> ZLaunchAdView { + @objc public class func create(waitTime: Int = 5, showEnterForeground: Bool = false, adNetRequest: ((ZLaunchAdView)->())? = nil) -> ZLaunchAdView { let launchAdView: ZLaunchAdView if showEnterForeground { launchAdView = ZLaunchAdView.default diff --git a/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdConfig.swift b/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdConfig.swift index 465bb42..6acae24 100755 --- a/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdConfig.swift +++ b/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdConfig.swift @@ -82,7 +82,7 @@ public typealias ZLaunchClosure = ()->() /// 数字大小 @objc public var timeFont = UIFont.systemFont(ofSize: 15) /// 数字颜色 - @objc public var timeColor = UIColor.red + @objc public var timeColor = UIColor.white /// 跳过按钮类型 @objc public var skipBtnType: ZLaunchSkipButtonType = .textLeftTimerRight /// 圆形进度颜色 diff --git a/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdView.swift b/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdView.swift index 76a6a9e..cab94b1 100755 --- a/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdView.swift +++ b/ParentAssistant/ParentAssistant/Classes/libs/ZLaunchAd/ZLaunchAdView.swift @@ -91,6 +91,7 @@ extension ZLaunchAdView { guard let imageResource = imageResource, let imageNameOrImageURL = imageResource.imageNameOrImageURL else { return } launchAdImgView.frame = imageResource.imageFrame + launchAdImgView.contentMode = UIViewContentMode.scaleAspectFit addSubview(launchAdImgView) if imageNameOrImageURL.contains("http://") || imageNameOrImageURL.contains("https://") { launchAdImgView.setImage(with: imageNameOrImageURL, options: imageResource.imageOptions) { diff --git a/ParentAssistant/ParentAssistant/ParentAssistant-Bridging-Header.h b/ParentAssistant/ParentAssistant/ParentAssistant-Bridging-Header.h index 3850c8d..fa61ec1 100644 --- a/ParentAssistant/ParentAssistant/ParentAssistant-Bridging-Header.h +++ b/ParentAssistant/ParentAssistant/ParentAssistant-Bridging-Header.h @@ -22,4 +22,5 @@ #import <NIMSDK/NIMSDK.h> #import "LZCityPickerController.h" +#import "LaunchIntroductionView.h" diff --git a/ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_camera.imageset/Contents.json b/ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_camera.imageset/Contents.json new file mode 100644 index 0000000..9444a3f --- /dev/null +++ b/ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_camera.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "camera.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_camera.imageset/camera.png b/ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_camera.imageset/camera.png new file mode 100644 index 0000000..0e87bd0 Binary files /dev/null and b/ParentAssistant/ParentAssistant/Supporting Files/Assets.xcassets/evaluation/evaluation_icon_camera.imageset/camera.png differ diff --git a/ParentAssistant/ParentAssistant/Supporting Files/Base.lproj/Main.storyboard b/ParentAssistant/ParentAssistant/Supporting Files/Base.lproj/Main.storyboard index 69e62dc..6a1bb76 100644 --- a/ParentAssistant/ParentAssistant/Supporting Files/Base.lproj/Main.storyboard +++ b/ParentAssistant/ParentAssistant/Supporting Files/Base.lproj/Main.storyboard @@ -456,7 +456,7 @@ <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> </view> <navigationItem key="navigationItem" title="测评" id="1Lk-x4-9OW"> - <barButtonItem key="rightBarButtonItem" systemItem="camera" id="e8u-Kr-J32"> + <barButtonItem key="rightBarButtonItem" image="evaluation_icon_camera" id="e8u-Kr-J32"> <color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <connections> <action selector="selectCamareAction:" destination="BYZ-38-t0r" id="ePR-Ms-0ze"/> @@ -491,7 +491,7 @@ <!--Tab Bar Controller--> <scene sceneID="6yA-8W-l0b"> <objects> - <tabBarController automaticallyAdjustsScrollViewInsets="NO" id="PbF-i7-G0s" customClass="TabBarController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> + <tabBarController storyboardIdentifier="TabBarController" automaticallyAdjustsScrollViewInsets="NO" id="PbF-i7-G0s" customClass="TabBarController" customModule="ParentAssistant" customModuleProvider="target" sceneMemberID="viewController"> <toolbarItems/> <navigationItem key="navigationItem" id="Xea-Ll-sGg"/> <tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="6Bt-XK-CLv"> @@ -848,19 +848,39 @@ <constraint firstAttribute="bottom" secondItem="wGp-kr-l5S" secondAttribute="bottom" id="p0u-d2-Uig"/> </constraints> </view> + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="A43-XP-A41"> + <rect key="frame" x="0.0" y="64" width="375" height="554"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="该功能暂不开放" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xcu-Qc-1gt"> + <rect key="frame" x="133.5" y="268" width="107.5" height="18"/> + <fontDescription key="fontDescription" type="system" pointSize="15"/> + <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> + <nil key="highlightedColor"/> + </label> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="Xcu-Qc-1gt" firstAttribute="centerX" secondItem="A43-XP-A41" secondAttribute="centerX" id="Fwg-CW-1E4"/> + <constraint firstItem="Xcu-Qc-1gt" firstAttribute="centerY" secondItem="A43-XP-A41" secondAttribute="centerY" id="HhT-1o-bSm"/> + </constraints> + </view> </subviews> <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> <constraints> <constraint firstItem="hwJ-Xg-tKm" firstAttribute="leading" secondItem="9O4-jf-dgu" secondAttribute="leading" id="5Q0-Yi-ShV"/> <constraint firstItem="hwJ-Xg-tKm" firstAttribute="top" secondItem="9O4-jf-dgu" secondAttribute="top" id="61Z-vW-5DV"/> + <constraint firstItem="A43-XP-A41" firstAttribute="trailing" secondItem="9O4-jf-dgu" secondAttribute="trailing" id="Iba-zi-BPh"/> <constraint firstItem="EEs-Ae-t7U" firstAttribute="bottom" secondItem="9O4-jf-dgu" secondAttribute="bottom" id="JYY-zh-cHV"/> <constraint firstItem="k9z-2G-Fhx" firstAttribute="trailing" secondItem="9O4-jf-dgu" secondAttribute="trailing" id="JtI-9e-igF"/> <constraint firstItem="EEs-Ae-t7U" firstAttribute="leading" secondItem="9O4-jf-dgu" secondAttribute="leading" id="MzB-kU-gbs"/> <constraint firstItem="EEs-Ae-t7U" firstAttribute="trailing" secondItem="9O4-jf-dgu" secondAttribute="trailing" id="NPL-F1-7Sg"/> + <constraint firstItem="A43-XP-A41" firstAttribute="leading" secondItem="9O4-jf-dgu" secondAttribute="leading" id="NsR-AG-Nxb"/> <constraint firstItem="k9z-2G-Fhx" firstAttribute="leading" secondItem="9O4-jf-dgu" secondAttribute="leading" id="QZG-IF-A8F"/> <constraint firstItem="EEs-Ae-t7U" firstAttribute="top" secondItem="k9z-2G-Fhx" secondAttribute="bottom" constant="5" id="SBe-2c-H4J"/> + <constraint firstItem="A43-XP-A41" firstAttribute="bottom" secondItem="9O4-jf-dgu" secondAttribute="bottom" id="ShD-0u-kTc"/> <constraint firstItem="k9z-2G-Fhx" firstAttribute="top" secondItem="9O4-jf-dgu" secondAttribute="top" id="UIi-qU-PBc"/> <constraint firstAttribute="bottom" secondItem="hwJ-Xg-tKm" secondAttribute="bottom" id="YjS-6f-Gk9"/> + <constraint firstItem="A43-XP-A41" firstAttribute="top" secondItem="9O4-jf-dgu" secondAttribute="top" id="hu6-HC-sc0"/> <constraint firstItem="hwJ-Xg-tKm" firstAttribute="trailing" secondItem="9O4-jf-dgu" secondAttribute="trailing" id="sNr-ZT-Lsy"/> </constraints> <viewLayoutGuide key="safeArea" id="9O4-jf-dgu"/> @@ -2227,6 +2247,7 @@ <image name="Information_bar_icon_select" width="22" height="20"/> <image name="evaluation_bar_icon" width="22" height="21"/> <image name="evaluation_bar_icon_select" width="22" height="21"/> + <image name="evaluation_icon_camera" width="32" height="32"/> <image name="evaluation_icon_learningManagement" width="45" height="47"/> <image name="evaluation_icon_play" width="59" height="59"/> <image name="evaluation_icon_training" width="47" height="47"/> -- libgit2 0.21.0