41个文件已修改
23个文件已删除
4个文件已添加
| | |
| | | 1302789A2BFD9FBF00DDCE81 /* AddressManageTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130278942BFD9FBF00DDCE81 /* AddressManageTCell.swift */; }; |
| | | 1302789B2BFD9FBF00DDCE81 /* GoodsItemTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130278952BFD9FBF00DDCE81 /* GoodsItemTCell.swift */; }; |
| | | 130A2C812C07075B008463B2 /* ListenFight_Game_Pocket_CCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130A2C7F2C07075B008463B2 /* ListenFight_Game_Pocket_CCell.swift */; }; |
| | | 130E97772C329E2700205207 /* VIPCenterVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 130E97762C329E2700205207 /* VIPCenterVC.xib */; }; |
| | | 130E97782C329E2700205207 /* VIPCenterVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 130E97752C329E2700205207 /* VIPCenterVC.swift */; }; |
| | | 131148792C4A135B001E0325 /* UserLoginOffVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 131148782C4A135B001E0325 /* UserLoginOffVC.swift */; }; |
| | | 1316A22E2C05CE5900BE6CAA /* GameBeginTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1316A22D2C05CE5900BE6CAA /* GameBeginTipView.swift */; }; |
| | | 1316A2302C05CE6100BE6CAA /* GameBeginTipView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1316A22F2C05CE6100BE6CAA /* GameBeginTipView.xib */; }; |
| | | 1319B0272C0818460052F889 /* HomeListenStory_1_VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1319B0262C0818460052F889 /* HomeListenStory_1_VC.swift */; }; |
| | |
| | | 130278952BFD9FBF00DDCE81 /* GoodsItemTCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GoodsItemTCell.swift; sourceTree = "<group>"; }; |
| | | 130A2C7F2C07075B008463B2 /* ListenFight_Game_Pocket_CCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListenFight_Game_Pocket_CCell.swift; sourceTree = "<group>"; }; |
| | | 130E97752C329E2700205207 /* VIPCenterVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VIPCenterVC.swift; sourceTree = "<group>"; }; |
| | | 130E97762C329E2700205207 /* VIPCenterVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VIPCenterVC.xib; sourceTree = "<group>"; }; |
| | | 131148782C4A135B001E0325 /* UserLoginOffVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginOffVC.swift; sourceTree = "<group>"; }; |
| | | 1316A22D2C05CE5900BE6CAA /* GameBeginTipView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameBeginTipView.swift; sourceTree = "<group>"; }; |
| | | 1316A22F2C05CE6100BE6CAA /* GameBeginTipView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GameBeginTipView.xib; sourceTree = "<group>"; }; |
| | | 1319B0262C0818460052F889 /* HomeListenStory_1_VC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeListenStory_1_VC.swift; sourceTree = "<group>"; }; |
| | |
| | | 130278852BFD9F2A00DDCE81 /* AddressManageHandleVC.xib */, |
| | | 130278862BFD9F2A00DDCE81 /* AddressManageVC.swift */, |
| | | 130E97752C329E2700205207 /* VIPCenterVC.swift */, |
| | | 130E97762C329E2700205207 /* VIPCenterVC.xib */, |
| | | 134C54AF2C3785910009D09C /* ParentVerifiyView.swift */, |
| | | 134C54B12C37859D0009D09C /* ParentVerifiyView.xib */, |
| | | 131148782C4A135B001E0325 /* UserLoginOffVC.swift */, |
| | | ); |
| | | path = VC; |
| | | sourceTree = "<group>"; |
| | |
| | | 13EEB8A52BFF353C002996FC /* HomeListen_process_TCell.xib in Resources */, |
| | | 13A830FA2C043A0600BB2F23 /* Lesson_3_AnswerView.xib in Resources */, |
| | | 1302785D2BFD985E00DDCE81 /* CommonInputView.xib in Resources */, |
| | | 130E97772C329E2700205207 /* VIPCenterVC.xib in Resources */, |
| | | 1302787A2BFD9ED600DDCE81 /* ExchangeResultVC.xib in Resources */, |
| | | 130278362BFD957300DDCE81 /* Base in Resources */, |
| | | 134C54B22C37859D0009D09C /* ParentVerifiyView.xib in Resources */, |
| | |
| | | 130E97782C329E2700205207 /* VIPCenterVC.swift in Sources */, |
| | | 13397D962C05EA9D003440F9 /* ListenFight_Game_CCell.swift in Sources */, |
| | | 13EEB8A42BFF353C002996FC /* HomeListen_process_TCell.swift in Sources */, |
| | | 131148792C4A135B001E0325 /* UserLoginOffVC.swift in Sources */, |
| | | 130278782BFD9ED600DDCE81 /* MarketVC.swift in Sources */, |
| | | 1302785E2BFD985E00DDCE81 /* CommonWebVC.swift in Sources */, |
| | | 13EEB8AB2BFF36E0002996FC /* HomeListenSubVC.swift in Sources */, |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "bg_abc.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "bg_abc@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "bg_card.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "bg_card@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "home_arrow_up.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "home_arrow_up@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "home_culture.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "home_culture@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "home_listen.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "home_listen@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "filename" : "dingweiweizhi.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "dingweiweizhi@2x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "dingweiweizhi@3x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "3x" |
| | | }, |
| | | { |
| | | "filename" : "dingweiweizhi 1.png", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "xiangji1fill.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_camera@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_camera@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "filename" : "record_one.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "record_one@2x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "record_one@3x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "3x" |
| | | }, |
| | | { |
| | | "filename" : "icon_coin.png", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "icon_fail.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_fail@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "filename" : "modify_order.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "modify_order@2x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "modify_order@3x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "3x" |
| | | }, |
| | | { |
| | | "filename" : "icon_feedback.png", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "icon_input_code.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_input_code@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_input_code@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "icon_input_phone.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_input_phone@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_input_phone@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "filename" : "icon_logoff.png", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_logoff@2x.png", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "icon_more.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_more@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_more@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | "images" : [ |
| | | { |
| | | "filename" : "icon_more_gray.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "icon_more_gray@2x.png", |
| | | "idiom" : "universal", |
| | | "idiom" : "ipad", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_more_gray@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "filename" : "shangchuanziliao.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "shangchuanziliao@2x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "shangchuanziliao@3x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "3x" |
| | | }, |
| | | { |
| | | "filename" : "icon_record.png", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_search@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "filename" : "share.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "share@2x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "share@3x.png", |
| | | "idiom" : "iphone", |
| | | "scale" : "3x" |
| | | }, |
| | | { |
| | | "filename" : "icon_share.png", |
| | | "idiom" : "ipad", |
| | | "scale" : "1x" |
| | |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "icon_vip@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | |
| | | var inventory: Int = 0 |
| | | var isDelete: Int = 0 |
| | | var name: String = "" |
| | | var price: Int = 0 |
| | | var price: Double = 0 |
| | | var surplus: Int? |
| | | var total: Int = 0 |
| | | var type: Int = 0 |
| | |
| | | struct StudyGamesRecordModel:HandyJSON{ |
| | | var accuracy: Int = 0 |
| | | var createBy: String = "" |
| | | var createTime: String = "" |
| | | var time = "" |
| | | // var createTime: String = "" |
| | | var disabled: Bool = false |
| | | var gameDifficulty: Int = 0 |
| | | var gameId: Int = 0 |
| | | var gameName: String = "" |
| | | var id: Int = 0 |
| | | var updateBy: String = "" |
| | | var updateTime: String = "" |
| | | // var updateTime: String = "" |
| | | var userId: Int = 0 |
| | | var useTime: Int = 0 |
| | | } |
| | |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="3du-Pw-IgI"> |
| | | <rect key="frame" x="70.5" y="40" width="144" height="136"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="欢迎使用哆能智学!" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nUx-UB-L4X"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="欢迎使用哆能智学!" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nUx-UB-L4X"> |
| | | <rect key="frame" x="18" y="193" width="249" height="33.5"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="28"/> |
| | | <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oad-Jg-rwh"> |
| | | <rect key="frame" x="18" y="238.5" width="189" height="47"/> |
| | | <rect key="frame" x="18" y="238.5" width="192.5" height="50.5"/> |
| | | <attributedString key="attributedText"> |
| | | <fragment content="孩子自己就能学好的"> |
| | | <attributes> |
| | | <color key="NSColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | <font key="NSFont" size="21" name=".PingFangSC-Regular"/> |
| | | <font key="NSFont" metaFont="system" size="21"/> |
| | | <font key="NSOriginalFont" metaFont="system" size="21"/> |
| | | <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/> |
| | | </attributes> |
| | |
| | | <fragment content="英语课程体系"> |
| | | <attributes> |
| | | <color key="NSColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | <font key="NSFont" size="21" name=".PingFangSC-Regular"/> |
| | | <font key="NSFont" metaFont="system" size="21"/> |
| | | <font key="NSOriginalFont" metaFont="system" size="21"/> |
| | | <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/> |
| | | </attributes> |
| | |
| | | @IBOutlet weak var view_top: UIView! |
| | | @IBOutlet weak var img_state: UIImageView! |
| | | @IBOutlet weak var img_cover: UIImageView! |
| | | @IBOutlet weak var view_grayHeiCons: NSLayoutConstraint! |
| | | @IBOutlet weak var img_statusWeight: NSLayoutConstraint! |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | |
| | | super.layoutSubviews() |
| | | view_top.jq_addCorners(corner: [.topLeft,.topRight], radius: 8) |
| | | jq_cornerRadius = 8 |
| | | view_grayHeiCons.constant = (self.width - 10) * 0.1667 |
| | | img_statusWeight.constant = self.width * 0.2333 |
| | | } |
| | | } |
| | |
| | | <device id="ipad10_9rounded" orientation="portrait" layout="fullscreen" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> |
| | | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
| | | <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="_ListenFight_Game_CCell" id="gTV-IL-0wX" customClass="ListenFight_Game_CCell" customModule="DolphinEnglishLearnStudent" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="165" height="210"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="188" height="210"/> |
| | | <autoresizingMask key="autoresizingMask"/> |
| | | <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> |
| | | <rect key="frame" x="0.0" y="0.0" width="165" height="210"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="188" height="210"/> |
| | | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YTs-C9-W1k"> |
| | | <rect key="frame" x="5" y="5" width="155" height="200"/> |
| | | <rect key="frame" x="5" y="5" width="178" height="200"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Mmn-Bf-5Vy"> |
| | | <rect key="frame" x="0.0" y="0.0" width="155" height="40"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="178" height="40"/> |
| | | <color key="backgroundColor" red="0.83137254901960778" green="0.82352941176470584" blue="0.80392156862745101" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="E9b-fE-KSJ"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="qVZ-4r-nXX"> |
| | | <rect key="frame" x="0.0" y="40" width="155" height="160"/> |
| | | <rect key="frame" x="0.0" y="40" width="178" height="160"/> |
| | | </imageView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NUh-6J-pQi"> |
| | | <rect key="frame" x="121" y="166" width="34" height="34"/> |
| | | <rect key="frame" x="144" y="166" width="34" height="34"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="icon_fullScreen"/> |
| | | <connections> |
| | |
| | | </connections> |
| | | </button> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_success" translatesAutoresizingMaskIntoConstraints="NO" id="dMD-2P-QwE"> |
| | | <rect key="frame" x="49.5" y="92" width="56" height="56"/> |
| | | <rect key="frame" x="61" y="72" width="56" height="56"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="56" id="StM-MP-u9g"/> |
| | | <constraint firstAttribute="width" secondItem="dMD-2P-QwE" secondAttribute="height" multiplier="1:1" id="2wm-9Z-Pya"/> |
| | | <constraint firstAttribute="width" constant="56" id="Y6Z-pZ-azs"/> |
| | | </constraints> |
| | | </imageView> |
| | |
| | | <constraint firstItem="Mmn-Bf-5Vy" firstAttribute="top" secondItem="YTs-C9-W1k" secondAttribute="top" id="1Sn-gn-FxE"/> |
| | | <constraint firstItem="dMD-2P-QwE" firstAttribute="centerX" secondItem="qVZ-4r-nXX" secondAttribute="centerX" id="4uB-mE-grS"/> |
| | | <constraint firstAttribute="trailing" secondItem="Mmn-Bf-5Vy" secondAttribute="trailing" id="5Nt-bJ-JBK"/> |
| | | <constraint firstItem="dMD-2P-QwE" firstAttribute="centerY" secondItem="qVZ-4r-nXX" secondAttribute="centerY" id="Ker-Ja-SCC"/> |
| | | <constraint firstAttribute="trailing" secondItem="NUh-6J-pQi" secondAttribute="trailing" id="LIg-1l-i3u"/> |
| | | <constraint firstAttribute="trailing" secondItem="qVZ-4r-nXX" secondAttribute="trailing" id="PZ7-rB-ouR"/> |
| | | <constraint firstItem="dMD-2P-QwE" firstAttribute="centerX" secondItem="qVZ-4r-nXX" secondAttribute="centerX" id="Pzl-qF-UtV"/> |
| | | <constraint firstItem="Mmn-Bf-5Vy" firstAttribute="leading" secondItem="YTs-C9-W1k" secondAttribute="leading" id="bJw-qs-aXN"/> |
| | | <constraint firstItem="qVZ-4r-nXX" firstAttribute="top" secondItem="Mmn-Bf-5Vy" secondAttribute="bottom" id="grT-zb-2jJ"/> |
| | | <constraint firstItem="qVZ-4r-nXX" firstAttribute="leading" secondItem="YTs-C9-W1k" secondAttribute="leading" id="sxq-IC-gv7"/> |
| | |
| | | <constraints> |
| | | <constraint firstItem="YTs-C9-W1k" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="5" id="7F2-TZ-ITp"/> |
| | | <constraint firstAttribute="bottom" secondItem="YTs-C9-W1k" secondAttribute="bottom" constant="5" id="NS4-Iw-Buc"/> |
| | | <constraint firstItem="dMD-2P-QwE" firstAttribute="centerY" secondItem="gTV-IL-0wX" secondAttribute="centerY" id="Qkf-97-Log"/> |
| | | <constraint firstItem="YTs-C9-W1k" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="5" id="bKs-J5-I38"/> |
| | | <constraint firstAttribute="trailing" secondItem="YTs-C9-W1k" secondAttribute="trailing" constant="5" id="bdG-vi-hhI"/> |
| | | <constraint firstItem="dMD-2P-QwE" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="bix-z7-Q2c"/> |
| | | </constraints> |
| | | <size key="customSize" width="165" height="210"/> |
| | | <size key="customSize" width="188" height="210"/> |
| | | <connections> |
| | | <outlet property="img_cover" destination="qVZ-4r-nXX" id="fI2-K0-BPL"/> |
| | | <outlet property="img_state" destination="dMD-2P-QwE" id="asa-h2-2Ut"/> |
| | | <outlet property="img_statusWeight" destination="Y6Z-pZ-azs" id="YwM-tq-IrW"/> |
| | | <outlet property="view_container" destination="YTs-C9-W1k" id="SRu-Wj-Ued"/> |
| | | <outlet property="view_grayHeiCons" destination="E9b-fE-KSJ" id="Q7d-qO-DRu"/> |
| | | <outlet property="view_top" destination="Mmn-Bf-5Vy" id="Pdc-oD-g5f"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="101.34146341463415" y="60.50847457627119"/> |
| | | <point key="canvasLocation" x="109.7560975609756" y="60.50847457627119"/> |
| | | </collectionViewCell> |
| | | </objects> |
| | | <resources> |
| | |
| | | switch viewModel.listenType.value{ |
| | | case .lesson1: |
| | | label_pageNum.text = "已完成:\(viewModel.answerCount.value)/\((data as! ListenNewModel).subjectList.flatMap({$0}).count)" |
| | | maxPage = max(viewModel.answerCount.value,maxPage) |
| | | // maxPage = max(viewModel.answerCount.value,maxPage) |
| | | maxPage = viewModel.answerCount.value |
| | | btn_forward.isHidden = viewModel.answerCount.value == 1 |
| | | case .lesson2,.lesson3,.lesson5: |
| | | label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\((data as! ListenNewModel).subjectList.count)" |
| | | btn_forward.isHidden = viewModel.currentPage.value == 0 |
| | | let page = viewModel.currentPage.value + 1 |
| | | maxPage = max(page,maxPage) |
| | | // maxPage = max(page,maxPage) |
| | | maxPage = page |
| | | case .lesson4: |
| | | //两题为一组:需要/2 |
| | | label_pageNum.text = "已完成:\(viewModel.currentPage.value + 1)/\((data as! ListenNewModel).subjectList.count)" |
| | | let page = viewModel.currentPage.value + 1 |
| | | maxPage = max(page,maxPage) |
| | | // maxPage = max(page,maxPage) |
| | | maxPage = page |
| | | case .game1,.game2: |
| | | btn_forward.isHidden = true |
| | | label_pageNum.isHidden = true |
| | |
| | | } |
| | | |
| | | case .fail: |
| | | self.view.isUserInteractionEnabled = false |
| | | UIView.animate(withDuration: 0.4) { |
| | | tempSubV?.img_state.alpha = 1 |
| | | }completion: { _ in |
| | |
| | | |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+3.2) { |
| | | self.setAnswerStackView() |
| | | self.view.isUserInteractionEnabled = true |
| | | } |
| | | } |
| | | case .none: |
| | |
| | | extension HomeListenMenuVC:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{ |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | |
| | | var ind:Bool? |
| | | |
| | | if selectIndexPath.row != 0{ |
| | | ind = dataItems[selectIndexPath.row - 1].filter({$0.canStudy == 0}).count > 0 |
| | | } |
| | | |
| | | if ind == true{ |
| | | CommonAlertView.show(isSinple: true, content: "请先完成上一季度学习后再试") |
| | | return |
| | | } |
| | | |
| | | let model = dataItems[selectIndexPath.row][indexPath.row] |
| | | |
| | | // 暂时关闭,上线时开启 |
| | | guard model.canStudy == 1 else { |
| | | CommonAlertView.show(isSinple: true, content: "请先完成上一周练习") |
| | | CommonAlertView.show(isSinple: true, content: "请先完成上一周目学习后再试") |
| | | return |
| | | } |
| | | |
| | |
| | | studyScheduleModel = m |
| | | } |
| | | let quarter = weakSelf.selectIndexPath.row + 1 //季度 |
| | | let week = studyScheduleModel.week //周 |
| | | let vc = HomeListenVC(quarter: quarter, week: model.week,studyScheduleModel: studyScheduleModel) |
| | | weakSelf.push(vc: vc) |
| | | |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | refreshDay() |
| | | |
| | | Services.onlineDuration().subscribe(onNext: { data in |
| | | if let time = data.data{ |
| | | sceneDelegate?.globalTimeval = time |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | private func refreshDay(){ |
| | | self.limitDay = studyScheduleModel.day |
| | | |
| | | |
| | | |
| | | let total = studyScheduleModel.pair + studyScheduleModel.induction + studyScheduleModel.listen + studyScheduleModel.look + studyScheduleModel.answer |
| | | |
| | |
| | | self.limitDay = Int.max |
| | | } |
| | | |
| | | #if DEBUG |
| | | self.limitDay = Int.max |
| | | #endif |
| | | // #if DEBUG |
| | | // self.limitDay = Int.max |
| | | // #endif |
| | | |
| | | for (index,titleL) in (self.menu.subviews.last?.subviews[1].subviews ?? []).filter({$0 is UIButton}).enumerated(){ |
| | | if let btn = titleL as? UIButton{ |
| | | if index == 6{ //听故事,单独使用 |
| | | btn.setTitleColor(.black, for: .normal) |
| | | self.menu.setEnabled(true, forItemAt: UInt(index)) |
| | | }else{ |
| | | btn.setTitleColor(index < (self.limitDay) ? .black:.black.withAlphaComponent(0.33), for: .normal) |
| | | self.menu.setEnabled(index < (self.limitDay), forItemAt: UInt(index)) |
| | | } |
| | | } |
| | | } |
| | | self.pageVC.reloadData() |
| | | |
| | | Services.onlineDuration().subscribe(onNext: { data in |
| | | if let time = data.data{ |
| | | sceneDelegate?.globalTimeval = time |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | self.pageVC.scroll(toPage: self.limitDay - 1, animation: true) |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | subVC.studyScheduleModel = weakSelf.studyScheduleModel |
| | | subVC.tableView.reloadData() |
| | | } |
| | | |
| | | weakSelf.refreshDay() |
| | | |
| | | |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | |
| | | private func backAction(){ |
| | | for vc in navigationController?.viewControllers ?? []{ |
| | | if vc.isKind(of: HomeListenMenuVC.self){ |
| | | navigationController?.popToViewController(vc, animated: true);break |
| | | } |
| | | |
| | | if vc.isKind(of: HomeListenVC.self){ |
| | | navigationController?.popToViewController(vc, animated: true);break |
| | | } |
| | |
| | | label_originPrice.isHidden = m.price <= 0 |
| | | |
| | | if !label_originPrice.isHidden{ |
| | | label_originPrice.attributedText = AttributedStringbuilder.build().add(string: "¥\(m.price)", withFont: UIFont.init(name: "Impact", size: 14) ?? .systemFont(ofSize: 14, weight: .medium), withColor: UIColor(hexString: "#9A9A9A")!).delLine(color: UIColor(hexString: "#9A9A9A")!).mutableAttributedString |
| | | label_originPrice.attributedText = AttributedStringbuilder.build().add(string: "¥\(m.price.jq_formatFloat)", withFont: UIFont.init(name: "Impact", size: 14) ?? .systemFont(ofSize: 14, weight: .medium), withColor: UIColor(hexString: "#9A9A9A")!).delLine(color: UIColor(hexString: "#9A9A9A")!).mutableAttributedString |
| | | } |
| | | } |
| | | } |
| | |
| | | self?.label_originPrice.isHidden = m.good!.price <= 0 |
| | | |
| | | if !(self?.label_originPrice.isHidden ?? false){ |
| | | self?.label_originPrice.attributedText = AttributedStringbuilder.build().add(string: "¥\(m.good!.price)", withFont: UIFont.init(name: "Impact", size: 14) ?? .systemFont(ofSize: 14, weight: .medium), withColor: UIColor(hexString: "#9A9A9A")!).delLine(color: UIColor(hexString: "#9A9A9A")!).mutableAttributedString |
| | | self?.label_originPrice.attributedText = AttributedStringbuilder.build().add(string: "¥\(m.good!.price.jq_formatFloat)", withFont: UIFont.init(name: "Impact", size: 14) ?? .systemFont(ofSize: 14, weight: .medium), withColor: UIColor(hexString: "#9A9A9A")!).delLine(color: UIColor(hexString: "#9A9A9A")!).mutableAttributedString |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | label_orderNum.text = viewModel.detailModel.value?.orderNumber ?? "" |
| | | // Services.redeemNow(goodId: viewModel.detailModel.value!.good!.id).subscribe(onNext: {result in |
| | | // result.data?.orderNumber ?? "" |
| | | // self.viewModel.detailModel.accept(result.data) |
| | | // }) { error in |
| | | // self.btn_exchange.backgroundColor = .gray.withAlphaComponent(0.5) |
| | | // self.btn_exchange.isEnabled = false |
| | | // }.disposed(by: disposeBag) |
| | | |
| | | Services.addressList().subscribe(onNext: {[weak self]result in |
| | | self?.viewModel.address.accept(result.data ?? []) |
| | | |
| | |
| | | @IBOutlet weak var btn_exchangeRecord: QMUIButton! |
| | | @IBOutlet weak var btn_share: QMUIButton! |
| | | @IBOutlet weak var btn_etudyRecord: QMUIButton! |
| | | @IBOutlet weak var btn_loginoff: QMUIButton! |
| | | @IBOutlet weak var imge_cover: UIImageView! |
| | | @IBOutlet weak var label_name: UILabel! |
| | | @IBOutlet weak var label_info: UILabel! |
| | |
| | | btn_exchangeRecord.spacingBetweenImageAndTitle = 11 |
| | | btn_share.spacingBetweenImageAndTitle = 11 |
| | | btn_etudyRecord.spacingBetweenImageAndTitle = 11 |
| | | btn_loginoff.spacingBetweenImageAndTitle = 11 |
| | | |
| | | btn_address.imagePosition = .top |
| | | btn_coinRecord.imagePosition = .top |
| | | btn_exchangeRecord.imagePosition = .top |
| | | btn_share.imagePosition = .top |
| | | btn_etudyRecord.imagePosition = .top |
| | | btn_loginoff.imagePosition = .top |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | @IBAction func loginoffAction(_ sender: UIButton) { |
| | | let vc = UserLoginOffVC() |
| | | vc.title = "注销账号" |
| | | push(vc: vc) |
| | | } |
| | | |
| | | |
| | | @IBAction func becomeVIPAction(_ sender: Any) { |
| | | let vc = VIPCenterVC() |
| | | vc.title = "会员中心" |
| | |
| | | <device id="ipad10_9rounded" orientation="landscape" layout="fullscreen" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <outlet property="btn_coinRecord" destination="mty-Gt-zOb" id="oj9-Zv-p4Z"/> |
| | | <outlet property="btn_etudyRecord" destination="0pk-gO-3Qh" id="SeS-bo-pn4"/> |
| | | <outlet property="btn_exchangeRecord" destination="uH5-eT-V9Z" id="8gd-zT-JND"/> |
| | | <outlet property="btn_loginoff" destination="w9Z-R2-U3h" id="P7o-KM-Vnz"/> |
| | | <outlet property="btn_share" destination="gtG-mF-MKi" id="ejw-y9-ugq"/> |
| | | <outlet property="imge_cover" destination="qXF-FL-HEr" id="fG7-3a-cHy"/> |
| | | <outlet property="label_info" destination="LJb-Ki-p3S" id="88F-Ay-1nv"/> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="868" height="158"/> |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gcd-Sg-l2C" customClass="QMUIButton"> |
| | | <rect key="frame" x="0.0" y="0.0" width="173.5" height="158"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="144.5" height="158"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="地址管理" image="icon_address"> |
| | |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mty-Gt-zOb" customClass="QMUIButton"> |
| | | <rect key="frame" x="173.5" y="0.0" width="173.5" height="158"/> |
| | | <rect key="frame" x="144.5" y="0.0" width="145" height="158"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="积分明细" image="icon_coin"> |
| | |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uH5-eT-V9Z" customClass="QMUIButton"> |
| | | <rect key="frame" x="347" y="0.0" width="174" height="158"/> |
| | | <rect key="frame" x="289.5" y="0.0" width="144.5" height="158"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="兑换记录" image="icon_record"> |
| | |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0pk-gO-3Qh" customClass="QMUIButton"> |
| | | <rect key="frame" x="521" y="0.0" width="173.5" height="158"/> |
| | | <rect key="frame" x="434" y="0.0" width="144.5" height="158"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="学习记录" image="icon_feedback"> |
| | |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gtG-mF-MKi" customClass="QMUIButton"> |
| | | <rect key="frame" x="694.5" y="0.0" width="173.5" height="158"/> |
| | | <rect key="frame" x="578.5" y="0.0" width="145" height="158"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="分享好友" image="icon_share"> |
| | |
| | | </state> |
| | | <connections> |
| | | <action selector="shareAction:" destination="-1" eventType="touchUpInside" id="mmm-mt-qBh"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="w9Z-R2-U3h" customClass="QMUIButton"> |
| | | <rect key="frame" x="723.5" y="0.0" width="144.5" height="158"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="注销账号" image="icon_logoff"> |
| | | <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.75" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <connections> |
| | | <action selector="loginoffAction:" destination="-1" eventType="touchUpInside" id="OTO-aO-oAB"/> |
| | | </connections> |
| | | </button> |
| | | </subviews> |
| | |
| | | <image name="icon_address" width="39" height="36"/> |
| | | <image name="icon_coin" width="36" height="39"/> |
| | | <image name="icon_feedback" width="34" height="39"/> |
| | | <image name="icon_logoff" width="39" height="34"/> |
| | | <image name="icon_record" width="34" height="35"/> |
| | | <image name="icon_share" width="30" height="39"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | |
| | | |
| | | var studyGamesRecordModel:StudyGamesRecordModel!{ |
| | | didSet{ |
| | | label_1.text = studyGamesRecordModel.createTime |
| | | label_1.text = studyGamesRecordModel.time |
| | | label_2.text = studyGamesRecordModel.gameName |
| | | let date = Date.JQ_secondToDate(interval: studyGamesRecordModel.useTime) |
| | | var emuple = [String]() |
New file |
| | |
| | | // |
| | | // UserLoginOffVC.swift |
| | | // DolphinEnglishLearnStudent |
| | | // |
| | | // Created by 无故事王国 on 2024/7/19. |
| | | // |
| | | |
| | | import UIKit |
| | | import WebKit |
| | | |
| | | class UserLoginOffVC: BaseVC { |
| | | |
| | | private var btn_loginOff:UIButton! |
| | | private var webView:WKWebView! |
| | | private var timer:Timer? |
| | | private var times = 10 |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | yy_popBlock = {[weak self] () in |
| | | guard let weakSelf = self else { return } |
| | | var toVC:UIViewController? |
| | | for subVC in weakSelf.navigationController?.viewControllers ?? []{ |
| | | if subVC.isKind(of: HomeListenVC.self){ |
| | | toVC = subVC;break |
| | | } |
| | | } |
| | | |
| | | if toVC != nil{ |
| | | weakSelf.navigationController?.popToViewController(toVC!, animated: true) |
| | | }else{ |
| | | weakSelf.navigationController?.popViewController(animated: true) |
| | | } |
| | | } |
| | | |
| | | Services.getAgreement(type: .logout).subscribe(onNext: {data in |
| | | if let stringHTML = data.data{ |
| | | self.webView.loadHTMLString(stringHTML.jq_wrapHtml(edge: UIEdgeInsets(top: 0, left: 10, bottom: 3, right: 0)), baseURL: nil) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | timer = Timer(timeInterval: 1, repeats: true) {[weak self] timer in |
| | | guard let weakSelf = self else { return } |
| | | weakSelf.times -= 1 |
| | | weakSelf.btn_loginOff.setTitle("注销账号(\(weakSelf.times)s)", for: .normal) |
| | | |
| | | if weakSelf.times <= 0{ |
| | | print("----进入") |
| | | weakSelf.btn_loginOff.isEnabled = true |
| | | weakSelf.btn_loginOff.setTitle("注销账号", for: .normal) |
| | | weakSelf.btn_loginOff.backgroundColor = UIColor(hexStr: "#41A2EB") |
| | | weakSelf.timer?.invalidate() |
| | | } |
| | | } |
| | | timer?.fire() |
| | | RunLoop.current.add(timer!, forMode: .common) |
| | | } |
| | | |
| | | override func viewDidDisappear(_ animated: Bool) { |
| | | super.viewDidDisappear(animated) |
| | | self.timer?.invalidate() |
| | | self.timer = nil |
| | | } |
| | | |
| | | override func setUI() { |
| | | |
| | | view.backgroundColor = .white |
| | | webView = WKWebView(frame: .zero) |
| | | view.addSubview(webView) |
| | | webView.snp.makeConstraints { make in |
| | | make.left.right.top.equalToSuperview() |
| | | make.bottom.equalToSuperview().offset(-150) |
| | | } |
| | | |
| | | |
| | | btn_loginOff = UIButton(type: .custom) |
| | | btn_loginOff.setTitle("注销账号", for: .normal) |
| | | btn_loginOff.setTitleColor(.white, for: .normal) |
| | | btn_loginOff.isEnabled = false |
| | | btn_loginOff.backgroundColor = UIColor(hexStr: "#41A2EB") |
| | | btn_loginOff.titleLabel?.font = .systemFont(ofSize: 16, weight: .medium) |
| | | btn_loginOff.addTarget(self, action: #selector(loginOffAction), for: .touchUpInside) |
| | | btn_loginOff.jq_cornerRadius = 8 |
| | | view.addSubview(btn_loginOff) |
| | | btn_loginOff.snp.makeConstraints { make in |
| | | make.width.equalTo(316) |
| | | make.height.equalTo(49) |
| | | make.bottom.equalTo(-91) |
| | | make.centerX.equalToSuperview() |
| | | } |
| | | } |
| | | |
| | | @objc func loginOffAction(){ |
| | | CommonAlertView.show(content: "确认注销当前登录账户吗?", completeTitle: "确认") {[weak self] () in |
| | | guard let weakSelf = self else { return } |
| | | Services.loginOff().subscribe(onNext: {data in |
| | | sceneDelegate?.needLogin() |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } cancelClouse: { |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | override func setUI() { |
| | | |
| | | view.backgroundColor = .white |
| | | webView = WKWebView(frame: .zero) |
| | | webView.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 120, right: 0) |
| | | view.addSubview(webView) |
| | | webView.snp.makeConstraints { make in |
| | | make.edges.equalToSuperview() |
| | | make.left.right.top.equalToSuperview() |
| | | make.bottom.equalToSuperview().offset(-150) |
| | | } |
| | | |
| | | |
| | |
| | | guard error == nil else {alert(msg: "图片获取失败");return} |
| | | |
| | | if scene == WXSceneSession{ |
| | | WeChatTools.shareUrl("https://dollearn.com/", title:"海豚智能教育平台" , desc: m.title, thumb: iamge!, scene: scene) |
| | | WeChatTools.shareUrl("https://dollearn.com/", title:"哆能智学教育平台" , desc: m.title, thumb: iamge!, scene: scene) |
| | | }else{ |
| | | WeChatTools.shareUrl("https://dollearn.com/", title:m.title, desc: "", thumb: iamge!, scene: scene) |
| | | } |
| | |
| | | <device id="ipad10_9rounded" orientation="landscape" layout="fullscreen" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | |
| | | <constraint firstAttribute="width" constant="156" id="4R7-c1-eC7"/> |
| | | </constraints> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="海豚智能教育平台" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hww-QI-7F9"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="哆能智学教育平台" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hww-QI-7F9"> |
| | | <rect key="frame" x="195" y="39" width="147" height="21.5"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="calibratedRGB"/> |
| | |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="bg_login" width="296" height="129"/> |
| | | <image name="bg_login" width="296" height="119.5"/> |
| | | <image name="btn_close_circle" width="26" height="26"/> |
| | | <image name="share_wx" width="50" height="50"/> |
| | | <image name="share_wxFri" width="51" height="51"/> |
| | |
| | | } |
| | | |
| | | func startTimer(){ |
| | | print("答题:开始计时-开始") |
| | | guard let timeval = globalTimeval else {return} |
| | | |
| | | timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) {[weak self] timer in |
| | |
| | | if let v = UserDefaults.standard.object(forKey: "scheduledTimer") as? TimeInterval{ |
| | | if Date().timeIntervalSince1970 - v > Double(timeval) * 60.0{ |
| | | Services.giveIntegral().subscribe(onNext: { _ in |
| | | print("答题:开始计时-调用") |
| | | UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer") |
| | | UserDefaults.standard.synchronize() |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | } |
| | | }else{ |
| | | print("答题:开始计时-调用(计时)") |
| | | UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer") |
| | | UserDefaults.standard.synchronize() |
| | | } |
| | |
| | | } |
| | | |
| | | func suspendTimer(){ |
| | | print("答题:开始计时-调用(停止)") |
| | | timer?.fireDate = .distantFuture |
| | | timer = nil |
| | | UserDefaults.standard.set(nil, forKey: "scheduledTimer") |
| | |
| | | params.interface(url: "/study/base/user/vipInfoStudy") |
| | | return NetworkRequest.request(params: params, method: .post, progress: false) |
| | | } |
| | | |
| | | class func loginOff()->Observable<BaseResponse<SimpleModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | params.interface(url: "/study/base/user/deleteUserStudy") |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | } |
| | | } |
| | | |
| | | extension Services{ |