| | |
| | | 1338A6DE2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1338A6DC2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib */; }; |
| | | 13391E022C73334000B9513F /* PavilionDetailVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13391E012C73334000B9513F /* PavilionDetailVC.xib */; }; |
| | | 13391E032C73334000B9513F /* PavilionDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13391E002C73334000B9513F /* PavilionDetailVC.swift */; }; |
| | | 1341970B2CD9CDE800D324B7 /* LaunchImageHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1341970A2CD9CDE800D324B7 /* LaunchImageHelper.swift */; }; |
| | | 134783CF2C6C86EC0096C736 /* PlaySettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134783CE2C6C86EC0096C736 /* PlaySettingView.swift */; }; |
| | | 134783D12C6C86F40096C736 /* PlaySettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134783D02C6C86F40096C736 /* PlaySettingView.xib */; }; |
| | | 134803D32C76E29E00F4FDDA /* MyCommentListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134803D22C76E29E00F4FDDA /* MyCommentListVC.swift */; }; |
| | |
| | | 1338A6DC2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SpendingDetailInfoVC.xib; sourceTree = "<group>"; }; |
| | | 13391E002C73334000B9513F /* PavilionDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PavilionDetailVC.swift; sourceTree = "<group>"; }; |
| | | 13391E012C73334000B9513F /* PavilionDetailVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionDetailVC.xib; sourceTree = "<group>"; }; |
| | | 1341970A2CD9CDE800D324B7 /* LaunchImageHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchImageHelper.swift; sourceTree = "<group>"; }; |
| | | 134783CE2C6C86EC0096C736 /* PlaySettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaySettingView.swift; sourceTree = "<group>"; }; |
| | | 134783D02C6C86F40096C736 /* PlaySettingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PlaySettingView.xib; sourceTree = "<group>"; }; |
| | | 134803D22C76E29E00F4FDDA /* MyCommentListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyCommentListVC.swift; sourceTree = "<group>"; }; |
| | |
| | | 13985DB72C69B80D0046B6DC /* Themes.swift */, |
| | | 135B1D1F2C8863D10089A9BE /* Types.swift */, |
| | | 132C4B762CC0E5CA00EA56AF /* XQMuse-Bridging-Header.h */, |
| | | 1341970A2CD9CDE800D324B7 /* LaunchImageHelper.swift */, |
| | | ); |
| | | path = Config; |
| | | sourceTree = "<group>"; |
| | |
| | | 130C070B2C76D8F200ADB098 /* SpendingDetailContentVC.swift in Sources */, |
| | | 131CE0F92C91298E00D1234A /* TreeTeskListView.swift in Sources */, |
| | | 13EC08912C74990B00E00128 /* EmptyCCell.swift in Sources */, |
| | | 1341970B2CD9CDE800D324B7 /* LaunchImageHelper.swift in Sources */, |
| | | 13F24E422C758DF100D2BA90 /* LogoutAccountVC.swift in Sources */, |
| | | 135C2A6E2C7F033300CC2A67 /* CLSlider.swift in Sources */, |
| | | 13649F9F2C770C9C00F4E0EE /* ContactCustomerDetailVC.swift in Sources */, |
| | |
| | | "$(inherited)", |
| | | "@executable_path/Frameworks", |
| | | ); |
| | | MARKETING_VERSION = 1.0; |
| | | MARKETING_VERSION = 1.0.0; |
| | | OTHER_LDFLAGS = ( |
| | | "$(inherited)", |
| | | "-ObjC", |
| | |
| | | "$(inherited)", |
| | | "@executable_path/Frameworks", |
| | | ); |
| | | MARKETING_VERSION = 1.0; |
| | | MARKETING_VERSION = 1.0.0; |
| | | OTHER_LDFLAGS = ( |
| | | "$(inherited)", |
| | | "-ObjC", |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "bg_ccc@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "bg_ccc@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "组 20@2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "组 20@3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
New file |
| | |
| | | { |
| | | "images" : [ |
| | | { |
| | | "idiom" : "universal", |
| | | "scale" : "1x" |
| | | }, |
| | | { |
| | | "filename" : "bt_private @2x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "2x" |
| | | }, |
| | | { |
| | | "filename" : "bt_private @3x.png", |
| | | "idiom" : "universal", |
| | | "scale" : "3x" |
| | | } |
| | | ], |
| | | "info" : { |
| | | "author" : "xcode", |
| | | "version" : 1 |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | if viewController is TreeTeskVC{ |
| | | if viewController is TreeTeskVC || viewController is HomeVC{ |
| | | if #available(iOS 15.0, *) { |
| | | navigationBar.standardAppearance.backgroundColor = .white |
| | | navigationBar.scrollEdgeAppearance?.backgroundColor = .white |
| | |
| | | |
| | | override func layoutSubviews() { |
| | | super.layoutSubviews() |
| | | for (index,item) in subviews.enumerated() { |
| | | for (_,item) in subviews.enumerated() { |
| | | if item.classForCoder == NSClassFromString("UITabBarButton"){ |
| | | if (item.value(forKey: "_label") as? UILabel)?.text?.contains("树苗") ?? false{ |
| | | item.isHidden = true |
| | |
| | | |
| | | let locationTool = JQ_LocationTool.instance() |
| | | let ShareAppleKey = "" |
| | | let DocumentPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,FileManager.SearchPathDomainMask.userDomainMask,true).last |
| | | |
| | | var sceneDelegate:SceneDelegate? = { |
| | | var uiScreen:UIScene? |
| | |
| | | switch self { |
| | | case .man:return "男" |
| | | case .woman:return "女" |
| | | case .encrypt:return "保密" |
| | | case .encrypt:return "" |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | // |
| | | // LaunchImageHelper.swift |
| | | // XQMuse |
| | | // |
| | | // Created by 无故事王国 on 2024/11/5. |
| | | // |
| | | |
| | | import Foundation |
| | | |
| | | class LaunchImageHelper { |
| | | static func snapshotStoryboard(sbName: String, isPortrait: Bool) -> UIImage? { |
| | | if sbName.isEmpty { |
| | | return nil |
| | | } |
| | | |
| | | let storyboard = UIStoryboard(name: sbName, bundle: nil) |
| | | guard let vc = storyboard.instantiateInitialViewController() else { |
| | | return nil |
| | | } |
| | | |
| | | vc.view.frame = UIScreen.main.bounds |
| | | if isPortrait { |
| | | if vc.view.frame.size.width > vc.view.frame.size.height { |
| | | vc.view.frame = CGRect(x: 0, y: 0, width: vc.view.frame.size.height, height: vc.view.frame.size.width) |
| | | } |
| | | } else { |
| | | if vc.view.frame.size.width < vc.view.frame.size.height { |
| | | vc.view.frame = CGRect(x: 0, y: 0, width: vc.view.frame.size.height, height: vc.view.frame.size.width) |
| | | } |
| | | } |
| | | |
| | | vc.view.setNeedsLayout() |
| | | vc.view.layoutIfNeeded() |
| | | |
| | | UIGraphicsBeginImageContextWithOptions(vc.view.frame.size, false, UIScreen.main.scale) |
| | | vc.view.layer.render(in: UIGraphicsGetCurrentContext()!) |
| | | let image = UIGraphicsGetImageFromCurrentImageContext() |
| | | UIGraphicsEndImageContext() |
| | | return image |
| | | } |
| | | |
| | | static func snapshotStoryboardForPortrait(sbName: String) -> UIImage? { |
| | | return snapshotStoryboard(sbName: sbName, isPortrait: true) |
| | | } |
| | | |
| | | static func snapshotStoryboardForLandscape(sbName: String) -> UIImage? { |
| | | return snapshotStoryboard(sbName: sbName, isPortrait: false) |
| | | } |
| | | |
| | | static func changeAllLaunchImageToPortrait(_ image: UIImage?) { |
| | | guard let image = image else { |
| | | return |
| | | } |
| | | // 全部替换为竖屏启动图 |
| | | let resizedImage = resizeImage(image, toPortraitScreenSize: true) |
| | | BBADynamicLaunchImage.replaceLaunchImage(resizedImage) |
| | | } |
| | | |
| | | static func changeAllLaunchImageToLandscape(_ image: UIImage?) { |
| | | guard let image = image else { |
| | | return |
| | | } |
| | | // 全部替换为横屏启动图 |
| | | let resizedImage = resizeImage(image, toPortraitScreenSize: false) |
| | | BBADynamicLaunchImage.replaceLaunchImage(resizedImage) |
| | | } |
| | | |
| | | static func changePortraitLaunchImage(_ p: UIImage) { |
| | | // Implementation for this function is missing |
| | | } |
| | | |
| | | static func resizeImage(_ image: UIImage, toPortraitScreenSize: Bool) -> UIImage { |
| | | // Implementation for this function is missing |
| | | return image |
| | | } |
| | | } |
| | | |
| | | |
| | | private class BBADynamicLaunchImage { |
| | | static func launchImageCacheDirectory() -> String? { |
| | | let bundleID = Bundle.main.infoDictionary?["CFBundleIdentifier"] as? String |
| | | let fm = FileManager.default |
| | | |
| | | // iOS13之前 |
| | | if var cachesDirectory = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first { |
| | | cachesDirectory.append(contentsOf: "Snapshots") |
| | | cachesDirectory.append(contentsOf: bundleID!) |
| | | if fm.fileExists(atPath: cachesDirectory) { |
| | | return cachesDirectory |
| | | } |
| | | } |
| | | |
| | | // iOS13 |
| | | if let libraryDirectory = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first { |
| | | let snapshotsPath = String(format: "%@/SplashBoard/Snapshots/%@ - {DEFAULT GROUP}", libraryDirectory, bundleID ?? "") |
| | | if fm.fileExists(atPath: snapshotsPath) { |
| | | return snapshotsPath |
| | | } |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | static func isSnapShotName(_ name: String) -> Bool { |
| | | // 新系统后缀 |
| | | let snapshotSuffixs = ".ktx" |
| | | if name.hasSuffix(snapshotSuffixs) { |
| | | return true |
| | | } |
| | | |
| | | // 老系统后缀 |
| | | let snapshotSuffixs2 = ".png" |
| | | if name.hasSuffix(snapshotSuffixs2) { |
| | | return true |
| | | } |
| | | |
| | | return false |
| | | } |
| | | |
| | | @discardableResult |
| | | static func replaceLaunchImage(_ replacementImage: UIImage?) -> Bool { |
| | | guard let image = replacementImage else {return false} |
| | | return self.replaceLaunchImage(replacementImage: image, compressionQuality: 0.8, customValidation: nil) |
| | | } |
| | | |
| | | @discardableResult |
| | | static func replaceLaunchImage(_ replacementImage: UIImage?, compressionQuality: CGFloat) -> Bool { |
| | | guard let image = replacementImage else {return false} |
| | | return self.replaceLaunchImage(replacementImage: image, compressionQuality: compressionQuality, customValidation: nil) |
| | | } |
| | | |
| | | static func replaceLaunchImage(replacementImage: UIImage, compressionQuality: CGFloat, customValidation: ((UIImage,UIImage) -> Bool)?) -> Bool { |
| | | |
| | | let data = replacementImage.jpegData(compressionQuality: compressionQuality) |
| | | if data == nil { |
| | | return false |
| | | } |
| | | |
| | | // if !checkImageMatchScreenSize(image: replacementImage) { |
| | | // return false |
| | | // } |
| | | |
| | | guard let cacheDir = launchImageCacheDirectory() else { |
| | | return false |
| | | } |
| | | |
| | | let cachesParentDir = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0] |
| | | let tmpDir = (cachesParentDir as NSString).appendingPathComponent("_tmpLaunchImageCaches") |
| | | |
| | | let fm = FileManager.default |
| | | if fm.fileExists(atPath: tmpDir) { |
| | | do { |
| | | try fm.removeItem(atPath: tmpDir) |
| | | } catch { |
| | | return false |
| | | } |
| | | } |
| | | |
| | | do { |
| | | try fm.moveItem(atPath: cacheDir, toPath: tmpDir) |
| | | } catch { |
| | | return false |
| | | } |
| | | |
| | | var cacheImageNames = [String]() |
| | | if let contents = try? fm.contentsOfDirectory(atPath: tmpDir) { |
| | | for name in contents { |
| | | if isSnapShotName(name) { |
| | | cacheImageNames.append(name) |
| | | } |
| | | } |
| | | } |
| | | |
| | | for name in cacheImageNames { |
| | | let filePath = (tmpDir as NSString).appendingPathComponent(name) |
| | | var result = true |
| | | |
| | | if customValidation != nil{ |
| | | if let cachedImageData = try? Data(contentsOf: URL(string: filePath)!),let cachedImage = imageFromData(data: cachedImageData as NSData){ |
| | | result = customValidation!(cachedImage,replacementImage) |
| | | } |
| | | } |
| | | |
| | | if result { |
| | | do { |
| | | try data?.write(to: URL(fileURLWithPath: filePath), options: .atomic) |
| | | } catch { |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | try? fm.moveItem(atPath: tmpDir, toPath: cacheDir) |
| | | if fm.fileExists(atPath: tmpDir) { |
| | | do { |
| | | try fm.removeItem(atPath: tmpDir) |
| | | } catch { |
| | | return false |
| | | } |
| | | } |
| | | |
| | | return true |
| | | } |
| | | |
| | | |
| | | |
| | | static func imageFromData(data: NSData) -> UIImage? { |
| | | guard let source = CGImageSourceCreateWithData(data, nil) else { |
| | | return nil |
| | | } |
| | | |
| | | if let imageRef = CGImageSourceCreateImageAtIndex(source, 0, nil) { |
| | | let originImage = UIImage(cgImage: imageRef) |
| | | return originImage |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func getImageSize(imageData: NSData) -> CGSize { |
| | | guard let source = CGImageSourceCreateWithData(imageData, nil) else { |
| | | return CGSize.zero |
| | | } |
| | | |
| | | if let imageRef = CGImageSourceCreateImageAtIndex(source, 0, nil) { |
| | | let width = CGFloat(imageRef.width) |
| | | let height = CGFloat(imageRef.height) |
| | | return CGSize(width: width, height: height) |
| | | } |
| | | |
| | | return CGSize.zero |
| | | } |
| | | |
| | | |
| | | /// 检查图片大小 |
| | | static func checkImageMatchScreenSize(image: UIImage) -> Bool { |
| | | let screenSize = CGSize(width: UIScreen.main.bounds.size.width * UIScreen.main.scale, |
| | | height: UIScreen.main.bounds.size.height * UIScreen.main.scale) |
| | | let imageSize = CGSize(width: image.size.width * image.scale, |
| | | height: image.size.height * image.scale) |
| | | |
| | | if imageSize.equalTo(screenSize) { |
| | | return true |
| | | } |
| | | |
| | | if imageSize.equalTo(CGSize(width: screenSize.height, height: screenSize.width)) { |
| | | return true |
| | | } |
| | | |
| | | return false |
| | | } |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="114" height="109"/> |
| | | <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_1" translatesAutoresizingMaskIntoConstraints="NO" id="D7q-iI-B0n"> |
| | | <rect key="frame" x="39.666666666666671" y="29" width="34.666666666666671" height="31.666666666666671"/> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_1" translatesAutoresizingMaskIntoConstraints="NO" id="D7q-iI-B0n"> |
| | | <rect key="frame" x="39.666666666666664" y="29" width="34.999999999999993" height="31.666666666666671"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" relation="lessThanOrEqual" constant="35" id="A6U-Ns-BoS"/> |
| | | <constraint firstAttribute="height" relation="lessThanOrEqual" constant="31.5" id="xu0-nX-9PR"/> |
| | | </constraints> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eyG-jG-ONh"> |
| | | <rect key="frame" x="51.666666666666664" y="77" width="10.666666666666664" height="14.333333333333329"/> |
| | |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true) |
| | | let vc = PaymentOrderVC(courseItemModel: m,type: .course,giftToOther: true) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | if needPayment{ |
| | | let attribute = AttributedStringbuilder.build().add(string: " 疗愈币", withFont: .systemFont(ofSize: 12,weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "\(m.generalPrice.jq_formatFloat)", withFont: .systemFont(ofSize: 21.71, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: " 立即购买 ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString |
| | | let attribute = AttributedStringbuilder.build().add(string: " 疗愈币", withFont: .systemFont(ofSize: 12,weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "\(m.iosPrice.jq_formatFloat)", withFont: .systemFont(ofSize: 21.71, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: " 立即购买 ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString |
| | | weakSelf.studyBtn.setAttributedTitle(attribute, for: .normal) |
| | | }else{ |
| | | let attribute = AttributedStringbuilder.build().add(string: " 立即学习 ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString |
| | |
| | | }else{ |
| | | weakSelf.style = .style2 |
| | | DispatchQueue.main.asyncAfter(delay: 0.5) { |
| | | weakSelf.headerView.setVideo(url: m.detailUrl, coverImageUrl: m.coverUrl, delegate: self!) |
| | | weakSelf.headerView.setVideo(url: m.detailUrl, coverImageUrl: m.coverUrl.jq_urlEncoded(), delegate: self!) |
| | | } |
| | | weakSelf.pageMenu.setItems(["简介"], selectedItemIndex: 0) |
| | | } |
| | |
| | | push(vc: vc);return |
| | | } |
| | | |
| | | let vc = PaymentOrderVC(id: m.id, type: .course) |
| | | let vc = PaymentOrderVC(courseItemModel: m, type: .course) |
| | | push(vc: vc) |
| | | } |
| | | } |
| | | |
| | | @objc func sendGift(_ btn:QMUIButton){ |
| | | if let price = courseDetailModel?.generalPrice{ |
| | | if let price = courseDetailModel?.iosPrice{ |
| | | CourseSendGiftView.show(price:price) { |
| | | let vc = PaymentOrderVC(id: self.courseDetailModel!.id,type: .course,giftToOther: true) |
| | | let vc = PaymentOrderVC(courseItemModel: self.courseDetailModel!,type: .course,giftToOther: true) |
| | | self.push(vc: vc) |
| | | } |
| | | } |
| | |
| | | |
| | | Services.getCourseCategory().subscribe(onNext: {data in |
| | | for v in data.data ?? []{ |
| | | self.subTitleItems.append(TitleItem(id:v.id,title: v.name,coverImage: v.imageUrl)) |
| | | self.subTitleItems.append(TitleItem(id:v.id,title: v.name,coverImage: v.imageUrl.jq_urlEncoded())) |
| | | } |
| | | self.collectionView.reloadData() |
| | | }).disposed(by: disposeBag) |
| | | |
| | | Services.getCourseBannerList().subscribe(onNext: {data in |
| | | for (index,v) in (data.data ?? []).enumerated(){ |
| | | self.bannerModels.append(CommonBannerModel(index: index, id: v.id, name: v.name, resource:v.imageUrl, mediaType: .imageUrl,courseId: v.courseId)) |
| | | self.bannerModels.append(CommonBannerModel(index: index, id: v.id, name: v.name, resource:v.imageUrl.jq_urlEncoded(), mediaType: .imageUrl,courseId: v.courseId)) |
| | | } |
| | | self.collectionView.reloadData() |
| | | }).disposed(by: disposeBag) |
| | |
| | | self.cell0!.setContent(title: "导师简介", content: m.tutorIntroduction) |
| | | self.cell1!.setItems(m.list) |
| | | self.tableView?.reloadData() |
| | | self.headerView.updateVideoUrl(m.videoUrl,autoPlay: false,placeHoderImageUrl: m.coverUrl) |
| | | self.headerView.updateVideoUrl(m.videoUrl,autoPlay: false,placeHoderImageUrl: m.coverUrl.jq_urlEncoded()) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | label_title.text = model.courseTitle |
| | | label_teacher.text = "导师 \(model.tutor)" |
| | | label_studyNum.text = "\(model.count)人已加入学习" |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded())) |
| | | } |
| | | |
| | | func setVideo(url:String,coverImageUrl:String,delegate:CLPlayerDelegate){ |
| | |
| | | func setMeditationModel(_ model:MeditationModel,showType:DisplayType){ |
| | | self.showType = showType |
| | | img_offine.isHidden = true |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | |
| | | let imageUrls = model.coverUrl.components(separatedBy: ",") |
| | | let imageUrls = model.coverUrl.jq_urlEncoded().components(separatedBy: ",") |
| | | if showType == .horizontal{ |
| | | img_cover.sd_setImage(with: URL(string: imageUrls.first)) |
| | | }else{ |
| | |
| | | case .payment: |
| | | image_free.isHidden = true |
| | | view_price.isHidden = false |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.iosPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | default:break |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | func setCourseModel(_ model:CourseModel){ |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded())) |
| | | label_title.text = model.courseTitle |
| | | label_subTitle.text = model.briefIntroduction |
| | | label_num.text = "\(model.count)" |
| | |
| | | case .payment: |
| | | image_free.isHidden = true |
| | | view_price.isHidden = false |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.iosPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | default:break |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | func setCourseModel(_ model:CourseModel){ |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").first)) |
| | | label_title.text = model.courseTitle |
| | | label_subTitle.text = model.briefIntroduction |
| | | label_num.text = "\(model.count)" |
| | | |
| | | if model.courseType == .online{ |
| | | img_offline.isHidden = true |
| | | setChargePrice(model.chargeType, price: model.generalPrice) |
| | | setChargePrice(model.chargeType, price: model.iosPrice) |
| | | }else{ |
| | | img_offline.isHidden = false |
| | | img_vip.isHidden = true |
| | |
| | | } |
| | | |
| | | func setMeditationModel(_ model:MeditationModel){ |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").first)) |
| | | label_title.text = model.meditationTitle |
| | | label_subTitle.text = model.coverDescription |
| | | label_num.text = "\(model.realLearnedNum)" |
| | | |
| | | img_offline.isHidden = true |
| | | setChargePrice(model.chargeType, price: model.generalPrice) |
| | | setChargePrice(model.chargeType, price: model.iosPrice) |
| | | } |
| | | |
| | | private func setChargePrice(_ type:ChargeType,price:Double){ |
| | |
| | | } |
| | | |
| | | func setMeditationModel(_ model:MeditationModel){ |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl.components(separatedBy: ",").last)) |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").last)) |
| | | label_title.text = model.meditationTitle |
| | | label_subTitle.text = model.coverDescription |
| | | label_num.text = "\(model.realLearnedNum)" |
| | | img_offline.isHidden = true |
| | | |
| | | setChargePrice(model.chargeType, price: model.generalPrice) |
| | | setChargePrice(model.chargeType, price: model.iosPrice) |
| | | } |
| | | |
| | | func setCourseModel(_ model:CourseModel){ |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl.components(separatedBy: ",").last)) |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").last)) |
| | | label_title.text = model.courseTitle |
| | | label_subTitle.text = model.briefIntroduction |
| | | label_num.text = "\(model.count)" |
| | |
| | | |
| | | if model.courseType == .online{ |
| | | img_offline.isHidden = true |
| | | setChargePrice(model.chargeType, price: model.generalPrice) |
| | | setChargePrice(model.chargeType, price: model.iosPrice) |
| | | }else{ |
| | | img_offline.isHidden = false |
| | | img_vip.isHidden = true |
| | |
| | | } |
| | | |
| | | func setModel(_ model:BGMModel){ |
| | | imgView.sd_setImage(with: URL(string: model.imageUrl)) |
| | | imgView.sd_setImage(with: URL(string: model.imageUrl.jq_urlEncoded())) |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | func setMeditationModel(_ model:MeditationModel,showType:DisplayType){ |
| | | self.showType = showType |
| | | |
| | | if model.id == 0{ |
| | | cover_bgImage.image = UIImage(named: "bt_private");return |
| | | } |
| | | |
| | | label_title.text = model.meditationTitle |
| | | label_subTitle.text = model.coverDescription |
| | | |
| | | let imgUrls = model.coverUrl.components(separatedBy: ",") |
| | | let imgUrls = model.coverUrl.jq_urlEncoded().components(separatedBy: ",") |
| | | if showType == .horizontal{ |
| | | cover_bgImage.sd_setImage(with: URL(string: imgUrls.first)) |
| | | }else{ |
| | |
| | | |
| | | |
| | | func setMeditationModel(_ model:MeditationModel,showType:DisplayType){ |
| | | |
| | | self.showType = showType |
| | | |
| | | if model.id == 0{ |
| | | cover_bgImage.image = UIImage(named: "bt_private");return |
| | | } |
| | | |
| | | label_title.text = model.meditationTitle |
| | | label_subTitle.text = model.coverDescription |
| | | |
| | | let imgUrls = model.coverUrl.components(separatedBy: ",") |
| | | let imgUrls = model.coverUrl.jq_urlEncoded().components(separatedBy: ",") |
| | | if showType == .horizontal{ |
| | | cover_bgImage.sd_setImage(with: URL(string: imgUrls.first)) |
| | | }else{ |
| | |
| | | case .payment: |
| | | image_free.isHidden = true |
| | | view_price.isHidden = false |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.iosPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | default:break |
| | | } |
| | | } |
| | |
| | | import RxSwift |
| | | import MediaPlayer |
| | | import MJRefresh |
| | | import SDWebImage |
| | | |
| | | let SetBGMSuccess_Noti = Notification.Name.init("SetBGMSuccess_Noti") |
| | | |
| | |
| | | }) |
| | | |
| | | getData() |
| | | |
| | | // DispatchQueue.main.asyncAfter(delay: 3.0) { |
| | | // Popup_1_View.show(state: .success, title: "修改成功", subtitle: "您的密码已修改成功,快去登录账户吧") { |
| | | // self.navigationController?.popToRootViewController(animated: true) |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | Services.getCategoryListByType(type: 1).subscribe(onNext: { data in |
| | | var items = [HomeTopMenuItem]() |
| | | for v in data.data ?? []{ |
| | | let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.firstIconUrl, imageFrom: .url) |
| | | let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.firstIconUrl.jq_urlEncoded(), imageFrom: .url) |
| | | items.append(model) |
| | | } |
| | | |
| | |
| | | Services.getCategoryListByType(type: 2).subscribe(onNext: { data in |
| | | var items = [HomeTopMenuItem]() |
| | | for v in data.data ?? []{ |
| | | let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.secondIconUrl, imageFrom: .url) |
| | | let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.secondIconUrl.jq_urlEncoded(), imageFrom: .url) |
| | | items.append(model) |
| | | } |
| | | self.viewModel.homeBottomMenuItems = items |
| | |
| | | |
| | | Services.getPersonalityPlan().subscribe(onNext: { data in |
| | | if let m = data.data{ |
| | | if m.count > 0{ |
| | | self.viewModel.privateTodyModels = m |
| | | }else{ |
| | | let m = MeditationModel() |
| | | m.id = 0 |
| | | self.viewModel.privateTodyModels = [m] |
| | | } |
| | | self.tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .none) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | |
| | | } |
| | | self.tableView.reloadData() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | Services.getLunchPage().subscribe(onNext: {data in |
| | | |
| | | if let url = data.data{ |
| | | let path = DocumentPath! + "/launchScreen/" |
| | | let image = SDImageCache(namespace: url.jq_md5String(), diskCacheDirectory: path) |
| | | let loader = SDImageLoadersManager.shared |
| | | let manager = SDWebImageManager(cache: image, loader: loader) |
| | | |
| | | //不存在缓存 |
| | | if image.imageFromDiskCache(forKey: url) == nil{ |
| | | manager.loadImage(with: URL(string: url), progress: nil) { image, _, _, _, complete, _ in |
| | | LaunchImageHelper.changeAllLaunchImageToPortrait(image) |
| | | } |
| | | } |
| | | else{ |
| | | //取缓存 |
| | | if let data = image.diskImageData(forKey: url){ |
| | | let image = UIImage(data: data) |
| | | LaunchImageHelper.changeAllLaunchImageToPortrait(image) |
| | | } |
| | | } |
| | | } |
| | | |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | |
| | | if let m = viewModel.todyModel{ |
| | | let vc = HomeItemDetailVC(id: m.id) |
| | | push(vc: vc) |
| | | }else{ |
| | | alert(msg: "平台暂未设置今日疗愈") |
| | | } |
| | | } |
| | | |
| | |
| | | if indexPath.section == 0{ |
| | | //每日疗愈 |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_1_TCell") as! Home_Style_1_TCell |
| | | if viewModel.todyModel?.id != 0{ |
| | | cell.model = viewModel.todyModel |
| | | cell.view_data.isHidden = false |
| | | }else{ |
| | | cell.img_cover.image = UIImage(named: "bg_today") |
| | | cell.view_data.isHidden = true |
| | | } |
| | | return cell |
| | | }else if indexPath.section == 1{ |
| | | //私人定制 |
| | |
| | | @IBOutlet weak var label_title: UILabel! |
| | | @IBOutlet weak var label_joinNum: UILabel! |
| | | @IBOutlet weak var img_play: UIImageView! |
| | | @IBOutlet weak var view_data: UIView! |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | | <objects> |
| | |
| | | <rect key="frame" x="0.0" y="247.66666666666663" width="398" height="27"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="缓解压力|00:00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bu5-9N-LaQ"> |
| | | <rect key="frame" x="19.666666666666664" y="7.3333333333333428" width="81.333333333333343" height="12"/> |
| | | <rect key="frame" x="19.666666666666671" y="7.3333333333333428" width="80.999999999999986" height="12"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="10"/> |
| | | <color key="textColor" red="0.94901960784313721" green="0.92549019607843142" blue="0.97254901960784312" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0人已参加练习" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KpH-Aq-7Pf"> |
| | | <rect key="frame" x="310.66666666666669" y="7.3333333333333428" width="69.333333333333314" height="12"/> |
| | | <rect key="frame" x="312.33333333333331" y="7.3333333333333428" width="67.666666666666686" height="12"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="10"/> |
| | | <color key="textColor" red="0.94901960780000005" green="0.92549019610000005" blue="0.97254901959999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <outlet property="img_play" destination="g9v-rM-WZr" id="eqA-n5-5Qy"/> |
| | | <outlet property="label_joinNum" destination="KpH-Aq-7Pf" id="51p-uN-6M7"/> |
| | | <outlet property="label_title" destination="bu5-9N-LaQ" id="TM0-io-hMz"/> |
| | | <outlet property="view_data" destination="KW7-hr-gUW" id="xQA-2a-Hfe"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="140.45801526717557" y="104.92957746478874"/> |
| | | </tableViewCell> |
| | |
| | | |
| | | let isVip = UserViewModel.getAvatarInfo().isVip |
| | | |
| | | if m.chargeType == .free || (isVip == .yes && m.chargeType == .vipFree){ |
| | | if m.chargeType == .free || (isVip == .yes && m.chargeType == .vipFree) || (m.chargeType == .payment && m.isBuy == .yes){ |
| | | let vc = HomeItemDetailVC(id: m.id) |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | return |
| | | } |
| | | |
| | | if m.chargeType == .payment && m.paidStatus == .no{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse) |
| | | if m.chargeType == .payment && m.isBuy == .no{ |
| | | let vc = PaymentOrderVC(museItemModel: m,type: .muse) |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | return |
| | | } |
| | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | |
| | | let m = meditationModels[indexPath.row] |
| | | guard m.id != 0 else{ |
| | | alert(msg: "平台暂未设置私人定制");return |
| | | } |
| | | |
| | | let isVip = UserViewModel.getAvatarInfo().isVip |
| | | |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){ |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){ |
| | | let detailVC = HomeItemDetailVC(id: meditationModels[indexPath.row].id) |
| | | JQ_currentViewController().jq_push(vc: detailVC) |
| | | }else{ |
| | |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse) |
| | | let vc = PaymentOrderVC(museItemModel: m,type: .muse) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | |
| | | private var playAtIndex:IndexPath? |
| | | private var tempPlayer:AVPlayer? |
| | | private var isPlaying:Bool = false |
| | | private var needPopRoot = false |
| | | |
| | | override func viewDidDisappear(_ animated: Bool) { |
| | | super.viewDidDisappear(animated) |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "心泉·疗愈" |
| | | |
| | | yy_popBlock = { [weak self] in |
| | | if self?.needPopRoot ?? false{ |
| | | NotificationCenter.default.post(name: PlantGuideQuit_Noti, object: nil, userInfo: nil) |
| | | }else{ |
| | | self?.navigationController?.popViewController(animated: true) |
| | | } |
| | | } |
| | | |
| | | slider_voice.isEnabled = false |
| | | slider_voice.value = Float(settingModel?.volume ?? 0.5) |
| | |
| | | UserDefaultSettingViewModel.saveSetting(settingModel!) |
| | | audioPlayer.playSceneAt(items[index.row].audioFile) |
| | | alertSuccess(msg: "设置成功") |
| | | needPopRoot = true |
| | | NotificationCenter.default.post(name: SetBGMSuccess_Noti, object: items[index.row]) |
| | | DispatchQueue.main.asyncAfter(delay: 0.6) { |
| | | self.navigationController?.popViewController() |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | Services.getMeditationDetail(id: id).subscribe(onNext: {[unowned self] data in |
| | | self.model = data.data |
| | | self.collect_bitem.image = data.data?.favorite == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect_1") |
| | | self.collect_bitem.tintColor = data.data?.favorite == .yes ? UIColor(hexString: "fe5b60"):.white |
| | | if let m = data.data{ |
| | | self.model = m |
| | | let dateTuple = Date.jq_formateToTime_tuple(m.meditationSecondList.first ?? 0) |
| | | self.label_totalTime.text = String(format: "%02ld:%02ld", dateTuple.hour * 60 + dateTuple.minute,dateTuple.second) |
| | | self.collect_bitem.image = m.favorite == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect_1") |
| | | self.collect_bitem.tintColor = m.favorite == .yes ? UIColor(hexString: "fe5b60"):.white |
| | | self.img_background.sd_setImage(with: URL(string: data.data?.backgroundUrl ?? "")) |
| | | if audioPlayer.meditationModel?.id == data.data?.id{ |
| | | if audioPlayer.meditationModel?.id == m.id{ |
| | | audioPlayer.delegate = self |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | |
| | | |
| | | if let m = model,timeLook > 0{ |
| | | Services.watchMuse(id: m.id, timeLook: timeLook).subscribe(onNext: {_ in |
| | | |
| | | NotificationCenter.default.post(name: TreeTaskUpdate_Noti, object: nil) |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | } |
| | |
| | | slider_voice.setThumbImage(v1.qmui_snapshotLayerImage(), for: .highlighted) |
| | | view_coutdown.isHidden = true |
| | | |
| | | view_function.jq_gradientColor(colorArr: [UIColor.black.withAlphaComponent(0.15).cgColor,UIColor.clear.cgColor], cornerRadius: 0, startPoint: CGPoint(x: 0, y: 1), endPoint: CGPoint(x: 0, y: 0), bounds: nil, locations: nil) |
| | | view_function.jq_gradientColor(colorArr: [UIColor.black.withAlphaComponent(0.35).cgColor,UIColor.clear.cgColor], cornerRadius: 0, startPoint: CGPoint(x: 0, y: 1), endPoint: CGPoint(x: 0, y: 0), bounds: nil, locations: nil) |
| | | |
| | | } |
| | | |
| | |
| | | </connections> |
| | | </button> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oe5-fX-A8S" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="351" y="113.33333333333336" width="20" height="37.333333333333329"/> |
| | | <rect key="frame" x="348.66666666666669" y="113.33333333333336" width="25" height="37.333333333333329"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_comment" translatesAutoresizingMaskIntoConstraints="NO" id="6hW-9j-lFc"> |
| | | <rect key="frame" x="0.0" y="0.0" width="20" height="19"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="25" height="19"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IkS-qR-riK"> |
| | | <rect key="frame" x="6" y="24" width="8" height="13.333333333333336"/> |
| | | <rect key="frame" x="6" y="24" width="13" height="13.333333333333336"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="13.333333333333336" id="cJY-hI-tRV"/> |
| | | </constraints> |
| | |
| | | </label> |
| | | </subviews> |
| | | <constraints> |
| | | <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25" id="0On-N0-3L2"/> |
| | | <constraint firstItem="IkS-qR-riK" firstAttribute="leading" secondItem="oe5-fX-A8S" secondAttribute="leading" constant="6" id="8Og-t3-zKZ"/> |
| | | <constraint firstItem="6hW-9j-lFc" firstAttribute="top" secondItem="oe5-fX-A8S" secondAttribute="top" id="9f0-MM-MKO"/> |
| | | <constraint firstItem="6hW-9j-lFc" firstAttribute="centerX" secondItem="oe5-fX-A8S" secondAttribute="centerX" id="DCO-uI-WCX"/> |
| | |
| | | </connections> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xYv-9B-0fk"> |
| | | <rect key="frame" x="22.666666666666657" y="73" width="257.33333333333337" height="17"/> |
| | | <rect key="frame" x="22.666666666666657" y="73" width="348.33333333333337" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="14"/> |
| | | <color key="textColor" red="1" green="1" blue="1" 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="0CQ-Qn-OOa"> |
| | | <rect key="frame" x="22.666666666666657" y="20.000000000000004" width="257.33333333333337" height="32.333333333333343"/> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0CQ-Qn-OOa"> |
| | | <rect key="frame" x="22.666666666666657" y="20.000000000000004" width="348.33333333333337" height="32.333333333333343"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="27"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <constraints> |
| | | <constraint firstItem="xYv-9B-0fk" firstAttribute="top" secondItem="0CQ-Qn-OOa" secondAttribute="bottom" constant="20.5" id="3KZ-8O-C20"/> |
| | | <constraint firstItem="zwK-yd-ILF" firstAttribute="leading" secondItem="vIs-Dn-PVO" secondAttribute="leading" id="AJS-lE-vP8"/> |
| | | <constraint firstAttribute="trailing" secondItem="oe5-fX-A8S" secondAttribute="trailing" constant="22" id="AKK-8O-ib9"/> |
| | | <constraint firstItem="zwK-yd-ILF" firstAttribute="top" secondItem="9ky-8U-0Iq" secondAttribute="bottom" constant="26" id="CE1-LO-1wC"/> |
| | | <constraint firstItem="xYv-9B-0fk" firstAttribute="leading" secondItem="0CQ-Qn-OOa" secondAttribute="leading" id="Fmy-xW-6Ac"/> |
| | | <constraint firstItem="P8W-2A-zOo" firstAttribute="centerY" secondItem="zwK-yd-ILF" secondAttribute="centerY" id="IGL-Li-8gU"/> |
| | | <constraint firstItem="xYv-9B-0fk" firstAttribute="trailing" secondItem="0CQ-Qn-OOa" secondAttribute="trailing" id="J00-LT-ihn"/> |
| | | <constraint firstItem="Soz-NO-Sl6" firstAttribute="centerX" secondItem="oe5-fX-A8S" secondAttribute="centerX" id="JQk-V6-Wr2"/> |
| | | <constraint firstItem="rML-fW-BqA" firstAttribute="leading" secondItem="P8W-2A-zOo" secondAttribute="trailing" id="LQh-3z-ZWN"/> |
| | | <constraint firstAttribute="height" constant="260" id="Nfj-Hc-QTz"/> |
| | | <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="260" id="Nfj-Hc-QTz"/> |
| | | <constraint firstItem="9ky-8U-0Iq" firstAttribute="top" secondItem="xYv-9B-0fk" secondAttribute="bottom" constant="22" id="NrV-Mq-ATf"/> |
| | | <constraint firstItem="Soz-NO-Sl6" firstAttribute="top" secondItem="oe5-fX-A8S" secondAttribute="bottom" constant="26" id="QAM-jd-nhq"/> |
| | | <constraint firstItem="9t3-fS-clT" firstAttribute="centerY" secondItem="9ky-8U-0Iq" secondAttribute="centerY" id="RCH-if-FSR"/> |
| | | <constraint firstItem="P8W-2A-zOo" firstAttribute="leading" secondItem="zwK-yd-ILF" secondAttribute="trailing" constant="12.5" id="Re5-xC-yA4"/> |
| | | <constraint firstItem="9ky-8U-0Iq" firstAttribute="leading" secondItem="vIs-Dn-PVO" secondAttribute="leading" constant="23.5" id="Tcc-7u-zff"/> |
| | | <constraint firstAttribute="trailing" secondItem="xYv-9B-0fk" secondAttribute="trailing" constant="113" id="WeW-cL-yXy"/> |
| | | <constraint firstAttribute="trailing" secondItem="0CQ-Qn-OOa" secondAttribute="trailing" constant="22" id="WUP-DX-tnt"/> |
| | | <constraint firstItem="xYv-9B-0fk" firstAttribute="leading" secondItem="vIs-Dn-PVO" secondAttribute="leading" constant="22.5" id="a5m-GS-Y4H"/> |
| | | <constraint firstItem="0CQ-Qn-OOa" firstAttribute="top" secondItem="vIs-Dn-PVO" secondAttribute="top" constant="20" id="az1-qw-mly"/> |
| | | <constraint firstItem="Soz-NO-Sl6" firstAttribute="leading" secondItem="rML-fW-BqA" secondAttribute="trailing" id="jUL-Yt-qbu"/> |
| | |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="bottom" secondItem="vIs-Dn-PVO" secondAttribute="bottom" id="8Lx-5h-KB7"/> |
| | | <constraint firstAttribute="bottom" secondItem="pbM-Fi-Xil" secondAttribute="bottom" id="A2E-n1-Phu"/> |
| | | <constraint firstItem="vIs-Dn-PVO" firstAttribute="top" secondItem="3rZ-t0-pdK" secondAttribute="bottom" constant="38.5" id="GhF-Jw-JhV"/> |
| | | <constraint firstAttribute="bottom" secondItem="vIs-Dn-PVO" secondAttribute="bottom" id="IG2-2Q-lSs"/> |
| | | <constraint firstItem="Qgc-UW-rO1" firstAttribute="centerX" secondItem="pbM-Fi-Xil" secondAttribute="centerX" id="Kd3-PJ-yeJ"/> |
| | | <constraint firstAttribute="trailing" secondItem="vIs-Dn-PVO" secondAttribute="trailing" id="Lty-fJ-f1s"/> |
| | | <constraint firstItem="Qgc-UW-rO1" firstAttribute="centerY" secondItem="pbM-Fi-Xil" secondAttribute="centerY" id="M19-kC-51O"/> |
| | |
| | | |
| | | let isVip = UserViewModel.getAvatarInfo().isVip |
| | | |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){ |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){ |
| | | let detailVC = HomeItemDetailVC(id: m.id) |
| | | jq_push(vc: detailVC) |
| | | }else{ |
| | |
| | | let vc = VIPCenterVC() |
| | | jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse) |
| | | let vc = PaymentOrderVC(museItemModel: m,type: .muse) |
| | | jq_push(vc: vc) |
| | | } |
| | | } |
| | |
| | | @IBOutlet weak var tf_phone: QMUITextField! |
| | | @IBOutlet weak var label_walletBalance: UILabel! |
| | | @IBOutlet weak var btn_isreadAgreement: UIButton! |
| | | private var id:Int! |
| | | private var museItemModel:MeditationModel? |
| | | private var courseItemModel:CourseModel? |
| | | private var giftUserId:Int? |
| | | private var giftToOther:Bool! |
| | | private var courseModel:CourseModel? |
| | |
| | | private var balance:Double = 0 |
| | | private var type:PaymentOrderType! |
| | | |
| | | init(id:Int,type:PaymentOrderType,giftToOther:Bool = false) { |
| | | init(museItemModel:MeditationModel? = nil,courseItemModel:CourseModel? = nil,type:PaymentOrderType,giftToOther:Bool = false) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.id = id |
| | | self.museItemModel = museItemModel |
| | | self.courseItemModel = courseItemModel |
| | | self.giftToOther = giftToOther |
| | | self.type = type |
| | | } |
| | |
| | | getBalance() |
| | | |
| | | if type == .course{ |
| | | Services.getCourseDetail(courseId: id).subscribe(onNext: {data in |
| | | Services.getCourseDetail(courseId: courseItemModel!.id).subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | | self.courseModel = m |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl)) |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl.jq_urlEncoded())) |
| | | self.label_courseName.text = m.courseTitle |
| | | self.label_price.text = "愈疗币\(m.generalPrice.jq_formatFloat)" |
| | | self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_teacher.text = "导师\(m.tutor)" |
| | | self.label_paymentCount.text = "x\(m.count)" |
| | | self.label_orderPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)" |
| | | self.label_orderPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | if type == .muse{ |
| | | Services.getMeditationDetail(id: id).subscribe(onNext: {data in |
| | | Services.getMeditationDetail(id: museItemModel!.id).subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | | self.museModel = m |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl)) |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl.jq_urlEncoded())) |
| | | self.label_courseName.text = m.meditationTitle |
| | | self.label_price.text = "愈疗币\(m.generalPrice.jq_formatFloat)" |
| | | self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_teacher.text = "" |
| | | self.label_paymentCount.text = "x1" |
| | | self.label_orderPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)" |
| | | self.label_orderPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | self.label_totalPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)" |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | var id:Int = 0 |
| | | |
| | | if let m = courseModel{ |
| | | money = m.generalPrice |
| | | money = m.iosPrice |
| | | id = m.id |
| | | } |
| | | |
| | | if let m = museModel{ |
| | | money = m.generalPrice |
| | | money = m.iosPrice |
| | | id = m.id |
| | | } |
| | | |
| | |
| | | |
| | | Services.gvieCourse(orderForm: type, targetId: id,receiverId: giftUserId).subscribe(onNext: {[weak self]data in |
| | | guard let weakSelf = self else { return } |
| | | self?.museItemModel?.isBuy = .yes |
| | | self?.courseItemModel?.isBuy = .yes |
| | | self?.museModel?.isBuy = .yes |
| | | self?.courseModel?.isBuy = .yes |
| | | let vc = PaymentOrderResultVC(type: weakSelf.type, id: id, price: money) |
| | | self?.push(vc: vc) |
| | | }).disposed(by: disposeBag) |
| | |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true) |
| | | let vc = PaymentOrderVC(courseItemModel: m,type: .course,giftToOther: true) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | | |
| | | case .muse: |
| | | let m = museViewModel!.dataSource.value!.list[indexPath.row] |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){ |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){ |
| | | let detailVC = HomeItemDetailVC(id: m.id) |
| | | JQ_currentViewController().jq_push(vc: detailVC) |
| | | }else{ |
| | |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse) |
| | | let vc = PaymentOrderVC(museItemModel: m,type: .muse) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | override func viewDidDisappear(_ animated: Bool) { |
| | | super.viewDidDisappear(animated) |
| | | SearchCache.writeToPath(serchType) |
| | | } |
| | | |
| | | override func setUI() { |
| | | super.setUI() |
| | | view.backgroundColor = UIColor(hexString: "f6f6f6") |
| | |
| | | tableView.delegate = self |
| | | tableView.dataSource = self |
| | | tableView.separatorStyle = .none |
| | | tableView.isScrollEnabled = false |
| | | tableView.showsVerticalScrollIndicator = false |
| | | tableView.showsHorizontalScrollIndicator = false |
| | | tableView.backgroundColor = .clear |
| | | tableView.register(UINib(nibName: "SearchHotTCell", bundle: nil), forCellReuseIdentifier: "_SearchHotTCell") |
| | | |
| | |
| | | tf_search.resignFirstResponder() |
| | | SearchCache.writeToList(tf_search.text!) |
| | | |
| | | SearchCache.writeToPath(serchType) |
| | | |
| | | let vc = SearchContentVC(content: tf_search.text!, type: serchType) |
| | | jq_push(vc: vc) |
| | | |
| | | cacheSearchCollectionView.reloadData() |
| | | tf_search.text = "" |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | func resetTopImage(){ |
| | | if let imgUrl = UserDefaultSettingViewModel.getSetting()?.bgm?.imageUrl{ |
| | | if let imgUrl = UserDefaultSettingViewModel.getSetting()?.bgm?.imageUrl.jq_urlEncoded(){ |
| | | image_top.sd_setImage(with: URL(string: imgUrl)) |
| | | } |
| | | } |
| | |
| | | @IBOutlet weak var btn_sendCode: UIButton! |
| | | @IBOutlet weak var btn_isRead: UIButton! |
| | | @IBOutlet weak var btn_wechat: UIButton! |
| | | @IBOutlet weak var image_security: UIImageView! |
| | | |
| | | private var cellularData:CTCellularData! |
| | | |
| | |
| | | switch viewModel.loginType.value{ |
| | | case .code: |
| | | tf_content.isSecureTextEntry = false |
| | | image_security.image = UIImage(named: "icon_code") |
| | | case .pwd: |
| | | tf_content.isSecureTextEntry = btn_eye.isSelected |
| | | image_security.image = UIImage(named: "icon_pwd") |
| | | } |
| | | } |
| | | |
| | |
| | | guard viewModel.loginPhone.value.jq_isPhone else {alert(msg: "请输入正确手机号");return} |
| | | |
| | | Services.sendCode(phone:tf_phone.text!,type: .codeLogin).subscribe(onNext: {data in |
| | | if let _ = data.data{ |
| | | sender.jq_openCountDown(60, defultTitle: "发送验证码") { |
| | | if data.code == 200{ |
| | | sender.jq_openCountDown(60, defultTitle: "获取验证码") { |
| | | sender.titleLabel?.font = UIFont.systemFont(ofSize: 12) |
| | | sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal) |
| | | } completeClouse: { |
| | |
| | | |
| | | guard viewModel.checkSafe() else {return} |
| | | guard btn_isRead.isSelected else { |
| | | alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | } |
| | | |
| | | Services.loginBy(phone: viewModel.loginPhone.value, content: viewModel.loginContent.value, type: viewModel.loginType.value).subscribe(onNext: { data in |
| | |
| | | } |
| | | |
| | | @IBAction func userRegisterTreatyAction(_ sender: UIButton) { |
| | | let vc = LoginTreatyVC() |
| | | vc.topIndex = 0 |
| | | vc.clickHandle {[unowned self] state in |
| | | self.btn_isRead.isSelected = state |
| | | } |
| | | vc.modalPresentationStyle = .custom |
| | | present(vc, animated: true) |
| | | |
| | | let vc = WebVC(type: .user) |
| | | vc.title = "用户注册协议" |
| | | push(vc: vc) |
| | | |
| | | // let vc = LoginTreatyVC() |
| | | // vc.topIndex = 0 |
| | | // vc.clickHandle {[unowned self] state in |
| | | // self.btn_isRead.isSelected = state |
| | | // } |
| | | // vc.modalPresentationStyle = .custom |
| | | // present(vc, animated: true) |
| | | } |
| | | |
| | | @IBAction func userPrivateTreatyAction(_ sender: UIButton) { |
| | | let vc = LoginTreatyVC() |
| | | vc.topIndex = 1 |
| | | vc.clickHandle {[unowned self] state in |
| | | self.btn_isRead.isSelected = state |
| | | } |
| | | vc.modalPresentationStyle = .custom |
| | | present(vc, animated: true) |
| | | // let vc = LoginTreatyVC() |
| | | // vc.topIndex = 1 |
| | | // vc.clickHandle {[unowned self] state in |
| | | // self.btn_isRead.isSelected = state |
| | | // } |
| | | // vc.modalPresentationStyle = .custom |
| | | // present(vc, animated: true) |
| | | let vc = WebVC(type: .privacy) |
| | | vc.title = "用户隐私协议" |
| | | push(vc: vc) |
| | | } |
| | | |
| | | @IBAction func registerAction(_ sender: UIButton) { |
| | |
| | | |
| | | @IBAction func loginByWechatAction(_ sender: UIButton) { |
| | | guard btn_isRead.isSelected else { |
| | | alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | } |
| | | WeChatTools.sendAuthRequest() |
| | | } |
| | | |
| | | @IBAction func loginByAppleAction(_ sender: UIButton) { |
| | | guard btn_isRead.isSelected else { |
| | | alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | } |
| | | |
| | | let provider = ASAuthorizationAppleIDProvider() //主要作用是用创建相应的请求,查询用户授权状态 |
| | |
| | | <outlet property="btn_register" destination="k1h-gO-9vj" id="AxQ-S9-3oN"/> |
| | | <outlet property="btn_sendCode" destination="cUd-a4-RTn" id="n26-3e-uaI"/> |
| | | <outlet property="btn_wechat" destination="2Fj-Y0-NYp" id="M7L-LL-Se8"/> |
| | | <outlet property="image_security" destination="8PR-dw-BH2" id="zYv-ai-058"/> |
| | | <outlet property="tf_content" destination="x0Y-XG-Xsv" id="GVf-UU-yCe"/> |
| | | <outlet property="tf_phone" destination="9rD-4T-K6b" id="ynF-y5-xQD"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | |
| | | <rect key="frame" x="31" y="118" width="24" height="24"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入您的手机号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="9rD-4T-K6b" customClass="QMUITextField"> |
| | | <rect key="frame" x="66" y="120.6666666666667" width="111.33333333333331" height="18.666666666666671"/> |
| | | <rect key="frame" x="66" y="110" width="296" height="40"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="qpe-84-EuW"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" pointSize="14"/> |
| | | <textInputTraits key="textInputTraits" keyboardType="numberPad"/> |
| | | <userDefinedRuntimeAttributes> |
| | |
| | | <rect key="frame" x="31" y="187" width="24" height="24"/> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="x0Y-XG-Xsv" customClass="QMUITextField"> |
| | | <rect key="frame" x="66" y="189.66666666666669" width="69.666666666666686" height="18.666666666666657"/> |
| | | <rect key="frame" x="66" y="179" width="219" height="40"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="KA0-uB-9Hk"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" pointSize="14"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | </textField> |
| | |
| | | <rect key="frame" x="295" y="184.66666666666669" width="70" height="29"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="发送验证码"> |
| | | <state key="normal" title="获取验证码"> |
| | | <color key="titleColor" red="0.58823529411764708" green="0.67843137254901964" blue="0.50588235294117645" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <connections> |
| | |
| | | <constraint firstItem="eq2-Wp-Yza" firstAttribute="centerY" secondItem="6Xe-Xr-eHg" secondAttribute="centerY" id="083-Vl-7Nc"/> |
| | | <constraint firstItem="Ec8-sg-6R6" firstAttribute="top" secondItem="Cxv-rm-1Fq" secondAttribute="top" constant="22" id="1A0-PI-Pgu"/> |
| | | <constraint firstItem="esZ-HR-QwQ" firstAttribute="centerY" secondItem="6Xe-Xr-eHg" secondAttribute="centerY" id="3EO-Xv-RNw"/> |
| | | <constraint firstItem="WEh-Dp-WMI" firstAttribute="trailing" secondItem="9rD-4T-K6b" secondAttribute="trailing" id="8SR-l5-rI9"/> |
| | | <constraint firstItem="6Xe-Xr-eHg" firstAttribute="top" secondItem="Oyy-8c-eua" secondAttribute="bottom" constant="9" id="9SA-Os-bVk"/> |
| | | <constraint firstItem="EBj-o7-Mca" firstAttribute="leading" secondItem="Cxv-rm-1Fq" secondAttribute="leading" constant="31" id="B4S-Om-agc"/> |
| | | <constraint firstItem="k1h-gO-9vj" firstAttribute="centerY" secondItem="EBj-o7-Mca" secondAttribute="centerY" id="Bvm-1l-kEG"/> |
| | | <constraint firstItem="MNJ-Ag-zfE" firstAttribute="leading" secondItem="esZ-HR-QwQ" secondAttribute="trailing" constant="5" id="C6j-4e-yc6"/> |
| | | <constraint firstItem="WEh-Dp-WMI" firstAttribute="top" secondItem="jUu-IQ-vCE" secondAttribute="bottom" constant="12" id="CJJ-9i-GMf"/> |
| | | <constraint firstItem="jUu-IQ-vCE" firstAttribute="top" secondItem="Ec8-sg-6R6" secondAttribute="bottom" constant="74" id="D8q-hk-tjK"/> |
| | | <constraint firstItem="cUd-a4-RTn" firstAttribute="leading" secondItem="x0Y-XG-Xsv" secondAttribute="trailing" constant="10" id="Duu-fF-i6C"/> |
| | | <constraint firstItem="8PR-dw-BH2" firstAttribute="leading" secondItem="Cxv-rm-1Fq" secondAttribute="leading" constant="31" id="EJX-7K-0Sx"/> |
| | | <constraint firstItem="cUd-a4-RTn" firstAttribute="centerY" secondItem="8PR-dw-BH2" secondAttribute="centerY" id="HU9-kD-mb5"/> |
| | | <constraint firstItem="MNJ-Ag-zfE" firstAttribute="centerY" secondItem="6Xe-Xr-eHg" secondAttribute="centerY" id="HWY-A4-Ukq"/> |
| | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "找回密码" |
| | | title = "修改密码" |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="忘记密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aIe-la-VEd"> |
| | | <rect key="frame" x="30.999999999999993" y="90" width="89.333333333333314" height="26"/> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aIe-la-VEd"> |
| | | <rect key="frame" x="31" y="90" width="84" height="26"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="26" id="lCe-Vg-TdC"/> |
| | | </constraints> |
| | |
| | | <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="54B-JI-JvE"> |
| | | <rect key="frame" x="31" y="131" width="185.66666666666666" height="14"/> |
| | | <rect key="frame" x="31" y="131" width="181" height="14"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="14" id="hZb-2Y-F08"/> |
| | | </constraints> |
| | |
| | | </connections> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="至少8个字符,不能全是字母或数字" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XwG-d3-D1z"> |
| | | <rect key="frame" x="31" y="249.66666666666663" width="227" height="17"/> |
| | | <rect key="frame" x="31.000000000000014" y="249.66666666666663" width="221.33333333333337" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.6588235294117647" green="0.76078431372549016" blue="0.5725490196078431" alpha="1" colorSpace="calibratedRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "找回密码" |
| | | title = "修改密码" |
| | | |
| | | c1.delegate = self |
| | | c2.delegate = self |
| | |
| | | make.left.right.equalToSuperview() |
| | | make.height.equalTo(30) |
| | | } |
| | | label_hint.text = "验证码已发送至:" + phone.jq_blotOutPhone() |
| | | label_hint.text = "验证码已发送至:" + phone.jq_insertBlank() |
| | | } |
| | | |
| | | override func setRx() { |
| | |
| | | btn_retry.alpha = 0.5 |
| | | timer = Timer(timeInterval: 1.0, repeats: true) {[weak self] t in |
| | | self?.times -= 1 |
| | | self?.label_retryCode.text = "\(self?.times ?? 0)s后可重新发送验证码" |
| | | |
| | | self?.label_retryCode.attributedText = AttributedStringbuilder.build() |
| | | .add(string: "\(self?.times ?? 0)s", withFont: .systemFont(ofSize: 12, weight: .medium), withColor: UIColor(hexStr: "#98B083")) |
| | | .add(string: "后可重新获取验证码", withFont: .systemFont(ofSize: 12, weight: .medium), withColor: UIColor(hexStr: "#B7B7B7")).mutableAttributedString |
| | | |
| | | // self?.label_retryCode.text = "\(self?.times ?? 0)s后可重新获取验证码" |
| | | if self?.times == 0{ |
| | | self?.label_retryCode.text = "" |
| | | self?.btn_retry.isEnabled = true |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="忘记密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jDh-kq-o20"> |
| | | <rect key="frame" x="30.999999999999993" y="90" width="89.333333333333314" height="26"/> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jDh-kq-o20"> |
| | | <rect key="frame" x="31" y="90" width="84" height="26"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="26" id="wIX-wp-8Cr"/> |
| | | </constraints> |
| | |
| | | <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="42Y-AF-WYy"> |
| | | <rect key="frame" x="30.999999999999993" y="131" width="127.33333333333331" height="14"/> |
| | | <rect key="frame" x="30.999999999999993" y="131" width="124.33333333333331" height="14"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="14" id="hT6-iS-45s"/> |
| | | </constraints> |
| | |
| | | <constraint firstAttribute="height" constant="48" id="XvV-hO-SgT"/> |
| | | </constraints> |
| | | </stackView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0s后可重新发送验证码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FGZ-7g-h6V"> |
| | | <rect key="frame" x="13.999999999999993" y="247" width="126.33333333333331" height="14.333333333333314"/> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0s后可重新获取验证码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FGZ-7g-h6V"> |
| | | <rect key="frame" x="13.999999999999993" y="247" width="123.33333333333331" height="14.333333333333314"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <color key="textColor" red="0.71764705882352942" green="0.71764705882352942" blue="0.71764705882352942" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" title="重新发送验证码"> |
| | | <state key="normal" title="重新获取验证码"> |
| | | <color key="titleColor" red="0.68627450980000004" green="0.79215686269999996" blue="0.59607843140000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <userDefinedRuntimeAttributes> |
| | |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "找回密码" |
| | | |
| | | #if DEBUG |
| | | tf_phone.text = "18111223301" |
| | | #endif |
| | | title = "修改密码" |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="忘记密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Zc-Ks-ApW"> |
| | | <rect key="frame" x="30.999999999999993" y="90" width="89.333333333333314" height="26"/> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Zc-Ks-ApW"> |
| | | <rect key="frame" x="31" y="90" width="84" height="26"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="26" id="CF4-AX-aMk"/> |
| | | </constraints> |
| | |
| | | <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="kEn-9P-7XH"> |
| | | <rect key="frame" x="31" y="131" width="86" height="14"/> |
| | | <rect key="frame" x="31.000000000000007" y="131" width="83.666666666666686" height="14"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="14" id="Zj2-at-b0v"/> |
| | | </constraints> |
| | |
| | | |
| | | Services.sendCode(phone:viewModel.phone.value,type: .register).subscribe(onNext: {data in |
| | | if data.code == 200{ |
| | | sender.jq_openCountDown(60, defultTitle: "发送验证码") { |
| | | sender.jq_openCountDown(60, defultTitle: "获取验证码") { |
| | | sender.titleLabel?.font = UIFont.systemFont(ofSize: 12) |
| | | sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal) |
| | | } completeClouse: { |
| | |
| | | view.endEditing(true) |
| | | guard viewModel.checkSafe() else {return} |
| | | guard btn_isRead.isSelected else { |
| | | alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return |
| | | } |
| | | |
| | | guard viewModel.pwd.value.count >= 8 else {alertError(msg: "密码至少8个字符,不能全是字母或数字");return} |
| | | guard viewModel.pwd.value.jq_isComplexPassword else {alertError(msg: "密码至少8个字符,不能全是字母或数字");return} |
| | | |
| | | Services.register(cellPhone: viewModel.phone.value, captcha: viewModel.code.value, password: viewModel.pwd.value).subscribe(onNext: {data in |
| | | if let model = data.data{ |
| | |
| | | UserViewModel.saveLoginInfo(model) |
| | | Services.getUserInfo().subscribe(onNext: {data in |
| | | if let model = data.data{ |
| | | sceneDelegate?.loginSuccess() |
| | | UserViewModel.saveAvatarInfo(model) |
| | | self.dismiss(animated: true) |
| | | self.dismiss(animated: true) { |
| | | JQ_currentViewController().navigationController?.tabBarController?.selectedIndex = 0 |
| | | DispatchQueue.main.asyncAfter(delay: 0.5) { |
| | | sceneDelegate?.loginSuccess() |
| | | } |
| | | } |
| | | } |
| | | }).disposed(by: self.disposeBag) |
| | | } |
| | |
| | | } |
| | | |
| | | Services.sendCode(phone:tf_phone.text!,type: .threePlantform).subscribe(onNext: {data in |
| | | if let _ = data.data{ |
| | | sender.jq_openCountDown(60, defultTitle: "发送验证码") { |
| | | if data.code == 200{ |
| | | sender.jq_openCountDown(60, defultTitle: "获取验证码") { |
| | | sender.titleLabel?.font = UIFont.systemFont(ofSize: 12) |
| | | sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal) |
| | | } completeClouse: { |
| | |
| | | sceneDelegate?.window?.addSubview(popupView) |
| | | popupView.frame = sceneDelegate?.window?.frame ?? .zero |
| | | |
| | | var t = 3 |
| | | var t = 2 |
| | | UIView.animate(withDuration: 0.4) { |
| | | popupView.alpha = 1 |
| | | popupView.view_content.transform = .init(scaleX: 1.0, y: 1.0) |
| | | }completion: { _ in |
| | | Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in |
| | | t -= 1 |
| | | popupView.label_times.text = "\(t)s" |
| | | popupView.label_times.text = "\(min(t,1))s" |
| | | if t == 0{ |
| | | popupView.hidden() |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.68999999999999995" colorSpace="custom" customColorSpace="calibratedRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3s" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hJb-yZ-H1O"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2s" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hJb-yZ-H1O"> |
| | | <rect key="frame" x="266" y="14" width="21" height="21"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/> |
| | | <color key="textColor" red="0.67450980392156867" green="0.7803921568627451" blue="0.58823529411764708" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | |
| | | self.label_sustainDay.attributedText = AttributedStringbuilder.build().add(string: "0", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).mutableAttributedString |
| | | |
| | | self.image_vipBg.image = UIImage(named: "bg_vip_u") |
| | | self.label_vipInfo.text = "升级为高级会员,解锁全部体验" |
| | | self.label_vipInfo.text = "升级为会员,解锁会员专属体验" |
| | | self.label_expirtTime.text = "你还未开通会员服务" |
| | | |
| | | }).disposed(by: disposeBag) |
| | |
| | | private func setUserUI(model:UserInfoModel){ |
| | | self.image_userAvatar.sd_setImage(with: URL(string: model.avatar)) |
| | | self.label_userName.text = model.nickname |
| | | self.label_phone.text = model.cellPhone.jq_blotOutPhone() |
| | | self.label_phone.text = model.cellPhone |
| | | |
| | | self.label_totalDay.attributedText = AttributedStringbuilder.build().add(string: "\(model.cumulative)", withFont: UIFont.init(name: "PingFang-SC-Regular", size: 60)!, withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 16), withColor: UIColor(hexString: "#152715")!).mutableAttributedString |
| | | |
| | | self.label_sustainDay.attributedText = AttributedStringbuilder.build().add(string: "\(model.continuity)", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).mutableAttributedString |
| | | |
| | | self.image_medal.sd_setImage(with: URL(string: model.levelIcon)) |
| | | self.image_medal.sd_setImage(with: URL(string: model.levelIcon.jq_urlEncoded())) |
| | | |
| | | let timeTurple = Date.jq_formateToTime_tuple(model.today * 60) |
| | | |
| | |
| | | |
| | | if model.isVip == .yes{ |
| | | self.image_vipBg.image = UIImage(named: "bg_vip") |
| | | self.label_vipInfo.text = "你已是高级会员" |
| | | self.label_expirtTime.text = model.vipExpireTime + "到期" |
| | | self.label_vipInfo.text = "您将享受所有会员专享音频,尽情畅游心泉·疗愈世界" |
| | | self.label_expirtTime.text = model.vipExpireTime.components(separatedBy: " ").first! + "到期" |
| | | }else{ |
| | | self.image_vipBg.image = UIImage(named: "bg_vip_u") |
| | | self.label_vipInfo.text = "升级为高级会员,解锁全部体验" |
| | | self.label_vipInfo.text = "升级为会员,解锁会员专属体验" |
| | | self.label_expirtTime.text = "你还未开通会员服务" |
| | | } |
| | | } |
| | |
| | | </userDefinedRuntimeAttributes> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请先登录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xiq-PE-zPH"> |
| | | <rect key="frame" x="86" y="17.666666666666671" width="67.666666666666686" height="20.333333333333329"/> |
| | | <rect key="frame" x="86" y="17.666666666666671" width="210" height="20.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="17"/> |
| | | <color key="textColor" red="0.082352941176470587" green="0.15294117647058825" blue="0.082352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" 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="pJK-nH-NXm"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="升级为会员,解锁会员专属体验" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pJK-nH-NXm"> |
| | | <rect key="frame" x="19" y="85" width="139.33333333333334" height="12"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="10"/> |
| | | <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | |
| | | </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="flg-Hv-HHC"> |
| | | <rect key="frame" x="266.66666666666669" y="18.666666666666742" width="44" height="13.333333333333336"/> |
| | | <rect key="frame" x="264.66666666666669" y="18.666666666666742" width="44" height="13.333333333333336"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="11"/> |
| | | <color key="textColor" red="0.40392156862745099" green="0.40392156862745099" blue="0.40392156862745099" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="IKY-cB-8Vd"> |
| | | <rect key="frame" x="316.66666666666669" y="20.333333333333371" width="5.3333333333333144" height="10"/> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="IKY-cB-8Vd"> |
| | | <rect key="frame" x="311.66666666666669" y="20.333333333333371" width="5.3333333333333144" height="10"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="5.5" id="UAN-uc-0l9"/> |
| | | <constraint firstAttribute="height" constant="10" id="mje-aH-Ehd"/> |
| | |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="IKY-cB-8Vd" secondAttribute="trailing" constant="3" id="Bxd-yS-Xk9"/> |
| | | <constraint firstAttribute="trailing" secondItem="IKY-cB-8Vd" secondAttribute="trailing" constant="8" id="Bxd-yS-Xk9"/> |
| | | <constraint firstItem="IKY-cB-8Vd" firstAttribute="centerY" secondItem="n62-aO-gnS" secondAttribute="centerY" id="GIW-CX-om4"/> |
| | | <constraint firstItem="z63-U0-xCY" firstAttribute="leading" secondItem="n62-aO-gnS" secondAttribute="leading" constant="4.5" id="MIn-56-hSL"/> |
| | | <constraint firstItem="IKY-cB-8Vd" firstAttribute="centerY" secondItem="flg-Hv-HHC" secondAttribute="centerY" id="Wz3-II-c2W"/> |
| | | <constraint firstItem="dut-7H-aMv" firstAttribute="leading" secondItem="z63-U0-xCY" secondAttribute="trailing" constant="10" id="bMN-qR-89Z"/> |
| | | <constraint firstItem="z63-U0-xCY" firstAttribute="centerY" secondItem="n62-aO-gnS" secondAttribute="centerY" id="eWq-BR-eYS"/> |
| | | <constraint firstItem="dut-7H-aMv" firstAttribute="centerY" secondItem="z63-U0-xCY" secondAttribute="centerY" id="lXT-MR-Dt1"/> |
| | | <constraint firstItem="IKY-cB-8Vd" firstAttribute="leading" secondItem="flg-Hv-HHC" secondAttribute="trailing" constant="6" id="ve2-NZ-tDu"/> |
| | | <constraint firstItem="IKY-cB-8Vd" firstAttribute="leading" secondItem="flg-Hv-HHC" secondAttribute="trailing" constant="3" id="ve2-NZ-tDu"/> |
| | | <constraint firstAttribute="height" constant="50.5" id="xbT-9l-3ue"/> |
| | | </constraints> |
| | | <connections> |
| | |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="icon_profileSetting"/> |
| | | <connections> |
| | | <action selector="userProfileAction:" destination="-1" eventType="touchUpInside" id="f8T-XY-tt1"/> |
| | | <action selector="settingAction:" destination="-1" eventType="touchUpInside" id="yff-k5-poL"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cNy-lc-dn6" customClass="NoticeBtn" customModule="XQMuse" customModuleProvider="target"> |
| | |
| | | <constraint firstAttribute="trailing" secondItem="uES-HP-Bfe" secondAttribute="trailing" constant="21.5" id="gPj-cP-mH9"/> |
| | | <constraint firstItem="dFl-Si-mEi" firstAttribute="leading" secondItem="No9-Oz-bER" secondAttribute="leading" constant="14.5" id="hZd-x5-wiC"/> |
| | | <constraint firstAttribute="trailing" secondItem="Z1J-zC-UdE" secondAttribute="trailing" constant="12.5" id="j06-P7-YsO"/> |
| | | <constraint firstItem="cNy-lc-dn6" firstAttribute="leading" secondItem="Xiq-PE-zPH" secondAttribute="trailing" constant="10" id="jeQ-bV-hW9"/> |
| | | <constraint firstItem="Xiq-PE-zPH" firstAttribute="leading" secondItem="dFl-Si-mEi" secondAttribute="trailing" constant="6.5" id="k6Q-5X-UXd"/> |
| | | <constraint firstItem="uES-HP-Bfe" firstAttribute="centerY" secondItem="Xiq-PE-zPH" secondAttribute="centerY" id="l8f-di-yWr"/> |
| | | <constraint firstItem="uES-HP-Bfe" firstAttribute="leading" secondItem="cNy-lc-dn6" secondAttribute="trailing" constant="24.5" id="lxo-L4-nFQ"/> |
| | |
| | | <image name="icon_collect" width="24.666666030883789" height="21"/> |
| | | <image name="icon_customer" width="23" height="23"/> |
| | | <image name="icon_love" width="28" height="25"/> |
| | | <image name="icon_more" width="6" height="10.666666984558105"/> |
| | | <image name="icon_msg" width="19" height="17.666666030883789"/> |
| | | <image name="icon_profileSetting" width="20.666666030883789" height="18.666666030883789"/> |
| | | <image name="icon_setting" width="24" height="22"/> |
| | |
| | | } |
| | | |
| | | Services.sendCode(phone:tf_phone.text!,type: .addBank).subscribe(onNext: {_ in |
| | | sender.jq_openCountDown(60, defultTitle: "发送验证码") { |
| | | sender.jq_openCountDown(60, defultTitle: "获取验证码") { |
| | | sender.titleLabel?.font = UIFont.systemFont(ofSize: 12) |
| | | sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal) |
| | | } completeClouse: { |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="365" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开户行:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hKJ-gl-2cy"> |
| | | <rect key="frame" x="10.000000000000004" y="15.333333333333327" width="57.333333333333343" height="19.333333333333329"/> |
| | | <rect key="frame" x="10" y="15.333333333333327" width="56" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="0.0" y="50" width="365" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="卡号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x3A-cI-UqF"> |
| | | <rect key="frame" x="10" y="15.333333333333341" width="41" height="19.333333333333329"/> |
| | | <rect key="frame" x="10" y="15.333333333333341" width="40" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="365" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="持卡人:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wd8-Qe-HeI"> |
| | | <rect key="frame" x="10.000000000000004" y="15.333333333333341" width="57.333333333333343" height="19.333333333333329"/> |
| | | <rect key="frame" x="10" y="15.333333333333341" width="56" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="0.0" y="50" width="365" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="身份证号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rNC-EN-G1G"> |
| | | <rect key="frame" x="10" y="15.333333333333341" width="73.666666666666671" height="19.333333333333329"/> |
| | | <rect key="frame" x="10" y="15.333333333333341" width="71.666666666666671" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="0.0" y="100" width="365" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="手机号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ASX-h9-DTo"> |
| | | <rect key="frame" x="10.000000000000004" y="15.333333333333313" width="57.333333333333343" height="19.333333333333329"/> |
| | | <rect key="frame" x="10" y="15.333333333333313" width="56" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="0.0" y="150" width="365" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请输入验证码:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ck5-E9-RWu"> |
| | | <rect key="frame" x="10" y="15.333333333333313" width="106.33333333333333" height="19.333333333333329"/> |
| | | <rect key="frame" x="10" y="15.333333333333313" width="103.66666666666667" height="19.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="16"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="fdw-nZ-t66" customClass="QMUITextField"> |
| | | <rect key="frame" x="126.33333333333334" y="14.666666666666686" width="100" height="21"/> |
| | | <rect key="frame" x="123.66666666666666" y="14.666666666666686" width="100" height="21"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="100" id="d1y-dU-luk"/> |
| | | </constraints> |
| | |
| | | </constraints> |
| | | </view> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nRC-hW-ER0"> |
| | | <rect key="frame" x="272" y="9" width="82" height="32"/> |
| | | <rect key="frame" x="274" y="9" width="80" height="32"/> |
| | | <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="发送验证码"> |
| | | <state key="normal" title="获取验证码"> |
| | | <color key="titleColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </state> |
| | | <connections> |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | title = "账号绑定" |
| | | label_phone.text = UserViewModel.getAvatarInfo().cellPhone.jq_blotOutPhone() |
| | | label_phone.text = UserViewModel.getAvatarInfo().cellPhone |
| | | label_wechatBind.text = UserViewModel.getAvatarInfo().wxOpenId.isEmpty ? "未绑定":"已绑定" |
| | | } |
| | | |
| | |
| | | title = "绑定手机号" |
| | | |
| | | //原型设计漏洞,可绕过原手机号的验证,直接通过截取Token修改新手机号【产品要求:涉及到的时候再优化 2024-09-19】 |
| | | label_phone.text = UserViewModel.getAvatarInfo().cellPhone.jq_blotOutPhone() |
| | | label_phone.text = UserViewModel.getAvatarInfo().cellPhone |
| | | } |
| | | |
| | | override func viewDidLayoutSubviews() { |
| | |
| | | |
| | | @IBAction func sendCodeAction(_ sender: UIButton) { |
| | | Services.sendCode(phone:tf_phone.text!,type: .exchangePhone).subscribe(onNext: { data in |
| | | if let _ = data.data{ |
| | | sender.jq_openCountDown(60, defultTitle: "发送验证码") { |
| | | if data.code == 200{ |
| | | sender.jq_openCountDown(60, defultTitle: "获取验证码") { |
| | | sender.titleLabel?.font = UIFont.systemFont(ofSize: 12) |
| | | sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal) |
| | | } completeClouse: { |
| | |
| | | Services.commonQuestionDetailBy(id: model.id).subscribe(onNext: {[weak self] data in |
| | | if let m = data.data{ |
| | | self?.webView.loadHTMLString(m.content.jq_wrapHtml(), baseURL: nil) |
| | | self?.image_qrCode.sd_setImage(with: URL(string: m.customerServiceQrCode)) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | if let image = customerImage{ |
| | | self.image_qrCode.image = image |
| | | }else{ |
| | | Services.getCustomerCode().subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | | self.customerImage = UIImage.jq_GenerateQRCode(with: m, width: 200) |
| | | self.image_qrCode.image = self.customerImage |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | // if let image = customerImage{ |
| | | // self.image_qrCode.image = image |
| | | // }else{ |
| | | // Services.getCustomerCode().subscribe(onNext: {data in |
| | | // if let m = data.data{ |
| | | // self.customerImage = UIImage.jq_GenerateQRCode(with: m, width: 200) |
| | | // self.image_qrCode.image = self.customerImage |
| | | // } |
| | | // }).disposed(by: disposeBag) |
| | | // } |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="咨询客服" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WL0-dE-4xa"> |
| | | <rect key="frame" x="172" y="803.66666666666663" width="49.333333333333343" height="14.333333333333371"/> |
| | | <rect key="frame" x="172.66666666666666" y="803.66666666666663" width="48" height="14.333333333333371"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="12"/> |
| | | <color key="textColor" red="0.098039215686274508" green="0.12941176470588234" blue="0.24313725490196078" alpha="0.67000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="2kC-yj-fW4"> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="2kC-yj-fW4"> |
| | | <rect key="frame" x="148.66666666666666" y="703.66666666666663" width="96" height="96"/> |
| | | <color key="backgroundColor" red="0.098039215690000001" green="0.12941176469999999" blue="0.24313725489999999" alpha="0.67000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="96" id="Idf-Z4-2b1"/> |
| | | <constraint firstAttribute="height" constant="96" id="n5B-wR-B6d"/> |
| | |
| | | |
| | | import UIKit |
| | | import RxSwift |
| | | import JQTools |
| | | |
| | | class ContactCustomerViewModel:RefreshInnerModel<CommonQuestionModel>{ |
| | | override func api() -> (Observable<BaseResponse<BaseResponseList<CommonQuestionModel>>>)? { |
| | |
| | | class ContactCustomerVC: BaseVC { |
| | | |
| | | @IBOutlet weak var tableView: UITableView! |
| | | @IBOutlet weak var image_qrCode: UIImageView! |
| | | private var customerImageView:UIImageView? |
| | | |
| | | private var headView:UIView = { |
| | | let v = UIView() |
| | | return v |
| | | }() |
| | | |
| | | private var viewModel = ContactCustomerViewModel() |
| | | private var customerImage:UIImage? |
| | |
| | | super.viewDidLoad() |
| | | title = "联系客服" |
| | | |
| | | headView.bounds = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: 248) |
| | | customerImageView = UIImageView() |
| | | headView.addSubview(customerImageView!) |
| | | customerImageView!.snp.makeConstraints { make in |
| | | make.top.equalTo(50.5) |
| | | make.centerX.equalToSuperview() |
| | | make.width.height.equalTo(130.8) |
| | | } |
| | | |
| | | let hintL = UILabel() |
| | | hintL.text = "扫码添加客服微信" |
| | | hintL.textColor = UIColor(hexString: "#333333") |
| | | hintL.font = .systemFont(ofSize: 13, weight: .medium) |
| | | headView.addSubview(hintL) |
| | | hintL.snp.makeConstraints { make in |
| | | make.top.equalTo(customerImageView!.snp.bottom).offset(13) |
| | | make.centerX.equalToSuperview() |
| | | } |
| | | |
| | | tableView.tableHeaderView = headView |
| | | tableView.separatorStyle = .none |
| | | tableView.backgroundColor = .clear |
| | | tableView.delegate = self |
| | | tableView.dataSource = self |
| | | tableView.showsVerticalScrollIndicator = false |
| | |
| | | |
| | | Services.getCustomerCode().subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | | self.customerImage = UIImage.jq_GenerateQRCode(with: m, width: 200) |
| | | self.image_qrCode.image = self.customerImage |
| | | self.customerImageView?.sd_setImage(with: URL(string: m)) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:))) |
| | | longPress.minimumPressDuration = 0.8 |
| | | image_qrCode.isUserInteractionEnabled = true |
| | | image_qrCode.addGestureRecognizer(longPress) |
| | | // let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:))) |
| | | // longPress.minimumPressDuration = 0.8 |
| | | // image_qrCode.isUserInteractionEnabled = true |
| | | // image_qrCode.addGestureRecognizer(longPress) |
| | | } |
| | | |
| | | @objc private func longPressCopyAction(_ gesture:UILongPressGestureRecognizer){ |
| | | if gesture.state == .began{ |
| | | if let img = image_qrCode.image{ |
| | | image_qrCode.isUserInteractionEnabled = false |
| | | UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil) |
| | | alertSuccess(msg: "保存成功") |
| | | } |
| | | } |
| | | // if gesture.state == .began{ |
| | | // if let img = image_qrCode.image{ |
| | | // image_qrCode.isUserInteractionEnabled = false |
| | | // UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil) |
| | | // alertSuccess(msg: "保存成功") |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | |
| | |
| | | return cell |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { |
| | | return 51 |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { |
| | | |
| | | var headView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "headerView") |
| | | if headView == nil{ |
| | | headView = UITableViewHeaderFooterView(reuseIdentifier: "headerView") |
| | | headView?.contentView.backgroundColor = .white |
| | | let label = UILabel() |
| | | label.text = "问题类型" |
| | | label.font = .systemFont(ofSize: 15, weight: .bold) |
| | | headView?.contentView.addSubview(label) |
| | | label.snp.makeConstraints { make in |
| | | make.left.equalTo(18) |
| | | make.bottom.equalToSuperview().offset(-4.5) |
| | | } |
| | | } |
| | | headView?.backgroundColor = .white |
| | | return headView |
| | | } |
| | | |
| | | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
| | | return viewModel.dataSource.value?.list.count ?? 0 |
| | | } |
| | |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ContactCustomerVC" customModule="XQMuse" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="image_qrCode" destination="5jI-tQ-uLM" id="Fxg-dZ-zU2"/> |
| | | <outlet property="tableView" destination="cf6-0I-xxB" id="kE1-aF-snG"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_voice_top" translatesAutoresizingMaskIntoConstraints="NO" id="eRQ-03-F3I"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="297"/> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_task_f" translatesAutoresizingMaskIntoConstraints="NO" id="d1C-cp-vrj"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qdl-41-EV1"> |
| | | <rect key="frame" x="130.33333333333331" y="106.66666666666667" width="132.33333333333331" height="132.33333333333331"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="5jI-tQ-uLM"> |
| | | <rect key="frame" x="0.0" y="0.0" width="132.33333333333334" height="132.33333333333334"/> |
| | | </imageView> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="132.5" id="3xI-p5-QcI"/> |
| | | <constraint firstAttribute="trailing" secondItem="5jI-tQ-uLM" secondAttribute="trailing" id="75F-nx-DFC"/> |
| | | <constraint firstItem="5jI-tQ-uLM" firstAttribute="top" secondItem="Qdl-41-EV1" secondAttribute="top" id="AvE-uP-sXr"/> |
| | | <constraint firstItem="5jI-tQ-uLM" firstAttribute="leading" secondItem="Qdl-41-EV1" secondAttribute="leading" id="DpG-ZI-XEO"/> |
| | | <constraint firstAttribute="height" constant="132.5" id="ffo-MU-W1a"/> |
| | | <constraint firstAttribute="bottom" secondItem="5jI-tQ-uLM" secondAttribute="bottom" id="g7M-oD-LE2"/> |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fc3-8Q-v5s"> |
| | | <rect key="frame" x="145" y="252.00000000000003" width="103.33333333333331" height="31.333333333333343"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12.5" id="GbW-jb-gwo"/> |
| | | </constraints> |
| | | <string key="text">扫码添加客服微信 |
| | | (长按保存图片)</string> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kph-H0-jYO"> |
| | | <rect key="frame" x="0.0" y="339.66666666666674" width="393" height="478.33333333333326"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="问题类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aYd-s7-IT0"> |
| | | <rect key="frame" x="17.999999999999996" y="31.999999999999996" width="59.666666666666657" height="14.333333333333332"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="14.5" id="ZBR-Iq-kZa"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="cf6-0I-xxB"> |
| | | <rect key="frame" x="0.0" y="50.999999999999972" width="393" height="427.33333333333326"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <rect key="frame" x="0.0" y="59" width="393" height="759"/> |
| | | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </tableView> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="aYd-s7-IT0" firstAttribute="top" secondItem="Kph-H0-jYO" secondAttribute="top" constant="32" id="1LK-Hp-TQm"/> |
| | | <constraint firstAttribute="bottom" secondItem="cf6-0I-xxB" secondAttribute="bottom" id="5tn-Bo-4he"/> |
| | | <constraint firstItem="aYd-s7-IT0" firstAttribute="leading" secondItem="Kph-H0-jYO" secondAttribute="leading" constant="18" id="GqS-Np-07g"/> |
| | | <constraint firstItem="cf6-0I-xxB" firstAttribute="leading" secondItem="Kph-H0-jYO" secondAttribute="leading" id="Ofc-BY-Wqi"/> |
| | | <constraint firstItem="cf6-0I-xxB" firstAttribute="top" secondItem="aYd-s7-IT0" secondAttribute="bottom" constant="4.5" id="gpz-TQ-avQ"/> |
| | | <constraint firstAttribute="trailing" secondItem="cf6-0I-xxB" secondAttribute="trailing" id="j7I-Y3-ieq"/> |
| | | </constraints> |
| | | </view> |
| | | </subviews> |
| | | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="fc3-8Q-v5s" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="6Ul-xw-5ay"/> |
| | | <constraint firstItem="eRQ-03-F3I" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="6gV-vl-oVQ"/> |
| | | <constraint firstItem="fc3-8Q-v5s" firstAttribute="top" secondItem="Qdl-41-EV1" secondAttribute="bottom" constant="13" id="7zz-7V-nFb"/> |
| | | <constraint firstItem="Qdl-41-EV1" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="47.5" id="9lB-L9-Qr2"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="Kph-H0-jYO" secondAttribute="bottom" id="AyY-VT-MA6"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Kph-H0-jYO" secondAttribute="trailing" id="RCa-FS-6eC"/> |
| | | <constraint firstItem="eRQ-03-F3I" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="S88-LS-Gq1"/> |
| | | <constraint firstItem="Qdl-41-EV1" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="UgY-bA-Bs9"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="eRQ-03-F3I" secondAttribute="trailing" id="b9W-Du-LpC"/> |
| | | <constraint firstItem="Kph-H0-jYO" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="bse-U0-2rA"/> |
| | | <constraint firstItem="Kph-H0-jYO" firstAttribute="top" secondItem="eRQ-03-F3I" secondAttribute="bottom" constant="42.5" id="hlP-SK-cY2"/> |
| | | <constraint firstAttribute="bottom" secondItem="d1C-cp-vrj" secondAttribute="bottom" id="Ak8-y8-vAD"/> |
| | | <constraint firstItem="d1C-cp-vrj" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="Bug-6T-IZY"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="d1C-cp-vrj" secondAttribute="trailing" id="FsY-3f-DVG"/> |
| | | <constraint firstItem="cf6-0I-xxB" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" id="Fu8-xi-zh2"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="cf6-0I-xxB" secondAttribute="bottom" id="SnM-6n-0ji"/> |
| | | <constraint firstItem="cf6-0I-xxB" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="Zgg-py-H3r"/> |
| | | <constraint firstItem="d1C-cp-vrj" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="ami-vu-Rsz"/> |
| | | <constraint firstItem="cf6-0I-xxB" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="dyc-nI-4mt"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="59" y="21"/> |
| | | <point key="canvasLocation" x="58.778625954198468" y="20.422535211267608"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="bg_voice_top" width="390" height="297"/> |
| | | <image name="bg_task_f" width="300" height="263"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </systemColor> |
| | |
| | | @IBAction func shareAction(_ sender: UIButton) { |
| | | |
| | | let string = String(format: "%@%@?userId=%ld", ShareUrl,"/poster/poster",UserViewModel.getAvatarInfo().id) |
| | | ShareView.show(URL(string: string)!, title: "心泉疗愈", desc: "心泉疗愈1") |
| | | ShareView.show(URL(string: string)!, title: "心泉·疗愈", desc: "心泉疗愈1") |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | self.image_level.sd_setImage(with: URL(string: m.levelIcon)) |
| | | self.label_currentLevel.text = String(format: "%ld/%ld", m.level,10) |
| | | self.label_currentLevel.text = String(format: "%ld/%ld", m.growthValue,m.nextLevel) |
| | | |
| | | self.label_nextLevel.isHidden = m.level == 10 |
| | | self.label_nextLevel.text = String(format: "你离下一等级还差%ld经验值,加油!", m.growthValue,m.nextLevel) |
| | | self.label_nextLevel.text = String(format: "你离下一等级还差%ld经验值,加油!",m.differenceLevel) |
| | | |
| | | self.webView.loadHTMLString(m.content.jq_wrapHtml(), baseURL: nil) |
| | | } |
| | |
| | | } |
| | | @IBAction func completeAction(_ sender: UIButton) { |
| | | Services.deleteUser().subscribe(onNext: {data in |
| | | CommonAlertView.show(title: "提示", content: "已提交注销申请,请耐心等待平台审核", cancelStr: nil, completeStr: "确定", isSingle: true) { _ in |
| | | CommonAlertView.show(title: "提示", content: "注销成功", cancelStr: nil, completeStr: "确定", isSingle: true) { _ in |
| | | sceneDelegate?.needLogin() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | @IBAction func quitAction(_ sender: UIButton) { |
| | | self.navigationController?.popViewController() |
| | | } |
| | | |
| | | |
| | | override func viewDidLayoutSubviews() { |
| | | super.viewDidLayoutSubviews() |
| | | btn_logout.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20) |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <color key="value" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="quitAction:" destination="-1" eventType="touchUpInside" id="IMV-fK-p8K"/> |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4Xo-o1-mrz"> |
| | | <rect key="frame" x="170.66666666666663" y="0.0" width="142.33333333333337" height="40"/> |
| | |
| | | @IBOutlet weak var btn_exchange: UIButton! |
| | | @IBOutlet weak var btn_logout: UIButton! |
| | | @IBOutlet weak var btn_dispel: TapBtn! |
| | | @IBOutlet weak var label_version: UILabel! |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | |
| | | btn_exchange.isHidden = UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true |
| | | btn_logout.isHidden = UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true |
| | | btn_dispel.isHidden = UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true |
| | | |
| | | if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String { |
| | | label_version.text = JQTool.currentVersion() |
| | | } |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | push(vc: vc) |
| | | } |
| | | |
| | | @IBAction func exchangeAccountAction(_ sender: UIButton) { |
| | | CommonAlertView.show(title: "提示", content: "是否切换当前账号?") {[weak self] s in |
| | | if s{ |
| | | sceneDelegate?.needLogin() |
| | | self?.btn_exchange.isHidden = true |
| | | self?.btn_logout.isHidden = true |
| | | self?.btn_dispel.isHidden = true |
| | | } |
| | | @IBAction func checkVersion(_ sender: TapBtn) { |
| | | JQTool.checkVersion(appid: "") { stat, model, url in |
| | | |
| | | } |
| | | } |
| | | |
| | | @IBAction func quitAccountAction(_ sender: UIButton) { |
| | | CommonAlertView.show(title: "提示", content: "是否退出当前账号?") {[weak self] s in |
| | | if s{ |
| | | @IBAction func exchangeAccountAction(_ sender: UIButton) { |
| | | // CommonAlertView.show(title: "提示", content: "是否切换当前账号?") {[weak self] s in |
| | | // if s{ |
| | | sceneDelegate?.needLogin() |
| | | self?.btn_exchange.isHidden = true |
| | | self?.btn_logout.isHidden = true |
| | | self?.btn_dispel.isHidden = true |
| | | self.btn_exchange.isHidden = true |
| | | self.btn_logout.isHidden = true |
| | | self.btn_dispel.isHidden = true |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | |
| | | @IBAction func quitAccountAction(_ sender: UIButton) { |
| | | // CommonAlertView.show(title: "提示", content: "是否退出当前账号?") {[weak self] s in |
| | | // if s{ |
| | | sceneDelegate?.needLogin() |
| | | self.btn_exchange.isHidden = true |
| | | self.btn_logout.isHidden = true |
| | | self.btn_dispel.isHidden = true |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | |
| | | <outlet property="btn_dispel" destination="ta8-pP-aEf" id="cYz-J5-XFi"/> |
| | | <outlet property="btn_exchange" destination="yK9-0E-44J" id="Dlg-Zq-IOs"/> |
| | | <outlet property="btn_logout" destination="7uR-yB-LEb" id="scc-Tc-lfH"/> |
| | | <outlet property="label_version" destination="IK1-Xd-41F" id="pKX-Sr-qOw"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="QyJ-S3-Hmq"> |
| | | <rect key="frame" x="7" y="83" width="382" height="240"/> |
| | | <rect key="frame" x="7" y="83" width="382" height="288"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F30-OV-73c" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="0.0" width="382" height="48"/> |
| | |
| | | <action selector="aboutUsAction:" destination="-1" eventType="touchUpInside" id="N3z-Cr-91f"/> |
| | | </connections> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ta8-pP-aEf" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UeB-2r-ZNF" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="144" width="382" height="48"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="版本更新" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gMu-uO-B2v"> |
| | | <rect key="frame" x="11.666666666666668" y="15" width="59.666666666666657" height="18"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="Fcf-aE-CQR"> |
| | | <rect key="frame" x="360" y="18.666666666666657" width="6" height="10.666666666666664"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="L5Z-5G-cW3"> |
| | | <rect key="frame" x="8.6666666666666572" y="47.666666666666686" width="365" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.85490196080000003" green="0.85490196080000003" blue="0.85490196080000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.5" id="J75-p6-6cN"/> |
| | | </constraints> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.0.0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IK1-Xd-41F"> |
| | | <rect key="frame" x="318.33333333333331" y="15" width="31.666666666666686" height="18"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="15"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="L5Z-5G-cW3" firstAttribute="leading" secondItem="UeB-2r-ZNF" secondAttribute="leading" constant="8.5" id="2Mo-vS-HT5"/> |
| | | <constraint firstItem="Fcf-aE-CQR" firstAttribute="centerY" secondItem="UeB-2r-ZNF" secondAttribute="centerY" id="5sX-Qo-RuQ"/> |
| | | <constraint firstAttribute="bottom" secondItem="L5Z-5G-cW3" secondAttribute="bottom" id="8Na-OA-mMq"/> |
| | | <constraint firstAttribute="trailing" secondItem="L5Z-5G-cW3" secondAttribute="trailing" constant="8.5" id="DA3-NI-kTy"/> |
| | | <constraint firstAttribute="trailing" secondItem="Fcf-aE-CQR" secondAttribute="trailing" constant="16" id="Dl1-ch-jrV"/> |
| | | <constraint firstItem="Fcf-aE-CQR" firstAttribute="leading" secondItem="IK1-Xd-41F" secondAttribute="trailing" constant="10" id="cHc-uL-Z1x"/> |
| | | <constraint firstItem="IK1-Xd-41F" firstAttribute="centerY" secondItem="gMu-uO-B2v" secondAttribute="centerY" id="hp3-w7-pnw"/> |
| | | <constraint firstItem="gMu-uO-B2v" firstAttribute="leading" secondItem="UeB-2r-ZNF" secondAttribute="leading" constant="11.5" id="lHO-Pt-WQF"/> |
| | | <constraint firstItem="gMu-uO-B2v" firstAttribute="centerY" secondItem="UeB-2r-ZNF" secondAttribute="centerY" id="nLT-wN-42F"/> |
| | | <constraint firstAttribute="height" constant="48" id="wXm-em-1ey"/> |
| | | </constraints> |
| | | <connections> |
| | | <action selector="checkVersion:" destination="-1" eventType="touchUpInside" id="qNB-Fr-hcr"/> |
| | | </connections> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ta8-pP-aEf" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="192" width="382" height="48"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注销账号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tVJ-zS-iAQ"> |
| | | <rect key="frame" x="11.666666666666668" y="15" width="59.666666666666657" height="18"/> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="azP-kc-GSH"> |
| | | <rect key="frame" x="360" y="18.666666666666657" width="6" height="10.666666666666664"/> |
| | | <rect key="frame" x="360" y="18.666666666666686" width="6" height="10.666666666666664"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nd7-cz-feh"> |
| | | <rect key="frame" x="8.6666666666666572" y="47.666666666666686" width="365" height="0.3333333333333357"/> |
| | |
| | | </connections> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UKx-wx-JbB" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | | <rect key="frame" x="0.0" y="192" width="382" height="48"/> |
| | | <rect key="frame" x="0.0" y="240" width="382" height="48"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="协议政策" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bcv-yx-5hJ"> |
| | | <rect key="frame" x="11.666666666666668" y="15" width="59.666666666666657" height="18"/> |
| | |
| | | </userDefinedRuntimeAttributes> |
| | | </stackView> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yK9-0E-44J"> |
| | | <rect key="frame" x="7" y="332" width="382" height="49.666666666666686"/> |
| | | <rect key="frame" x="7" y="380" width="382" height="49.666666666666686"/> |
| | | <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="49.5" id="7pi-r8-XGT"/> |
| | |
| | | </connections> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7uR-yB-LEb"> |
| | | <rect key="frame" x="7" y="391" width="382" height="49.666666666666686"/> |
| | | <rect key="frame" x="7" y="439" width="382" height="49.666666666666686"/> |
| | | <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="49.5" id="gU8-HE-2Kr"/> |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FLL-3F-OgN"> |
| | | <rect key="frame" x="14" y="100" width="365" height="259"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="QxB-tg-ivp"> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_ccc" translatesAutoresizingMaskIntoConstraints="NO" id="QxB-tg-ivp"> |
| | | <rect key="frame" x="0.0" y="0.0" width="365" height="259"/> |
| | | <color key="backgroundColor" red="0.59215686270000001" green="0.59215686270000001" blue="0.59215686270000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="可用余额(元)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5wO-F5-AbK"> |
| | | <rect key="frame" x="135" y="53" width="95.333333333333314" height="21"/> |
| | | <rect key="frame" x="136" y="53" width="93" height="21"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="21" id="grS-X9-lbC"/> |
| | | </constraints> |
| | |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | | <image name="bg_ccc" width="362" height="258"/> |
| | | <image name="bg_voice_top" width="390" height="297"/> |
| | | <systemColor name="systemBackgroundColor"> |
| | | <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> |
| | |
| | | @IBOutlet weak var tf_email: QMUITextField! |
| | | @IBOutlet weak var image_placeholder: UIImageView! |
| | | |
| | | private var userClipAvar:UIImage? |
| | | |
| | | private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小 |
| | | private var clipFrame:CGRect{ |
| | | get{ |
| | |
| | | super.viewDidLoad() |
| | | title = "个人资料" |
| | | |
| | | image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty |
| | | |
| | | let saveBtn = UIButton(type: .custom) |
| | | saveBtn.setTitle("保存", for: .normal) |
| | | saveBtn.titleLabel?.font = .systemFont(ofSize: 15) |
| | | saveBtn.setTitleColor(UIColor(hexString: "#353535"), for: .normal) |
| | | saveBtn.addTarget(self, action: #selector(saveAction), for: .touchUpInside) |
| | | navigationItem.rightBarButtonItem = UIBarButtonItem(customView: saveBtn) |
| | | |
| | | // image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty |
| | | |
| | | if let url = URL(string: UserViewModel.getAvatarInfo().avatar){ |
| | | image_user.sd_setImage(with: url) |
| | |
| | | tf_birthland.text = UserViewModel.getAvatarInfo().hometown |
| | | tf_email.text = UserViewModel.getAvatarInfo().email |
| | | |
| | | yy_popBlock = {[weak self] in |
| | | guard let weakSelf = self else { return } |
| | | let nickname = weakSelf.tf_nickName.text |
| | | let realname = weakSelf.tf_realName.text |
| | | let signature = weakSelf.tf_sign.text |
| | | let gender = GenderType.GenderBy(weakSelf.tf_gender.text!) |
| | | let birthday = weakSelf.tf_birthday.text |
| | | let education = weakSelf.tf_degree.text |
| | | let industry = weakSelf.tf_industry.text |
| | | let company = weakSelf.tf_company.text |
| | | let occupation = weakSelf.tf_job.text |
| | | let location = weakSelf.tf_address.text |
| | | let hometown = weakSelf.tf_birthland.text |
| | | let email = weakSelf.tf_email.text |
| | | tf_nickName.maximumTextLength = 12 |
| | | |
| | | if nickname != UserViewModel.getAvatarInfo().nickname |
| | | || realname != UserViewModel.getAvatarInfo().realname |
| | | || signature != UserViewModel.getAvatarInfo().signature |
| | | || gender != UserViewModel.getAvatarInfo().gender |
| | | || birthday != UserViewModel.getAvatarInfo().birthday |
| | | || education != UserViewModel.getAvatarInfo().education |
| | | || industry != UserViewModel.getAvatarInfo().industry |
| | | || company != UserViewModel.getAvatarInfo().company |
| | | || occupation != UserViewModel.getAvatarInfo().occupation |
| | | || location != UserViewModel.getAvatarInfo().location |
| | | || hometown != UserViewModel.getAvatarInfo().hometown |
| | | || email != UserViewModel.getAvatarInfo().email{ |
| | | |
| | | CommonAlertView.show(title: "提示", content: "是否保存修改?",cancelStr: "不保存",completeStr: "保存") { state in |
| | | if state{ |
| | | Services.updateUserInfo(birthday: birthday, company: company, education: education, email: email, gender: gender, hometown: hometown, industry: industry, location: location, nickname: nickname, realname: realname, occupation: occupation, signature: signature).subscribe(onNext: {data in |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) |
| | | weakSelf.navigationController?.popViewController(animated: true) |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | }else{ |
| | | weakSelf.navigationController?.popViewController(animated: true) |
| | | } |
| | | } |
| | | }else{ |
| | | weakSelf.navigationController?.popViewController(animated: true) |
| | | } |
| | | } |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | image_user.addGestureRecognizer(tap) |
| | | } |
| | | |
| | | @objc func selectUserProfile(){ |
| | | CommonAlertSheetView.show(items: ["拍照","从相册选择"]) {[unowned self] index in |
| | | if index == 0{ |
| | | @objc func saveAction(){ |
| | | let nickname = tf_nickName.text |
| | | let realname = tf_realName.text |
| | | let signature = tf_sign.text |
| | | let gender = GenderType.GenderBy(tf_gender.text!) |
| | | let birthday = tf_birthday.text |
| | | let education = tf_degree.text |
| | | let industry = tf_industry.text |
| | | let company = tf_company.text |
| | | let occupation = tf_job.text |
| | | let location = tf_address.text |
| | | let hometown = tf_birthland.text |
| | | let email = tf_email.text |
| | | |
| | | guard UIImagePickerController.isSourceTypeAvailable(.camera) else{ |
| | | alertError(msg: "当前设备相机不可用");return |
| | | Services.updateUserInfo(birthday: birthday, company: company, education: education, email: email, gender: gender, hometown: hometown, industry: industry, location: location, nickname: nickname, realname: realname, occupation: occupation, signature: signature).subscribe(onNext: {data in |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) |
| | | alertSuccess(msg: "修改成功") |
| | | }).disposed(by: disposeBag) |
| | | |
| | | userClipAvar?.uploadImg().subscribe(onNext: {[weak self]imageUrl in |
| | | guard let weakSelf = self else { return } |
| | | Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in |
| | | weakSelf.image_user.sd_setImage(with: URL(string: imageUrl.jq_urlEncoded())!) |
| | | weakSelf.image_placeholder.isHidden = true |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | let p = UIImagePickerController() |
| | | p.delegate = self |
| | | p.modalPresentationStyle = .fullScreen |
| | | p.allowsEditing = true |
| | | p.sourceType = .camera |
| | | p.cameraDevice = .front |
| | | self.present(p, animated: true) |
| | | }else{ |
| | | @objc func selectUserProfile(){ |
| | | CommonAlertSheetView.show(items: ["从相册选择"]) {[unowned self] index in |
| | | if index == 0{ |
| | | |
| | | let p = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self) |
| | | p!.modalPresentationStyle = .fullScreen |
| | | p!.allowTakeVideo = false |
| | |
| | | p!.allowCrop = true |
| | | p!.cropRect = self.clipFrame |
| | | self.present(p!, animated: true, completion: nil) |
| | | |
| | | // guard UIImagePickerController.isSourceTypeAvailable(.camera) else{ |
| | | // alertError(msg: "当前设备相机不可用");return |
| | | // } |
| | | // |
| | | // let p = UIImagePickerController() |
| | | // p.delegate = self |
| | | // p.modalPresentationStyle = .fullScreen |
| | | // p.allowsEditing = true |
| | | // p.sourceType = .camera |
| | | // p.cameraDevice = .front |
| | | // self.present(p, animated: true) |
| | | }else{ |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | if textField == tf_gender{ |
| | | let items = ["男","女","保密"] |
| | | CommonAlertSheetView.show(items: items) { index in |
| | | CommonAlertSheetView.show(items: items,hiddenTitle: true) { index in |
| | | guard textField.text != items[index] else {return} |
| | | if items[index] == "保密"{ |
| | | textField.text = "" |
| | | }else{ |
| | | textField.text = items[index] |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | return false |
| | | } |
| | | |
| | | return false |
| | | } |
| | | } |
| | |
| | | picker.selectedAssets = NSMutableArray(array: assets) |
| | | |
| | | if let photo = photos.first{ |
| | | photo.jq_scaled(to: CGSize(width: 250, height: 250)).uploadImg().subscribe(onNext: {[weak self]imageUrl in |
| | | guard let weakSelf = self else { return } |
| | | Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in |
| | | weakSelf.image_placeholder.isHidden = true |
| | | weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!) |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | }).disposed(by: disposeBag) |
| | | self.userClipAvar = photo.jq_scaled(to: CGSize(width: 250, height: 250)) |
| | | // self.image_placeholder.isHidden = true |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | unowned let weakSelf = self |
| | | corpperVC.imageCropperHandler { (vc, image) in |
| | | image.uploadImg().subscribe(onNext: {imageUrl in |
| | | Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in |
| | | weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!) |
| | | weakSelf.image_placeholder.isHidden = true |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | weakSelf.userClipAvar = image |
| | | // weakSelf.image_placeholder.isHidden = true |
| | | } cancelClouse: { |
| | | corpperVC.dismiss(animated: true) { |
| | | |
| | |
| | | <rect key="frame" x="0.0" y="59" width="393" height="759"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Qz0-bC-W38"> |
| | | <rect key="frame" x="146.66666666666666" y="80" width="100" height="100"/> |
| | | <rect key="frame" x="146.66666666666666" y="27" width="100" height="100"/> |
| | | <color key="backgroundColor" red="0.4039215686" green="0.4039215686" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="100" id="1cn-SA-RtQ"/> |
| | |
| | | </userDefinedRuntimeAttributes> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_imgPlaceHolder" translatesAutoresizingMaskIntoConstraints="NO" id="cF8-lO-m5L"> |
| | | <rect key="frame" x="180.66666666666666" y="114.33333333333333" width="31.666666666666657" height="31.333333333333329"/> |
| | | <rect key="frame" x="180.66666666666666" y="61.333333333333336" width="31.666666666666657" height="31.333333333333336"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="31.5" id="E7F-rL-NBo"/> |
| | | <constraint firstAttribute="width" constant="31.5" id="NeW-Nj-hGD"/> |
| | | </constraints> |
| | | </imageView> |
| | | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="ZqJ-fT-wgQ"> |
| | | <rect key="frame" x="0.0" y="210" width="393" height="600"/> |
| | | <rect key="frame" x="0.0" y="157" width="393" height="600"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W8z-Hs-75j"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fv9-E0-tp4"> |
| | | <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <rect key="frame" x="16" y="17.333333333333343" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="xDs-61-9P0" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zxo-Oa-ujz"> |
| | | <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="7Wv-tW-0JD" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="签名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="imv-PF-klz"> |
| | | <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="HRg-rk-jcD" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="30" id="fzZ-XP-FuZ"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请选择" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="eyM-56-9BV" customClass="QMUITextField"> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="eyM-56-9BV" customClass="QMUITextField"> |
| | | <rect key="frame" x="46" y="0.0" width="320" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="30" id="TBD-JC-CIF"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请选择" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mG1-O5-m2h" customClass="QMUITextField"> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mG1-O5-m2h" customClass="QMUITextField"> |
| | | <rect key="frame" x="46" y="0.0" width="320" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | </userDefinedRuntimeAttributes> |
| | | </textField> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8aT-z4-IIe"> |
| | | <rect key="frame" x="16" y="49.666666666666629" width="361" height="0.3333333333333357"/> |
| | | <rect key="frame" x="16" y="49.666666666666686" width="361" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.5" id="zp9-cE-Fcd"/> |
| | |
| | | <rect key="frame" x="0.0" y="250" width="393" height="50"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学历" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lr9-FF-35j"> |
| | | <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="NG9-8J-4PE" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="行业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vsd-1g-qdV"> |
| | | <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="OLk-lo-tWN" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="公司" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bCL-7v-fEV"> |
| | | <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="oBn-y6-tL8" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="职业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F4W-m1-aF5"> |
| | | <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Shq-k9-lMd" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="所在地" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4yt-IS-YWS"> |
| | | <rect key="frame" x="16" y="17.333333333333371" width="39" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="apd-WL-Sql" customClass="QMUITextField"> |
| | | <rect key="frame" x="55" y="0.0" width="322" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="故乡" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3mI-9I-yxT"> |
| | | <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="8Mk-n3-NN5" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="邮箱" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qeP-Ob-ndd"> |
| | | <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="S2r-9H-Zt2" customClass="QMUITextField"> |
| | | <rect key="frame" x="42" y="0.0" width="335" height="50"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/> |
| | | <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="13"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | <userDefinedRuntimeAttributes> |
| | | <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor"> |
| | |
| | | <constraint firstAttribute="bottom" secondItem="ZqJ-fT-wgQ" secondAttribute="bottom" id="J9F-4M-m4d"/> |
| | | <constraint firstItem="ZqJ-fT-wgQ" firstAttribute="top" secondItem="Qz0-bC-W38" secondAttribute="bottom" constant="30" id="Wv9-8J-cFo"/> |
| | | <constraint firstAttribute="trailing" secondItem="ZqJ-fT-wgQ" secondAttribute="trailing" id="ZN4-gA-jGw"/> |
| | | <constraint firstItem="Qz0-bC-W38" firstAttribute="top" secondItem="QFv-GO-e0l" secondAttribute="top" constant="80" id="aZ4-SM-G5A"/> |
| | | <constraint firstItem="Qz0-bC-W38" firstAttribute="top" secondItem="QFv-GO-e0l" secondAttribute="top" constant="27" id="aZ4-SM-G5A"/> |
| | | <constraint firstItem="ZqJ-fT-wgQ" firstAttribute="leading" secondItem="QFv-GO-e0l" secondAttribute="leading" id="tK0-be-0Qw"/> |
| | | </constraints> |
| | | </scrollView> |
| | |
| | | |
| | | class VIPCenterVC: BaseVC { |
| | | |
| | | @IBOutlet weak var bg_vip: UIImageView! |
| | | @IBOutlet weak var label_vipHint: UILabel! |
| | | @IBOutlet weak var collectionView: UICollectionView! |
| | | @IBOutlet weak var btn_isRead: UIButton! |
| | | @IBOutlet weak var label_expirtTime: UILabel! |
| | | private var selectIndex = 0 |
| | | |
| | | private var productList = Set<String>() |
| | |
| | | return p1.price.doubleValue < p2.price.doubleValue |
| | | } |
| | | self.collectionView.reloadData() |
| | | } |
| | | |
| | | |
| | | if UserViewModel.getAvatarInfo().isVip == .yes{ |
| | | self.bg_vip.image = UIImage(named: "bg_vip") |
| | | self.label_vipHint.text = "您将享受所有会员专享音频,尽情畅游心泉·疗愈世界" |
| | | self.label_expirtTime.text = UserViewModel.getAvatarInfo().vipExpireTime.components(separatedBy: " ").first! + "到期" |
| | | }else{ |
| | | self.bg_vip.image = UIImage(named: "bg_vip_u") |
| | | self.label_vipHint.text = "升级为会员,解锁会员专属体验" |
| | | self.label_expirtTime.text = "你还未开通会员服务" |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | label_price = UILabel() |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "199", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString |
| | | label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "0", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString |
| | | label_price.textAlignment = .center |
| | | label_price.font = .systemFont(ofSize: 16, weight: .medium) |
| | | contentView.addSubview(label_price) |
| | |
| | | <objects> |
| | | <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="VIPCenterVC" customModule="XQMuse" customModuleProvider="target"> |
| | | <connections> |
| | | <outlet property="bg_vip" destination="w2X-DC-MsM" id="eUS-mm-b27"/> |
| | | <outlet property="btn_isRead" destination="6ZY-8B-NMH" id="vPj-36-S58"/> |
| | | <outlet property="collectionView" destination="Ue5-Zy-CjC" id="lPV-ex-sdB"/> |
| | | <outlet property="label_expirtTime" destination="9TG-o4-3iP" id="gfB-ZZ-lSf"/> |
| | | <outlet property="label_vipHint" destination="teL-7U-G1S" id="PaY-O3-zF6"/> |
| | | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| | | </connections> |
| | | </placeholder> |
| | |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_vip_u" translatesAutoresizingMaskIntoConstraints="NO" id="w2X-DC-MsM"> |
| | | <rect key="frame" x="0.0" y="0.0" width="365" height="113.33333333333333"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="到期" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9TG-o4-3iP"> |
| | | <rect key="frame" x="332.66666666666669" y="87.333333333333329" width="14" height="9"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="7"/> |
| | | <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" 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="YxW-A0-Oga"> |
| | | <rect key="frame" x="19.666666666666657" y="23.333333333333329" width="142" height="21"/> |
| | | <constraints> |
| | |
| | | <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" 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="teL-7U-G1S"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="升级为会员,解锁会员专属体验" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="teL-7U-G1S"> |
| | | <rect key="frame" x="19" y="85.999999999999986" width="139.33333333333334" height="12"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="10"/> |
| | | <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | |
| | | </label> |
| | | </subviews> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="9TG-o4-3iP" secondAttribute="trailing" constant="18.5" id="6XA-hA-h9j"/> |
| | | <constraint firstItem="9TG-o4-3iP" firstAttribute="centerY" secondItem="teL-7U-G1S" secondAttribute="centerY" id="FJQ-kB-MaP"/> |
| | | <constraint firstAttribute="width" secondItem="h8a-aO-hri" secondAttribute="height" multiplier="1:0.311" id="HXf-AV-84L"/> |
| | | <constraint firstAttribute="bottom" secondItem="w2X-DC-MsM" secondAttribute="bottom" id="Id9-B8-cpn"/> |
| | | <constraint firstAttribute="trailing" secondItem="w2X-DC-MsM" secondAttribute="trailing" id="UQH-42-3iR"/> |
| | |
| | | <constraint firstItem="Qa1-cj-VoU" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="m1A-Bv-NWm"/> |
| | | <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="VLP-Hy-naC" secondAttribute="trailing" id="ul0-Xj-7Nb"/> |
| | | </constraints> |
| | | <point key="canvasLocation" x="140" y="21"/> |
| | | <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/> |
| | | </view> |
| | | </objects> |
| | | <resources> |
| | |
| | | var showType: DisplayType = .horizontal |
| | | } |
| | | |
| | | struct MeditationModel:HandyJSON{ |
| | | class MeditationModel:HandyJSON{ |
| | | var backgroundUrl: String = "" |
| | | var cateId: Int = 0 |
| | | var chargeType:ChargeType = .free |
| | | var paidStatus:ConditionType = .no //是否购买 |
| | | var isBuy:ConditionType = .no //是否购买 |
| | | var coverDescription: String = "" |
| | | var coverUrl: String = "" |
| | | var detailDescription: String = "" |
| | |
| | | var iconUrl: String = "" |
| | | var id: Int = 0 |
| | | var questionCount:Int = 0 |
| | | var iosPrice: Int = 0 |
| | | var iosPrice: Double = 0 |
| | | var listingStatus: Int = 0 |
| | | var meditationTitle: String = "" |
| | | var realLearnedNum: Int = 0 |
| | |
| | | var favorite:ConditionType = .no // 是否收藏:1:是 2:否 |
| | | var tutor:String = "" |
| | | var meditationMusicList = [String]() |
| | | var meditationSecondList = [Int]() //时长 |
| | | |
| | | required init(){} |
| | | } |
| | | |
| | | class CommentModel:HandyJSON{ |
| | |
| | | var courseId:String? |
| | | } |
| | | |
| | | struct CourseModel:HandyJSON{ |
| | | class CourseModel:HandyJSON{ |
| | | var address:String = "" |
| | | var addressDetail:String = "" |
| | | var briefIntroduction:String = "" |
| | |
| | | var headers = [String]() |
| | | var id: Int = 0 |
| | | var businessId:Int = 0 // 课程/音频id 收藏用 |
| | | var iosPrice: Int = 0 |
| | | var iosPrice: Double = 0 |
| | | var isBuy: ConditionType = .no |
| | | var isVip: ConditionType = .no |
| | | var latitude: Int = 0 |
| | |
| | | |
| | | var list2 = [CourseModel]() |
| | | var list = [CourseItemModel]() |
| | | |
| | | required init(){} |
| | | } |
| | | |
| | | struct CourseItemModel:HandyJSON{ |
| | |
| | | var status: Int = 0 |
| | | var updateBy: String = "" |
| | | var updateTime: String = "" |
| | | var worth: Int = 0 |
| | | var worth: Double = 0 |
| | | } |
| | | |
| | | struct EnergyExchangeRecordModel:HandyJSON{ |
| | |
| | | var id: Int = 0 |
| | | var name: String = "" |
| | | var status:ConditionType = .no |
| | | var worth: Int = 0 |
| | | var worth: Double = 0 |
| | | var code:String = "" |
| | | } |
| | | |
| | |
| | | return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: true) |
| | | } |
| | | |
| | | /// 发送验证码 |
| | | /// 获取验证码 |
| | | class func sendCode(phone:String,type:SendCodeType)->Observable<BaseResponse<SimpleModel>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | params.interface(url: "/auth/app/sendCaptchaCode") |
| | |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | params.interface(url: "/user/client/app-user/updateUserAvatar") |
| | | .append(key: "avatar", value: imageUrl) |
| | | return NetworkRequest.request(params: params, method: .post, progress: true) |
| | | return NetworkRequest.request(params: params, method: .post, progress: false) |
| | | } |
| | | |
| | | /// 支付成功 |
| | |
| | | .append(key: "apipost_id", value: "37771d0cf0e312") |
| | | return NetworkRequest.request(params: params, method: .post, progress: false) |
| | | } |
| | | |
| | | class func getLunchPage()->Observable<BaseResponse<String>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | .interface(url: "/system/system/page/getPage") |
| | | return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: false) |
| | | } |
| | | } |
| | |
| | | @IBOutlet weak var tableView: UITableView! |
| | | @IBOutlet weak var cons_tableHei: NSLayoutConstraint! |
| | | @IBOutlet weak var cons_viewBottom: NSLayoutConstraint! |
| | | @IBOutlet weak var cons_titleH: NSLayoutConstraint! |
| | | @IBOutlet weak var view_title: UIView! |
| | | |
| | | private var items = [String]() |
| | | private var clouse:((Int)->Void)! |
| | | private var hiddenTitle:Bool = false |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | alpha = 0 |
| | | |
| | | cons_viewBottom.constant = -JQ_ScreenW |
| | | layoutIfNeeded() |
| | | tableView.delegate = self |
| | | tableView.dataSource = self |
| | | tableView.separatorStyle = .none |
| | | tableView.isScrollEnabled = false |
| | | tableView.register(CommonAlertSheetTCell.self, forCellReuseIdentifier: "TCell") |
| | | } |
| | | |
| | | static func show(items:[String],clouse:@escaping (Int)->Void){ |
| | | static func show(items:[String],hiddenTitle:Bool = false,clouse:@escaping (Int)->Void){ |
| | | let alertView = CommonAlertSheetView.jq_loadNibView() |
| | | alertView.hiddenTitle = hiddenTitle |
| | | alertView.cons_titleH.constant = hiddenTitle ? 0:56 |
| | | alertView.view_title.isHidden = hiddenTitle |
| | | |
| | | alertView.frame = sceneDelegate?.window?.frame ?? .zero |
| | | alertView.cons_tableHei.constant = CGFloat(items.count * 56) |
| | | sceneDelegate?.window?.addSubview(alertView) |
| | |
| | | |
| | | override func layoutSubviews() { |
| | | super.layoutSubviews() |
| | | let totalH = Double(items.count * 56) + UIDevice.jq_safeEdges.bottom + 56 |
| | | var totalH:Double = 0 |
| | | if hiddenTitle{ |
| | | totalH = Double(items.count * 56) + UIDevice.jq_safeEdges.bottom + 56.0 |
| | | }else{ |
| | | totalH = Double(items.count * 56) + UIDevice.jq_safeEdges.bottom + 56.0 + 56.0 |
| | | } |
| | | |
| | | view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20,height: totalH) |
| | | } |
| | | |
| | |
| | | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "TCell") as! CommonAlertSheetTCell |
| | | cell.label_content.text = items[indexPath.row] |
| | | if hiddenTitle{ |
| | | cell.label_content.textColor = UIColor(hexString: "#6B6B6B") |
| | | }else{ |
| | | cell.label_content.textColor = UIColor(hexString: "#92A87D") |
| | | } |
| | | return cell |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | let lineView = UIView() |
| | | lineView.backgroundColor = UIColor(hexStr: "#979797").withAlphaComponent(0.05) |
| | | lineView.backgroundColor = UIColor(hexStr: "#979797").withAlphaComponent(0.1) |
| | | contentView.addSubview(lineView) |
| | | lineView.snp.makeConstraints { make in |
| | | make.left.equalTo(15) |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZCi-js-xyb"> |
| | | <rect key="frame" x="0.0" y="654" width="393" height="198"/> |
| | | <rect key="frame" x="0.0" y="597.66666666666663" width="393" height="254.33333333333337"/> |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5zv-r1-Tbh"> |
| | | <rect key="frame" x="0.0" y="100" width="393" height="56"/> |
| | | <rect key="frame" x="0.0" y="156.33333333333337" width="393" height="56"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="56" id="UcK-me-kEd"/> |
| | | </constraints> |
| | |
| | | </connections> |
| | | </button> |
| | | <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="G6i-xu-rUK"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="100"/> |
| | | <rect key="frame" x="0.0" y="56.333333333333371" width="393" height="100"/> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="100" id="g8g-XN-qDa"/> |
| | | </constraints> |
| | | </tableView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="A58-yH-MOT"> |
| | | <rect key="frame" x="0.0" y="56" width="393" height="0.3333333333333357"/> |
| | | <color key="backgroundColor" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="0.5" id="FQN-4O-z5O"/> |
| | | </constraints> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hTf-8X-Zlq"> |
| | | <rect key="frame" x="0.0" y="0.0" width="393" height="56"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="更换头像" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z6W-qo-71h"> |
| | | <rect key="frame" x="166.66666666666666" y="0.0" width="59.666666666666657" height="56"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="56" id="rvj-tn-KX3"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/> |
| | | <color key="textColor" red="0.41960784313725491" green="0.41960784313725491" blue="0.41960784313725491" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="56" id="Erd-6b-f1H"/> |
| | | <constraint firstItem="Z6W-qo-71h" firstAttribute="centerY" secondItem="hTf-8X-Zlq" secondAttribute="centerY" id="Qwd-T4-Viw"/> |
| | | <constraint firstItem="Z6W-qo-71h" firstAttribute="centerX" secondItem="hTf-8X-Zlq" secondAttribute="centerX" id="n42-9q-Gxf"/> |
| | | </constraints> |
| | | </view> |
| | | </subviews> |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="5zv-r1-Tbh" firstAttribute="top" secondItem="G6i-xu-rUK" secondAttribute="bottom" id="9nv-QU-lZP"/> |
| | | <constraint firstItem="hTf-8X-Zlq" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="C1F-jK-YO0"/> |
| | | <constraint firstItem="G6i-xu-rUK" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="CDM-qJ-EpR"/> |
| | | <constraint firstAttribute="trailing" secondItem="G6i-xu-rUK" secondAttribute="trailing" id="CXj-DB-txN"/> |
| | | <constraint firstItem="5zv-r1-Tbh" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="GTh-3u-KPb"/> |
| | | <constraint firstItem="G6i-xu-rUK" firstAttribute="top" secondItem="A58-yH-MOT" secondAttribute="bottom" id="J7W-gt-1S7"/> |
| | | <constraint firstAttribute="trailing" secondItem="A58-yH-MOT" secondAttribute="trailing" id="Rpr-dp-8u7"/> |
| | | <constraint firstItem="A58-yH-MOT" firstAttribute="top" secondItem="hTf-8X-Zlq" secondAttribute="bottom" id="ZbK-DD-bh1"/> |
| | | <constraint firstItem="hTf-8X-Zlq" firstAttribute="top" secondItem="ZCi-js-xyb" secondAttribute="top" id="lRg-Jc-vzk"/> |
| | | <constraint firstAttribute="trailing" secondItem="5zv-r1-Tbh" secondAttribute="trailing" id="sac-WK-U2U"/> |
| | | <constraint firstAttribute="bottomMargin" secondItem="5zv-r1-Tbh" secondAttribute="bottom" id="t8S-hN-Jjh"/> |
| | | <constraint firstItem="G6i-xu-rUK" firstAttribute="top" secondItem="ZCi-js-xyb" secondAttribute="top" id="u2B-VM-PMP"/> |
| | | <constraint firstAttribute="trailing" secondItem="hTf-8X-Zlq" secondAttribute="trailing" id="ueK-WC-wfq"/> |
| | | <constraint firstItem="A58-yH-MOT" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="zRe-xm-hdW"/> |
| | | </constraints> |
| | | </view> |
| | | </subviews> |
| | |
| | | </constraints> |
| | | <connections> |
| | | <outlet property="cons_tableHei" destination="g8g-XN-qDa" id="dhx-xA-6hC"/> |
| | | <outlet property="cons_titleH" destination="Erd-6b-f1H" id="Db7-Kk-iDQ"/> |
| | | <outlet property="cons_viewBottom" destination="0uK-bT-T9v" id="Dcm-l0-a8b"/> |
| | | <outlet property="tableView" destination="G6i-xu-rUK" id="afR-iG-9IN"/> |
| | | <outlet property="view_container" destination="ZCi-js-xyb" id="Mk8-7J-xes"/> |
| | | <outlet property="view_title" destination="hTf-8X-Zlq" id="8or-uu-f3F"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/> |
| | | </view> |
| | |
| | | |
| | | override func layoutSubviews() { |
| | | super.layoutSubviews() |
| | | btn_complete.localGradientColor(cornerRadius: 20) |
| | | btn_complete.localGradientColor(cornerRadius: 20,bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW - 85 * 2, height: 40)) |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | func setPavilionDetailModel(_ model:PavilionDetailModel){ |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded())) |
| | | label_title.text = model.hallName |
| | | view_distance.isHidden = model.distance < 0 |
| | | if model.distance >= 1000{ |
| | |
| | | |
| | | |
| | | @IBAction func searchAction(_ sender: Any) { |
| | | let tempViewModel = PavilionViewModel() |
| | | tempViewModel.location.accept(viewModel.location.value) |
| | | |
| | | let searchVC = PavilionSearchVC() |
| | | searchVC.viewModel = viewModel |
| | | searchVC.viewModel = tempViewModel |
| | | push(vc: searchVC) |
| | | } |
| | | |
| | |
| | | @IBOutlet weak var label_openTime: UILabel! |
| | | @IBOutlet weak var cons_webHei: NSLayoutConstraint! |
| | | |
| | | private var barStyle:UIStatusBarStyle = .lightContent |
| | | private var id:Int! |
| | | private var detailModel:PavilionDetailModel? |
| | | |
| | |
| | | title = "疗愈馆详情" |
| | | scrollView.contentInsetAdjustmentBehavior = .never |
| | | webView.scrollView.isScrollEnabled = false |
| | | scrollView.delegate = self |
| | | |
| | | Services.getPavlilonDetail(id: id).subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | |
| | | if bannerUrl.count > 0{ |
| | | var items = [CommonBannerModel]() |
| | | for (index,v) in bannerUrl.enumerated(){ |
| | | items.append(CommonBannerModel(index: index, id: index, name: nil, resource: v, mediaType: .imageUrl)) |
| | | items.append(CommonBannerModel(index: index, id: index, name: nil, resource: v.jq_urlEncoded(), mediaType: .imageUrl)) |
| | | } |
| | | self.view_bannerBg.setItems(items: items) |
| | | self.view_bannerBg.collectionView.backgroundColor = .clear |
| | |
| | | |
| | | |
| | | override var preferredStatusBarStyle: UIStatusBarStyle{ |
| | | return .lightContent |
| | | return barStyle |
| | | } |
| | | |
| | | } |
| | | |
| | | extension PavilionDetailVC:UIScrollViewDelegate{ |
| | | func scrollViewDidScroll(_ scrollView: UIScrollView) { |
| | | |
| | | let v = min(scrollView.contentOffset.y / JQ_NavBarHeight, 1) |
| | | navigationController?.navigationBar.standardAppearance.backgroundColor = .white.withAlphaComponent(v) |
| | | |
| | | if v > 0{ |
| | | (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal) |
| | | |
| | | (navigationItem.rightBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal) |
| | | // collect_bitem.tintColor = .black |
| | | // share_bitem.tintColor = .black |
| | | |
| | | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor.withAlphaComponent(v),.font:Def_NavFont] |
| | | barStyle = .darkContent |
| | | |
| | | }else{ |
| | | // collect_bitem.tintColor = self.courseDetailModel?.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white |
| | | // share_bitem.tintColor = .white |
| | | |
| | | (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal) |
| | | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont] |
| | | } |
| | | |
| | | if v == 1{ |
| | | barStyle = .darkContent |
| | | setNeedsStatusBarAppearanceUpdate() |
| | | }else{ |
| | | barStyle = .lightContent |
| | | setNeedsStatusBarAppearanceUpdate() |
| | | } |
| | | |
| | | // if let table = scrollView as? UITableView{ |
| | | // if v > 0{ |
| | | // table.contentInset = UIEdgeInsets(top: JQ_NavBarHeight + 9, left: 0, bottom: 118, right: 0) |
| | | // }else{ |
| | | // table.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 118, right: 0) |
| | | // } |
| | | // } |
| | | |
| | | // let offSetY = scrollView.contentOffset.y + CGRectGetHeight(scrollView.frame) / 2; |
| | | |
| | | // if let currentIndex = tableView?.indexPathForRow(at: CGPoint(x: 0, y: offSetY)){ |
| | | // |
| | | // if !isAnimationing{ |
| | | // if currentShowIndex != currentIndex{ |
| | | // currentShowIndex = currentIndex |
| | | // pageMenu.selectedItemIndex = currentIndex.row |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <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"/> |
| | |
| | | <rect key="frame" x="21.666666666666657" y="80.666666666666671" width="306" height="49.000000000000014"/> |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_search" translatesAutoresizingMaskIntoConstraints="NO" id="hNQ-kz-xpp"> |
| | | <rect key="frame" x="34" y="13.333333333333329" width="22.333333333333329" height="22"/> |
| | | <rect key="frame" x="15.33333333333333" y="13.333333333333329" width="22.666666666666679" height="22"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="22.5" id="KpR-0C-YFT"/> |
| | | <constraint firstAttribute="height" constant="22" id="LHs-vU-Px6"/> |
| | | </constraints> |
| | | </imageView> |
| | | <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="搜索你附近的疗愈馆" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="NAr-DA-yxv"> |
| | | <rect key="frame" x="68.000000000000014" y="0.0" width="226.33333333333337" height="49"/> |
| | | <rect key="frame" x="47.333333333333314" y="0.0" width="247" height="49"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/> |
| | | <textInputTraits key="textInputTraits"/> |
| | | </textField> |
| | |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstAttribute="bottom" secondItem="NAr-DA-yxv" secondAttribute="bottom" id="0Sg-DS-zeb"/> |
| | | <constraint firstItem="NAr-DA-yxv" firstAttribute="leading" secondItem="hNQ-kz-xpp" secondAttribute="trailing" constant="11.5" id="Qqk-Gb-mjh"/> |
| | | <constraint firstItem="NAr-DA-yxv" firstAttribute="leading" secondItem="hNQ-kz-xpp" secondAttribute="trailing" constant="9.5" id="Qqk-Gb-mjh"/> |
| | | <constraint firstItem="NAr-DA-yxv" firstAttribute="top" secondItem="amB-PO-kjr" secondAttribute="top" id="UXp-Jq-JiI"/> |
| | | <constraint firstAttribute="height" constant="49" id="bXE-9n-1MF"/> |
| | | <constraint firstItem="hNQ-kz-xpp" firstAttribute="centerY" secondItem="amB-PO-kjr" secondAttribute="centerY" id="goC-db-zlE"/> |
| | | <constraint firstItem="hNQ-kz-xpp" firstAttribute="leading" secondItem="amB-PO-kjr" secondAttribute="leading" constant="34" id="ix8-dD-VnV"/> |
| | | <constraint firstItem="hNQ-kz-xpp" firstAttribute="leading" secondItem="amB-PO-kjr" secondAttribute="leading" constant="15.5" id="ix8-dD-VnV"/> |
| | | <constraint firstAttribute="trailing" secondItem="NAr-DA-yxv" secondAttribute="trailing" constant="11.5" id="n1k-s3-h9Q"/> |
| | | </constraints> |
| | | <userDefinedRuntimeAttributes> |
| | |
| | | private var meditationModel:MeditationModel?{ |
| | | didSet{ |
| | | if let m = meditationModel{ |
| | | coverImage.sd_setImage(with: URL(string: m.coverUrl),placeholderImage: UIImage(named: "login_top_bg")) |
| | | coverImage.sd_setImage(with: URL(string: m.coverUrl.jq_urlEncoded()),placeholderImage: UIImage(named: "login_top_bg")) |
| | | label_name.text = m.meditationTitle |
| | | } |
| | | } |
| | |
| | | |
| | | let PlantGuideQuit_Noti = Notification.Name.init(rawValue: "PlantGuideQuit_Noti") |
| | | |
| | | let backgroundVoiceUrl = "https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/question/backgroundQuestion.wav" |
| | | |
| | | class PlanGuideVC: BaseVC { |
| | | |
| | | @IBOutlet weak var view_gradient: UIView! |
| | |
| | | override func viewWillAppear(_ animated: Bool) { |
| | | super.viewWillAppear(animated) |
| | | player.play() |
| | | bgplayer.play() |
| | | } |
| | | |
| | | override func viewDidDisappear(_ animated: Bool) { |
| | | super.viewDidDisappear(animated) |
| | | player.pause() |
| | | // bgplayer.pause() |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | let vc = PlanGuide_1_VC() |
| | | self?.jq_push(vc: vc) |
| | | case .toSeting: |
| | | self?.dismiss(animated: true) { |
| | | // self?.dismiss(animated: true) { |
| | | let vc = BackgroundVoiceVC() |
| | | vc.hidesBottomBarWhenPushed = true |
| | | JQ_currentNavigationController().pushViewController(vc) |
| | | } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | let AnswerAgain_Noti = Notification.Name.init("AnswerAgain_Noti") |
| | | |
| | | class PlanGuide_2_VC: BaseVC { |
| | | |
| | | @IBOutlet weak var label_title: UILabel! |
| | |
| | | btn.isHidden = true |
| | | } |
| | | |
| | | override func setRx() { |
| | | NotificationCenter.default.rx.notification(AnswerAgain_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in |
| | | self?.questionIndex = 0 |
| | | self?.nextQuestion() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | override func setUI() { |
| | | |
| | | btn_sure.tag = 1000 |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | |
| | | var topIndex = 0 |
| | | Services.getTag().subscribe(onNext: { data in |
| | | self.items = Array<TagModel>.splitArray((data.data ?? []), subArraySize: 3) |
| | | |
| | |
| | | } |
| | | |
| | | @IBAction func previousAction(_ sender: UIButton) { |
| | | NotificationCenter.default.post(name: AnswerAgain_Noti, object: nil) |
| | | self.navigationController?.popViewController() |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @IBAction func submitAndNextAction(_ sender: UIButton) { |
| | | clouse?("") |
| | | clouse?(textView.text) |
| | | closeAction() |
| | | } |
| | | @IBAction func nextAction(_ sender: UIButton) { |
| | |
| | | |
| | | func setEnergyExchangeRecordModel(_ model:EnergyExchangeRecordModel){ |
| | | label_title.text = model.name |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | label_price.text = "奖品价值:¥\(model.worth)" |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded())) |
| | | label_price.text = String(format: "奖品价值:¥%.2lf", model.worth) |
| | | label_energy.text = "所需能量值:\(model.energyValue)" |
| | | label_state.text = model.status == .yes ? "已领取":"待领取" |
| | | view_state.backgroundColor = model.status == .yes ? UIColor(hexString: "#B1CA99")! : UIColor(hexString: "#D0D0D0")! |
| | |
| | | func setEnergyExchangeGiftModel(_ model:EnergyExchangeGiftModel){ |
| | | image_exchanged.isHidden = model.receiveStatus == .no |
| | | view_container.alpha = model.receiveStatus == .yes ? 0.5:1 |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded())) |
| | | label_title.text = model.name |
| | | label_price.text = "奖品价值:¥\(model.worth)" |
| | | label_price.text = String(format: "奖品价值:¥%.2lf", model.worth) |
| | | label_energy.text = "所需能量值:\(model.energyValue)" |
| | | } |
| | | } |
| | |
| | | import APNGKit |
| | | import UserDefaultsStore |
| | | |
| | | let TreeTaskUpdate_Noti = Notification.Name.init(rawValue: "TreeTaskUpdate_Noti") |
| | | |
| | | class TreeTeskVC: BaseVC { |
| | | |
| | | private let cacheTreeInfoModel = UserDefaultsStore<TreeInfoModel>(uniqueIdentifier: "cacheTreeInfoModel")! |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private func getTreeData(){ |
| | | |
| | | //缓存的树苗信息 |
| | |
| | | self?.aPNGTreeImageView?.startAnimating() |
| | | } |
| | | } |
| | | |
| | | NotificationCenter.default.rx.notification(TreeTaskUpdate_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in |
| | | self?.getTreeData() |
| | | }).disposed(by: disposeBag) |
| | | |
| | | taskListView.swipeClouse {[unowned self] dirition in |
| | | guard self.treeTeskListSwipe != dirition else {return} |
| | |
| | | weakSelf.treeInfoModel?.energyValue = 0 |
| | | weakSelf.treeInfoModel?.nextLevel = m.nextLevel |
| | | weakSelf.updateTreeInfo() |
| | | NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil) |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | |
| | | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| | | <subviews> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ru-7s-yUN"> |
| | | <rect key="frame" x="24" y="191.33333333333334" width="345" height="469.33333333333326"/> |
| | | <rect key="frame" x="24" y="199.66666666666666" width="345" height="452.66666666666674"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="兑换成功" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uwa-22-p1n"> |
| | | <rect key="frame" x="136.66666666666666" y="17" width="71.666666666666657" height="21"/> |
| | |
| | | <constraint firstAttribute="width" secondItem="GQk-cT-1IF" secondAttribute="height" multiplier="1:1" id="IQg-YH-wfl"/> |
| | | </constraints> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xal-zI-HOg"> |
| | | <rect key="frame" x="75.333333333333329" y="347.66666666666663" width="194.66666666666669" height="33.666666666666686"/> |
| | | <string key="text">可添加助教微信,了解课程详情 |
| | | 长按保存图片</string> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="可添加助教微信,了解课程详情" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xal-zI-HOg"> |
| | | <rect key="frame" x="75.333333333333329" y="347.66666666666674" width="194.66666666666669" height="17"/> |
| | | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/> |
| | | <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="h25-4Z-I8T"> |
| | | <rect key="frame" x="37" y="405.33333333333326" width="271" height="40"/> |
| | | <rect key="frame" x="37" y="388.66666666666674" width="271" height="40"/> |
| | | <color key="backgroundColor" red="0.56470588239999997" green="0.65490196079999996" blue="0.48627450979999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="40" id="om4-Kn-hqq"/> |
| | |
| | | ruleView.label_title.text = title |
| | | ruleView.label_content.attributedText = AttributedStringbuilder.build().add(string:content, withFont: .systemFont(ofSize: 14), withColor: .black.withAlphaComponent(0.59), lineSpace: 7).mutableAttributedString |
| | | ruleView.label_content.textAlignment = textAlignment |
| | | ruleView.cons_hei.constant = height |
| | | // ruleView.cons_hei.constant = height |
| | | ruleView.cons_textTop.constant = textTopOffset |
| | | |
| | | sceneDelegate?.window?.addSubview(ruleView) |
| | |
| | | |
| | | override func layoutSubviews() { |
| | | super.layoutSubviews() |
| | | btn_complete.localGradientColor(cornerRadius: 20) |
| | | btn_complete.localGradientColor(cornerRadius: 20,bounds: btn_complete.frame) |
| | | } |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="top" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_task_f" translatesAutoresizingMaskIntoConstraints="NO" id="WfK-ob-Idw"> |
| | | <rect key="frame" x="0.0" y="0.0" width="303" height="263"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="263" id="lGv-pt-EKd"/> |
| | | </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="FMr-RI-3OU"> |
| | | <rect key="frame" x="114.66666666666666" y="24" width="73.666666666666657" height="21"/> |
| | | <rect key="frame" x="115.66666666666666" y="24" width="71.666666666666657" height="21"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="21" id="F4t-Os-4qR"/> |
| | | </constraints> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/> |
| | | <color key="textColor" red="0.5725490196078431" green="0.6588235294117647" blue="0.49411764705882355" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </connections> |
| | | </button> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H2A-aP-FsC"> |
| | | <rect key="frame" x="18" y="67" width="267" height="83.666666666666686"/> |
| | | <rect key="frame" x="18" y="67" width="267" height="84"/> |
| | | <string key="text">亲爱的家人,感谢您用心的交流。 |
| | | 现在,您心灵之树的种子已经植入这片沃土,请以农夫的心态用心浇灌,不久的将来,将会长成苍天大树,结出丰硕的果实。加油哦!</string> |
| | | <fontDescription key="fontDescription" type="system" pointSize="14"/> |
| | |
| | | <constraint firstAttribute="trailing" secondItem="H2A-aP-FsC" secondAttribute="trailing" constant="18" id="VYt-T5-9ey"/> |
| | | <constraint firstAttribute="bottom" secondItem="WfK-ob-Idw" secondAttribute="bottom" id="ZIv-kU-o3f"/> |
| | | <constraint firstItem="FMr-RI-3OU" firstAttribute="top" secondItem="26Z-P3-SaG" secondAttribute="top" constant="24" id="eZF-5D-9f9"/> |
| | | <constraint firstItem="2QG-Gl-6ul" firstAttribute="top" secondItem="H2A-aP-FsC" secondAttribute="bottom" constant="55" id="lIu-Jb-9la"/> |
| | | <constraint firstItem="H2A-aP-FsC" firstAttribute="leading" secondItem="26Z-P3-SaG" secondAttribute="leading" constant="18" id="mW0-7f-lsE"/> |
| | | <constraint firstAttribute="trailing" secondItem="WfK-ob-Idw" secondAttribute="trailing" id="vPP-Rj-LSs"/> |
| | | <constraint firstItem="2QG-Gl-6ul" firstAttribute="leading" secondItem="26Z-P3-SaG" secondAttribute="leading" constant="40" id="zVU-Mf-5Ks"/> |
| | |
| | | </constraints> |
| | | <connections> |
| | | <outlet property="btn_complete" destination="2QG-Gl-6ul" id="tZP-OV-q0r"/> |
| | | <outlet property="cons_hei" destination="lGv-pt-EKd" id="xdE-vZ-Lqf"/> |
| | | <outlet property="cons_textTop" destination="6Ld-uV-0JF" id="kcH-v6-5sG"/> |
| | | <outlet property="label_content" destination="H2A-aP-FsC" id="QFU-Ck-bRT"/> |
| | | <outlet property="label_title" destination="FMr-RI-3OU" id="X2O-g1-Hvv"/> |
| | |
| | | @IBOutlet weak var label_sign: UILabel! |
| | | @IBOutlet weak var tap_sign: TapBtn! |
| | | |
| | | @IBOutlet weak var view_task1: UIView! |
| | | @IBOutlet weak var label_task1: UILabel! |
| | | @IBOutlet weak var view_task1_cricle: UIView! |
| | | |
| | | @IBOutlet weak var view_task2: UIView! |
| | | @IBOutlet weak var label_task2: UILabel! |
| | | @IBOutlet weak var view_task2_cricle: UIView! |
| | | |
| | | |
| | | private var clouse:((TreeTeskListSwipe)->Void)? |
| | | private var signClouse:(()->Void)? |
| | | private var disposeBag = DisposeBag() |
| | |
| | | view_sign.backgroundColor = .gray.withAlphaComponent(0.2) |
| | | label_sign.textColor = .white |
| | | view_sign_cricle.jq_borderColor = .gray.withAlphaComponent(0.2) |
| | | }else{ |
| | | tap_sign.isUserInteractionEnabled = true |
| | | label_sign.text = "打卡签到" |
| | | view_sign.backgroundColor = .white |
| | | label_sign.textColor = UIColor(hexString: "#4E4E4E") |
| | | } |
| | | // else{ |
| | | // tap_sign.isUserInteractionEnabled = true |
| | | // label_sign.text = "打卡签到" |
| | | // view_sign.backgroundColor = .white |
| | | // label_sign.textColor = UIColor(hexString: "#4E4E4E") |
| | | // } |
| | | |
| | | if model.taskOne == .yes{ |
| | | view_task1.backgroundColor = .gray.withAlphaComponent(0.2) |
| | | label_task1.textColor = .white |
| | | view_task1_cricle.jq_borderColor = .gray.withAlphaComponent(0.2) |
| | | } |
| | | |
| | | if model.taskTwo == .yes{ |
| | | view_task2.backgroundColor = .gray.withAlphaComponent(0.2) |
| | | label_task2.textColor = .white |
| | | view_task2_cricle.jq_borderColor = .gray.withAlphaComponent(0.2) |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | |
| | | } |
| | | |
| | | @IBAction func toMuse(_ sender: TapBtn) { |
| | | @IBAction func toMuse1(_ sender: TapBtn) { |
| | | guard treeInfoModel?.taskOne == .no else {return} |
| | | JQ_currentViewController().tabBarController?.selectedIndex = 0 |
| | | } |
| | | |
| | | @IBAction func toMuse2(_ sender: TapBtn) { |
| | | guard treeInfoModel?.taskTwo == .no else {return} |
| | | JQ_currentViewController().tabBarController?.selectedIndex = 0 |
| | | } |
| | | |
| | | } |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
| | | <device id="retina6_12" orientation="portrait" appearance="light"/> |
| | | <dependencies> |
| | | <deployment identifier="iOS"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/> |
| | | <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
| | | <capability name="System colors in document resources" minToolsVersion="11.0"/> |
| | | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| | | </dependencies> |
| | |
| | | <rect key="frame" x="50.666666666666664" y="17.333333333333329" width="17.666666666666664" height="17.666666666666671"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="任务列表" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pYG-Qr-ArP"> |
| | | <rect key="frame" x="75" y="15.999999999999998" width="69.333333333333314" height="20.333333333333329"/> |
| | | <rect key="frame" x="75" y="15.999999999999998" width="67.666666666666686" height="20.333333333333329"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="17"/> |
| | | <nil key="textColor"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="25.333333333333336" y="16" width="10.666666666666664" height="10.666666666666664"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="每日打卡签到【+10能量值】" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3pD-LK-hZd"> |
| | | <rect key="frame" x="44.333333333333329" y="14.333333333333329" width="148" height="14.333333333333336"/> |
| | | <rect key="frame" x="44.333333333333329" y="14.333333333333329" width="144.66666666666669" height="14.333333333333336"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="12"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | <rect key="frame" x="25.333333333333336" y="16" width="10.666666666666664" height="10.666666666666664"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="每日冥想满30分钟【+10能量值】" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kag-M2-m2v"> |
| | | <rect key="frame" x="44.333333333333329" y="14.333333333333314" width="178.33333333333337" height="14.333333333333336"/> |
| | | <rect key="frame" x="44.333333333333329" y="14.333333333333314" width="174.66666666666669" height="14.333333333333336"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="12"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往冥想" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oyl-lW-Kxr"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往疗愈" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oyl-lW-Kxr"> |
| | | <rect key="frame" x="23" y="0.0" width="67.333333333333329" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/> |
| | | <nil key="textColor"/> |
| | |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="toMuse:" destination="iN0-l3-epB" eventType="touchUpInside" id="UNZ-J1-qIE"/> |
| | | <action selector="toMuse1:" destination="iN0-l3-epB" eventType="touchUpInside" id="VYs-9e-HzQ"/> |
| | | </connections> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZUs-Tp-QZ9" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target"> |
| | |
| | | <rect key="frame" x="25.333333333333336" y="16" width="10.666666666666664" height="10.666666666666664"/> |
| | | </imageView> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="每日冥想满60分钟【+20能量值】" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1oV-nk-0EQ"> |
| | | <rect key="frame" x="44.333333333333314" y="14.333333333333343" width="180" height="14.333333333333336"/> |
| | | <rect key="frame" x="44.333333333333329" y="14.333333333333343" width="176.66666666666669" height="14.333333333333336"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="12"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | </view> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往冥想" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rR9-r5-hle"> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往疗愈" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rR9-r5-hle"> |
| | | <rect key="frame" x="23" y="0.0" width="67.333333333333329" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="13"/> |
| | | <nil key="textColor"/> |
| | |
| | | </userDefinedRuntimeAttribute> |
| | | </userDefinedRuntimeAttributes> |
| | | <connections> |
| | | <action selector="toMuse:" destination="iN0-l3-epB" eventType="touchUpInside" id="9EX-0O-UFY"/> |
| | | <action selector="toMuse2:" destination="iN0-l3-epB" eventType="touchUpInside" id="3Z2-GE-GNB"/> |
| | | </connections> |
| | | </view> |
| | | </subviews> |
| | |
| | | <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> |
| | | <connections> |
| | | <outlet property="label_sign" destination="Vzb-As-8Sv" id="jv7-Zj-Xma"/> |
| | | <outlet property="label_task1" destination="oyl-lW-Kxr" id="4w7-Fq-BCL"/> |
| | | <outlet property="label_task2" destination="rR9-r5-hle" id="b4s-FK-Gao"/> |
| | | <outlet property="tap_sign" destination="QeN-rl-gb6" id="eP4-E2-KLg"/> |
| | | <outlet property="view_sign" destination="bLC-YH-CzV" id="wAt-7y-Hql"/> |
| | | <outlet property="view_sign_cricle" destination="vuQ-La-6pi" id="jIF-NF-3jH"/> |
| | | <outlet property="view_task1" destination="mTi-vt-g8O" id="JRU-Fd-QdP"/> |
| | | <outlet property="view_task1_cricle" destination="bo4-x0-d08" id="vgz-lc-htd"/> |
| | | <outlet property="view_task2" destination="y6n-Lx-kuE" id="axr-5m-JW8"/> |
| | | <outlet property="view_task2_cricle" destination="x7l-eb-8TL" id="ah5-HL-0WD"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="64.885496183206101" y="154.22535211267606"/> |
| | | </view> |