| | |
| | | <string>wx4b9c1d814c2902a3</string> |
| | | </array> |
| | | </dict> |
| | | <dict> |
| | | <key>CFBundleTypeRole</key> |
| | | <string>Editor</string> |
| | | <key>CFBundleURLSchemes</key> |
| | | <array> |
| | | <string>XQMuse</string> |
| | | </array> |
| | | </dict> |
| | | </array> |
| | | <key>LSApplicationQueriesSchemes</key> |
| | | <array> |
| | |
| | | let vc = CourseDetialVideoVC(items: model!.list, selectIndex: indexPath) |
| | | JQ_currentNavigationController().pushViewController(vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(courseId: m.id) |
| | | JQ_currentNavigationController().pushViewController(vc) |
| | | if m.chargeType == .vipFree{ |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | private func getData(){ |
| | | Services.getCourseDetail(courseId: courseId).subscribe(onNext: {data in |
| | | Services.getCourseDetail(courseId: courseId).subscribe(onNext: {[weak self] data in |
| | | guard let weakSelf = self else { return } |
| | | if let m = data.data{ |
| | | self.courseDetailModel = m |
| | | self.collect_bitem.image = m.isCollect == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect") |
| | | self.collect_bitem.tintColor = m.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white |
| | | self.headerView.setCourseModel(m) |
| | | self.section1TCell.setItems(m) |
| | | self.section2TCell.setItems(m.list2) |
| | | weakSelf.courseDetailModel = m |
| | | weakSelf.collect_bitem.image = m.isCollect == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect") |
| | | weakSelf.collect_bitem.tintColor = m.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white |
| | | weakSelf.headerView.setCourseModel(m) |
| | | weakSelf.section1TCell.setItems(m) |
| | | weakSelf.section2TCell.setItems(m.list2) |
| | | |
| | | //是否需要购买 |
| | | var needPayment:Bool = true |
| | | switch m.chargeType{ |
| | | case .free:needPayment = false |
| | | case .payment:needPayment = !(m.isBuy == .yes) |
| | | case .vipFree:needPayment = !(UserViewModel.getAvatarInfo().isVip == .yes) |
| | | } |
| | | if m.courseType == .online{ |
| | | weakSelf.style = .style1 |
| | | weakSelf.pageMenu.setItems(["简介","章节","相关推荐"], selectedItemIndex: 0) |
| | | |
| | | 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 |
| | | self.studyBtn.setAttributedTitle(attribute, for: .normal) |
| | | }else{ |
| | | let attribute = AttributedStringbuilder.build().add(string: " 立即学习 ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString |
| | | self.studyBtn.setAttributedTitle(attribute, for: .normal) |
| | | } |
| | | //是否需要购买 |
| | | var needPayment:Bool = true |
| | | switch m.chargeType{ |
| | | case .free:needPayment = false |
| | | case .payment:needPayment = !(m.isBuy == .yes) |
| | | case .vipFree:needPayment = !(UserViewModel.getAvatarInfo().isVip == .yes) |
| | | } |
| | | |
| | | if m.detailUrl.jq_isVideo{ |
| | | self.style = .style1 |
| | | self.pageMenu.setItems(["简介","章节","相关推荐"], selectedItemIndex: 0) |
| | | 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 |
| | | weakSelf.studyBtn.setAttributedTitle(attribute, for: .normal) |
| | | }else{ |
| | | let attribute = AttributedStringbuilder.build().add(string: " 立即学习 ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString |
| | | weakSelf.studyBtn.setAttributedTitle(attribute, for: .normal) |
| | | } |
| | | |
| | | weakSelf.setFootView() |
| | | |
| | | }else{ |
| | | self.style = .style2 |
| | | self.pageMenu.setItems(["简介"], selectedItemIndex: 0) |
| | | weakSelf.style = .style2 |
| | | DispatchQueue.main.asyncAfter(delay: 0.5) { |
| | | weakSelf.headerView.setVideo(url: m.detailUrl, coverImageUrl: m.coverUrl, delegate: self!) |
| | | } |
| | | weakSelf.pageMenu.setItems(["简介"], selectedItemIndex: 0) |
| | | } |
| | | self.tableView?.reloadData() |
| | | self.setFootView() |
| | | weakSelf.tableView?.reloadData() |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | return size.height |
| | | } |
| | | return nil |
| | | }.subscribe(onNext: { [unowned self](height) in |
| | | }.subscribe(onNext: { [weak self](height) in |
| | | if let height = height{ |
| | | if height > section0Height{ |
| | | self.section0Height = height |
| | | self.tableView?.reloadData() |
| | | if height > self?.section0Height ?? 0{ |
| | | self?.section0Height = height |
| | | self?.tableView?.reloadData() |
| | | } |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | |
| | | NotificationCenter.default.rx.notification(CourseRefresh_Noti).take(until: self.rx.deallocated).subscribe(onNext: {data in |
| | | self.getData() |
| | | NotificationCenter.default.rx.notification(CourseRefresh_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self]data in |
| | | self?.getData() |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | @objc func collectionAction(){ |
| | | Services.clouseFavorite(id: courseId).subscribe(onNext: {data in |
| | | self.courseDetailModel?.isCollect.troggle() |
| | | if self.courseDetailModel?.isCollect == .yes{ |
| | | Services.clouseFavorite(id: courseId).subscribe(onNext: {[weak self]data in |
| | | self?.courseDetailModel?.isCollect.troggle() |
| | | if self?.courseDetailModel?.isCollect == .yes{ |
| | | alertSuccess(msg: "收藏成功") |
| | | self.collect_bitem.image = UIImage(named: "btn_collect_1_s") |
| | | self.collect_bitem.tintColor = UIColor(hexString: "fe5b60") |
| | | self?.collect_bitem.image = UIImage(named: "btn_collect_1_s") |
| | | self?.collect_bitem.tintColor = UIColor(hexString: "fe5b60") |
| | | }else{ |
| | | alertSuccess(msg: "已取消收藏") |
| | | self.collect_bitem.image = UIImage(named: "btn_collect") |
| | | self.collect_bitem.tintColor = .white |
| | | self?.collect_bitem.image = UIImage(named: "btn_collect") |
| | | self?.collect_bitem.tintColor = .white |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | |
| | | let vc = CourseDetialVideoVC(items: m.list, selectIndex: IndexPath(row: 0, section: 0)) |
| | | push(vc: vc);return |
| | | } |
| | | let vc = PaymentOrderVC(courseId: m.id) |
| | | |
| | | let vc = PaymentOrderVC(id: m.id, type: .course) |
| | | push(vc: vc) |
| | | } |
| | | } |
| | |
| | | @objc func sendGift(_ btn:QMUIButton){ |
| | | if let price = courseDetailModel?.generalPrice{ |
| | | CourseSendGiftView.show(price:price) { |
| | | let vc = PaymentOrderVC(courseId: self.courseDetailModel!.id,giftToOther: true) |
| | | let vc = PaymentOrderVC(id: self.courseDetailModel!.id,type: .course,giftToOther: true) |
| | | self.push(vc: vc) |
| | | } |
| | | } |
| | |
| | | (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 = UIColor(hexString: "#fe5b60") |
| | | collect_bitem.tintColor = .black |
| | | share_bitem.tintColor = .black |
| | | |
| | | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor.withAlphaComponent(v),.font:Def_NavFont] |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | extension CourseDetialVC:CLPlayerDelegate{ |
| | | |
| | | } |
| | |
| | | var cateId = BehaviorRelay<Int?>(value: nil) |
| | | var search = BehaviorRelay<String?>(value: nil) |
| | | override func api() -> (Observable<BaseResponse<BaseResponseList<CourseModel>>>)? { |
| | | return Services.getCoursePageList(page: page,courseTitle: search.value) |
| | | return Services.getCoursePageList(page: page,cateId: cateId.value, courseTitle: search.value) |
| | | } |
| | | } |
| | | |
| | |
| | | @IBOutlet weak var label_studyNum: UILabel! |
| | | @IBOutlet weak var image_cover: UIImageView! |
| | | @IBOutlet weak var icon: UIImageView! |
| | | |
| | | private var videoView:VideoView? |
| | | |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | } |
| | |
| | | label_studyNum.text = "\(model.count)人已加入学习" |
| | | image_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | } |
| | | |
| | | func setVideo(url:String,coverImageUrl:String,delegate:CLPlayerDelegate){ |
| | | videoView = VideoView(url: url, autoPlay: false, placeHoderImageUrl: coverImageUrl, delegate: delegate) |
| | | |
| | | addSubview(videoView!) |
| | | videoView!.snp.makeConstraints { make in |
| | | make.edges.equalTo(self.image_cover) |
| | | } |
| | | } |
| | | } |
| | |
| | | @IBOutlet weak var label_title: UILabel! |
| | | @IBOutlet weak var label_subTitle: UILabel! |
| | | @IBOutlet weak var label_num: UILabel! |
| | | |
| | | @IBOutlet weak var image_free: UIImageView! |
| | | @IBOutlet weak var view_price: UIView! |
| | | @IBOutlet weak var label_price: UILabel! |
| | | @IBOutlet weak var img_offine: UIImageView! |
| | | |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | // Initialization code |
| | |
| | | } |
| | | |
| | | func setMeditationModel(_ model:MeditationModel){ |
| | | img_offine.isHidden = true |
| | | img_cover.sd_setImage(with: URL(string: model.coverUrl)) |
| | | label_title.text = model.meditationTitle |
| | | label_subTitle.text = model.coverDescription |
| | | label_num.text = "\(model.realLearnedNum)" |
| | | img_vip.isHidden = model.chargeType != .vipFree |
| | | |
| | | image_free.isHidden = model.chargeType != .free |
| | | img_vip.isHidden = model.chargeType != .vipFree |
| | | view_price.isHidden = model.chargeType != .payment |
| | | |
| | | switch model.chargeType { |
| | | 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 |
| | | default:break |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | func setCourseModel(_ model:CourseModel){ |
| | |
| | | label_title.text = model.courseTitle |
| | | label_subTitle.text = model.briefIntroduction |
| | | label_num.text = "\(model.count)" |
| | | img_vip.isHidden = model.chargeType != .vipFree |
| | | |
| | | image_free.isHidden = model.chargeType != .free |
| | | img_vip.isHidden = model.chargeType != .vipFree |
| | | view_price.isHidden = model.chargeType != .payment |
| | | |
| | | if model.courseType == .offline{ |
| | | img_offine.isHidden = false |
| | | image_free.isHidden = true |
| | | view_price.isHidden = true |
| | | img_vip.isHidden = true |
| | | return |
| | | } |
| | | |
| | | switch model.chargeType { |
| | | 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 |
| | | default:break |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | <?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> |
| | |
| | | <subviews> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="u6A-Y4-rQ5"> |
| | | <rect key="frame" x="0.0" y="0.0" width="165" height="218"/> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_offline" translatesAutoresizingMaskIntoConstraints="NO" id="uEc-dY-dVJ"> |
| | | <rect key="frame" x="10" y="10" width="34" height="18"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xQS-TU-DTd"> |
| | | <rect key="frame" x="10" y="10" width="38.666666666666664" height="25"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="APF-eW-1da"> |
| | | <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="11"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.8980392157" green="0.71372549019999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="83q-tN-O9w"/> |
| | | <constraint firstItem="APF-eW-1da" firstAttribute="leading" secondItem="xQS-TU-DTd" secondAttribute="leading" constant="5" id="JMa-Vt-vm6"/> |
| | | <constraint firstItem="APF-eW-1da" firstAttribute="top" secondItem="xQS-TU-DTd" secondAttribute="top" id="O9I-d9-Xnk"/> |
| | | <constraint firstAttribute="trailing" secondItem="APF-eW-1da" secondAttribute="trailing" constant="5" id="aXq-X5-Ux2"/> |
| | | <constraint firstAttribute="height" constant="25.100000000000001" id="d2N-VC-V1F"/> |
| | | <constraint firstAttribute="bottom" secondItem="APF-eW-1da" secondAttribute="bottom" id="uOl-Gh-Y2N"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_freee" translatesAutoresizingMaskIntoConstraints="NO" id="eTx-n7-epB"> |
| | | <rect key="frame" x="10" y="15" width="50" height="18"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Emq-gn-QOX"> |
| | | <rect key="frame" x="0.0" y="162.66666666666666" width="165" height="55.333333333333343"/> |
| | |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.67450980392156867" green="0.67450980392156867" blue="0.67450980392156867" alpha="0.75" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.55000000000000004" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="55.25" id="10l-1C-Vxq"/> |
| | | <constraint firstItem="KBd-aZ-LFh" firstAttribute="leading" secondItem="fsN-0y-q8f" secondAttribute="trailing" constant="5" id="2Ea-AQ-Tu0"/> |
| | |
| | | </subviews> |
| | | </view> |
| | | <constraints> |
| | | <constraint firstItem="xQS-TU-DTd" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="10" id="000-sg-EYm"/> |
| | | <constraint firstAttribute="trailing" secondItem="Emq-gn-QOX" secondAttribute="trailing" id="04n-4q-t3c"/> |
| | | <constraint firstItem="eTx-n7-epB" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="10" id="0iF-Cq-0lH"/> |
| | | <constraint firstAttribute="bottom" secondItem="Emq-gn-QOX" secondAttribute="bottom" id="1pR-zR-iEn"/> |
| | | <constraint firstItem="u6A-Y4-rQ5" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="FM9-d1-o7D"/> |
| | | <constraint firstItem="eTx-n7-epB" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="15" id="Lk4-Gc-sgU"/> |
| | | <constraint firstItem="qF4-sn-dec" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="15" id="Pp8-Ev-814"/> |
| | | <constraint firstAttribute="trailing" secondItem="u6A-Y4-rQ5" secondAttribute="trailing" id="Wmf-QD-q2l"/> |
| | | <constraint firstItem="uEc-dY-dVJ" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="10" id="XL6-q7-Yqm"/> |
| | | <constraint firstItem="qF4-sn-dec" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="14" id="a9F-c7-D0F"/> |
| | | <constraint firstItem="u6A-Y4-rQ5" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="hwT-Ww-t9Q"/> |
| | | <constraint firstItem="xQS-TU-DTd" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="10" id="pUw-nM-PXY"/> |
| | | <constraint firstItem="Emq-gn-QOX" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="peA-Sh-3Fg"/> |
| | | <constraint firstAttribute="bottom" secondItem="u6A-Y4-rQ5" secondAttribute="bottom" id="urP-g7-eE1"/> |
| | | <constraint firstItem="uEc-dY-dVJ" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="10" id="zpu-w0-ppT"/> |
| | | </constraints> |
| | | <size key="customSize" width="165" height="218"/> |
| | | <connections> |
| | | <outlet property="image_free" destination="eTx-n7-epB" id="f4e-MW-Ck1"/> |
| | | <outlet property="img_cover" destination="u6A-Y4-rQ5" id="jgL-1i-bbr"/> |
| | | <outlet property="img_offine" destination="uEc-dY-dVJ" id="ZBx-id-buz"/> |
| | | <outlet property="img_vip" destination="qF4-sn-dec" id="Srv-K5-XZ8"/> |
| | | <outlet property="label_num" destination="ZK6-Lk-6Cs" id="YnU-l2-kpJ"/> |
| | | <outlet property="label_price" destination="APF-eW-1da" id="O14-P0-c6M"/> |
| | | <outlet property="label_subTitle" destination="AYK-rI-cj9" id="fbU-5M-2Gw"/> |
| | | <outlet property="label_title" destination="fsN-0y-q8f" id="MyU-K8-8hi"/> |
| | | <outlet property="view_price" destination="xQS-TU-DTd" id="ycm-vC-jQn"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="168.70229007633588" y="79.577464788732399"/> |
| | | </collectionViewCell> |
| | | </objects> |
| | | <resources> |
| | | <image name="icon_freee" width="50" height="18"/> |
| | | <image name="icon_offline" width="34" height="18"/> |
| | | <image name="icon_play" width="46" height="46"/> |
| | | <image name="icon_use_small" width="10" height="10.666666984558105"/> |
| | | <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/> |
| | |
| | | @IBOutlet weak var label_title: UILabel! |
| | | @IBOutlet weak var label_subTitle: UILabel! |
| | | @IBOutlet weak var label_num: UILabel! |
| | | @IBOutlet weak var img_isFree: UIImageView! |
| | | @IBOutlet weak var image_free: UIImageView! |
| | | @IBOutlet weak var view_price: UIView! |
| | | @IBOutlet weak var label_price: UILabel! |
| | | @IBOutlet weak var img_vip: UIImageView! |
| | | @IBOutlet weak var img_offline: UIImageView! |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | |
| | | |
| | | |
| | | jq_cornerRadius = 10 |
| | | |
| | | view_price.jq_cornerRadius = 12.55 |
| | | let blurEffect = UIBlurEffect(style: .light) |
| | | let visualEffectView = UIVisualEffectView(effect: blurEffect) |
| | | view_text_bg.addSubview(visualEffectView) |
| | |
| | | label_title.text = model.courseTitle |
| | | label_subTitle.text = model.briefIntroduction |
| | | label_num.text = "\(model.count)" |
| | | // img_vip.isHidden = model.chargeType != .vipFree |
| | | |
| | | if model.courseType == .online{ |
| | | img_offline.isHidden = true |
| | | setChargePrice(model.chargeType, price: model.generalPrice) |
| | | }else{ |
| | | img_offline.isHidden = false |
| | | img_vip.isHidden = true |
| | | view_price.isHidden = true |
| | | image_free.isHidden = true |
| | | } |
| | | } |
| | | |
| | | private func setChargePrice(_ type:ChargeType,price:Double){ |
| | | |
| | | image_free.isHidden = type != .free |
| | | img_vip.isHidden = type != .vipFree |
| | | view_price.isHidden = type != .payment |
| | | |
| | | switch type { |
| | | case .payment: |
| | | 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: "\(price.jq_formatFloat) ", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | default:break |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VwD-36-ent"> |
| | | <rect key="frame" x="0.0" y="0.0" width="160" height="196"/> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vip" translatesAutoresizingMaskIntoConstraints="NO" id="MDc-Db-v12"> |
| | | <rect key="frame" x="11.000000000000002" y="8.6666666666666661" width="21.666666666666671" height="21.666666666666671"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tNS-EM-X8Z"> |
| | | <rect key="frame" x="7" y="5" width="38.666666666666664" height="25"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KaS-j6-dko"> |
| | | <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="11"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.8980392157" green="0.71372549019999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="25.100000000000001" id="L4H-E8-mqA"/> |
| | | <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="PQi-Ka-PUO"/> |
| | | <constraint firstItem="KaS-j6-dko" firstAttribute="top" secondItem="tNS-EM-X8Z" secondAttribute="top" id="XkQ-YO-BTQ"/> |
| | | <constraint firstAttribute="trailing" secondItem="KaS-j6-dko" secondAttribute="trailing" constant="5" id="qWj-kT-K4d"/> |
| | | <constraint firstItem="KaS-j6-dko" firstAttribute="leading" secondItem="tNS-EM-X8Z" secondAttribute="leading" constant="5" id="xKe-fC-CpF"/> |
| | | <constraint firstAttribute="bottom" secondItem="KaS-j6-dko" secondAttribute="bottom" id="zW6-UI-Hos"/> |
| | | </constraints> |
| | | </view> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nyj-tV-0t4"> |
| | | <rect key="frame" x="0.0" y="146" width="160" height="50"/> |
| | | <subviews> |
| | |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_freee" translatesAutoresizingMaskIntoConstraints="NO" id="C5o-Fs-4Xu"> |
| | | <rect key="frame" x="11" y="9" width="50" height="18"/> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_offline" translatesAutoresizingMaskIntoConstraints="NO" id="988-87-RLf"> |
| | | <rect key="frame" x="8" y="7" width="34" height="18"/> |
| | | </imageView> |
| | | </subviews> |
| | | </view> |
| | | <viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/> |
| | | <constraints> |
| | | <constraint firstAttribute="bottom" secondItem="nyj-tV-0t4" secondAttribute="bottom" id="6kR-m6-W7L"/> |
| | | <constraint firstItem="VwD-36-ent" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="6q4-UC-TbP"/> |
| | | <constraint firstItem="988-87-RLf" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7" id="AZp-Bf-kii"/> |
| | | <constraint firstItem="nyj-tV-0t4" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="HsY-aP-b2m"/> |
| | | <constraint firstItem="tNS-EM-X8Z" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="5" id="IDx-Rk-dVG"/> |
| | | <constraint firstItem="C5o-Fs-4Xu" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="11" id="LW9-j0-pdo"/> |
| | | <constraint firstItem="C5o-Fs-4Xu" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="9" id="M5Z-Od-Ixc"/> |
| | | <constraint firstItem="MDc-Db-v12" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="8.5" id="TAz-42-XQP"/> |
| | | <constraint firstAttribute="trailing" secondItem="VwD-36-ent" secondAttribute="trailing" id="eMF-Er-Mtm"/> |
| | | <constraint firstItem="VwD-36-ent" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="gba-Nk-kGk"/> |
| | | <constraint firstItem="tNS-EM-X8Z" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="7" id="j3U-db-f7D"/> |
| | | <constraint firstItem="MDc-Db-v12" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="11" id="jP0-pB-RmD"/> |
| | | <constraint firstItem="988-87-RLf" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="8" id="lIk-og-l06"/> |
| | | <constraint firstAttribute="trailing" secondItem="nyj-tV-0t4" secondAttribute="trailing" id="oZN-uZ-l0V"/> |
| | | <constraint firstAttribute="bottom" secondItem="VwD-36-ent" secondAttribute="bottom" id="p7n-UX-5N7"/> |
| | | </constraints> |
| | | <size key="customSize" width="160" height="196"/> |
| | | <connections> |
| | | <outlet property="image_free" destination="C5o-Fs-4Xu" id="yA1-gH-NE1"/> |
| | | <outlet property="img_cover" destination="VwD-36-ent" id="93Z-v8-bjM"/> |
| | | <outlet property="img_isFree" destination="C5o-Fs-4Xu" id="eut-gN-uQO"/> |
| | | <outlet property="img_offline" destination="988-87-RLf" id="d81-nh-tqD"/> |
| | | <outlet property="img_vip" destination="MDc-Db-v12" id="FNN-By-3UD"/> |
| | | <outlet property="label_num" destination="Wxc-EY-qwU" id="zxI-Y4-tTv"/> |
| | | <outlet property="label_price" destination="KaS-j6-dko" id="T7A-UW-g49"/> |
| | | <outlet property="label_subTitle" destination="EeQ-hi-VEz" id="U39-7s-GGD"/> |
| | | <outlet property="label_title" destination="6md-5M-Pce" id="j50-e3-otB"/> |
| | | <outlet property="view_price" destination="tNS-EM-X8Z" id="POp-Nu-BIU"/> |
| | | <outlet property="view_text_bg" destination="nyj-tV-0t4" id="Lef-w5-fi6"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="164.8854961832061" y="71.83098591549296"/> |
| | |
| | | </objects> |
| | | <resources> |
| | | <image name="icon_freee" width="50" height="18"/> |
| | | <image name="icon_offline" width="34" height="18"/> |
| | | <image name="icon_use_small_s" width="9" height="9"/> |
| | | <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/> |
| | | </resources> |
| | | </document> |
| | |
| | | @IBOutlet weak var view_price: UIView! |
| | | @IBOutlet weak var label_price: UILabel! |
| | | @IBOutlet weak var image_free: UIImageView! |
| | | |
| | | @IBOutlet weak var img_offline: UIImageView! |
| | | |
| | | private var meditationModel:MeditationModel? |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | |
| | | 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) |
| | | } |
| | |
| | | label_num.text = "\(model.count)" |
| | | img_vip.isHidden = model.isVip != .yes |
| | | |
| | | setChargePrice(model.chargeType, price: model.generalPrice) |
| | | if model.courseType == .online{ |
| | | img_offline.isHidden = true |
| | | setChargePrice(model.chargeType, price: model.generalPrice) |
| | | }else{ |
| | | img_offline.isHidden = false |
| | | img_vip.isHidden = true |
| | | view_price.isHidden = true |
| | | image_free.isHidden = true |
| | | } |
| | | } |
| | | |
| | | private func setChargePrice(_ type:ChargeType,price:Double){ |
| | | |
| | | image_free.isHidden = type != .free |
| | | img_vip.isHidden = type != .vipFree |
| | | view_price.isHidden = type != .payment |
| | | |
| | | switch type { |
| | | 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: price.jq_formatFloat, withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | case .free: |
| | | image_free.isHidden = false |
| | | view_price.isHidden = true |
| | | img_vip.isHidden = true |
| | | case .vipFree: |
| | | image_free.isHidden = true |
| | | view_price.isHidden = true |
| | | img_vip.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: "\(price.jq_formatFloat) ", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString |
| | | default:break |
| | | } |
| | | } |
| | | } |
| | |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="cCC-0f-GSV"> |
| | | <rect key="frame" x="0.0" y="0.0" width="178" height="301"/> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_offline" translatesAutoresizingMaskIntoConstraints="NO" id="IJ3-94-7an"> |
| | | <rect key="frame" x="8" y="7" width="34" height="18"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Fb9-IV-vVk"> |
| | | <rect key="frame" x="0.0" y="236" width="178" height="65"/> |
| | | <subviews> |
| | |
| | | <rect key="frame" x="14.666666666666666" y="7.6666666666666661" width="21.333333333333336" height="21.333333333333336"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rmi-DQ-cp9"> |
| | | <rect key="frame" x="14.666666666666664" y="7.6666666666666679" width="25" height="25.000000000000004"/> |
| | | <rect key="frame" x="14.666666666666668" y="7.6666666666666679" width="38.666666666666657" height="25.000000000000004"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kTL-dA-lNA"> |
| | | <rect key="frame" x="0.0" y="0.0" width="25" height="25"/> |
| | | <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="11"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.89803921568627454" green="0.71372549019607845" blue="0.39215686274509803" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="trailing" secondItem="kTL-dA-lNA" secondAttribute="trailing" id="4rs-Ms-47V"/> |
| | | <constraint firstAttribute="trailing" secondItem="kTL-dA-lNA" secondAttribute="trailing" constant="5" id="4rs-Ms-47V"/> |
| | | <constraint firstAttribute="bottom" secondItem="kTL-dA-lNA" secondAttribute="bottom" id="Gk6-tP-QxW"/> |
| | | <constraint firstItem="kTL-dA-lNA" firstAttribute="leading" secondItem="rmi-DQ-cp9" secondAttribute="leading" id="Utr-e1-5lW"/> |
| | | <constraint firstAttribute="width" constant="25.100000000000001" id="j5h-a9-Qj3"/> |
| | | <constraint firstItem="kTL-dA-lNA" firstAttribute="leading" secondItem="rmi-DQ-cp9" secondAttribute="leading" constant="5" id="Utr-e1-5lW"/> |
| | | <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="j5h-a9-Qj3"/> |
| | | <constraint firstItem="kTL-dA-lNA" firstAttribute="top" secondItem="rmi-DQ-cp9" secondAttribute="top" id="qKa-MB-Ohi"/> |
| | | <constraint firstAttribute="height" constant="25.100000000000001" id="xtT-s6-JWf"/> |
| | | </constraints> |
| | |
| | | <constraint firstAttribute="trailing" secondItem="cCC-0f-GSV" secondAttribute="trailing" id="brF-kM-RJ7"/> |
| | | <constraint firstItem="cCC-0f-GSV" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="c6s-ah-BAB"/> |
| | | <constraint firstAttribute="bottom" secondItem="Fb9-IV-vVk" secondAttribute="bottom" id="jcg-ng-xeW"/> |
| | | <constraint firstItem="IJ3-94-7an" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7" id="lJE-19-Y4g"/> |
| | | <constraint firstItem="IJ3-94-7an" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="8" id="sRa-g7-6M4"/> |
| | | <constraint firstItem="deT-IZ-PtZ" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7" id="tPU-LR-azA"/> |
| | | <constraint firstItem="cCC-0f-GSV" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="tmD-tf-gYR"/> |
| | | <constraint firstItem="rmi-DQ-cp9" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="7.5" id="wLQ-lC-KXg"/> |
| | |
| | | <outlet property="cons_maxSubTitle" destination="Fam-ne-FM1" id="L5X-GP-uev"/> |
| | | <outlet property="image_free" destination="deT-IZ-PtZ" id="kI7-7g-aIM"/> |
| | | <outlet property="img_cover" destination="cCC-0f-GSV" id="85x-ue-edy"/> |
| | | <outlet property="img_offline" destination="IJ3-94-7an" id="EYY-vi-GGP"/> |
| | | <outlet property="img_tipPeople" destination="hE1-AV-t8f" id="ObN-5h-jnl"/> |
| | | <outlet property="img_vip" destination="yBF-fO-fwz" id="icq-m9-dx3"/> |
| | | <outlet property="label_num" destination="JaY-19-IAL" id="2RU-X7-0wb"/> |
| | |
| | | </objects> |
| | | <resources> |
| | | <image name="icon_freee" width="50" height="18"/> |
| | | <image name="icon_offline" width="34" height="18"/> |
| | | <image name="icon_use_small" width="10" height="10.666666984558105"/> |
| | | <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/> |
| | | </resources> |
| | |
| | | // |
| | | |
| | | import UIKit |
| | | import JQTools |
| | | |
| | | class Home_Style_4_Inner_CCell: UICollectionViewCell { |
| | | |
| | | @IBOutlet weak var view_text_bg: UIView! |
| | | override func awakeFromNib() { |
| | | @IBOutlet weak var label_title: UILabel! |
| | | @IBOutlet weak var label_subTitle: UILabel! |
| | | @IBOutlet weak var view_text_bg: UIView! |
| | | @IBOutlet weak var label_peopleNum: UILabel! |
| | | @IBOutlet weak var cover_bgImage: UIImageView! |
| | | @IBOutlet weak var view_price: UIView! |
| | | @IBOutlet weak var label_price: UILabel! |
| | | @IBOutlet weak var img_vip: UIImageView! |
| | | @IBOutlet weak var image_free: UIImageView! |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | // Initialization code |
| | | |
| | | |
| | | cover_bgImage.jq_cornerRadius = 10 |
| | | view_price.jq_cornerRadius = 12.55 |
| | | |
| | | let blurEffect = UIBlurEffect(style: .light) |
| | | let visualEffectView = UIVisualEffectView(effect: blurEffect) |
| | |
| | | visualEffectView.layer.masksToBounds = true |
| | | } |
| | | |
| | | |
| | | func setMeditationModel(_ model:MeditationModel){ |
| | | label_title.text = model.meditationTitle |
| | | label_subTitle.text = model.coverDescription |
| | | cover_bgImage.sd_setImage(with: URL(string: model.coverUrl)) |
| | | label_peopleNum.text = model.realLearnedNum.string |
| | | |
| | | image_free.isHidden = model.chargeType != .free |
| | | img_vip.isHidden = model.chargeType != .vipFree |
| | | view_price.isHidden = model.chargeType != .payment |
| | | |
| | | switch model.chargeType { |
| | | 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 |
| | | default:break |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | <?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"/> |
| | |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="demo_pg_1" translatesAutoresizingMaskIntoConstraints="NO" id="0wr-Ds-8U1"> |
| | | <rect key="frame" x="0.0" y="0.0" width="417" height="306"/> |
| | | </imageView> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_freee" translatesAutoresizingMaskIntoConstraints="NO" id="qtk-jE-zYr"> |
| | | <rect key="frame" x="10" y="25" width="50" height="18"/> |
| | | </imageView> |
| | | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uuN-2T-9v0"> |
| | | <rect key="frame" x="20.999999999999996" y="21" width="38.666666666666657" height="25"/> |
| | | <subviews> |
| | | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GYP-BU-qEb"> |
| | | <rect key="frame" x="5.0000000000000018" y="0.0" width="28.666666666666671" height="25"/> |
| | | <fontDescription key="fontDescription" type="system" pointSize="11"/> |
| | | <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <nil key="highlightedColor"/> |
| | | </label> |
| | | </subviews> |
| | | <color key="backgroundColor" red="0.8980392157" green="0.71372549019999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> |
| | | <constraints> |
| | | <constraint firstAttribute="height" constant="25.100000000000001" id="3O3-Wj-ZQk"/> |
| | | <constraint firstItem="GYP-BU-qEb" firstAttribute="top" secondItem="uuN-2T-9v0" secondAttribute="top" id="Tzl-UN-BMh"/> |
| | | <constraint firstItem="GYP-BU-qEb" firstAttribute="leading" secondItem="uuN-2T-9v0" secondAttribute="leading" constant="5" id="XsV-Ix-1OA"/> |
| | | <constraint firstAttribute="bottom" secondItem="GYP-BU-qEb" secondAttribute="bottom" id="Ylc-8p-Xdu"/> |
| | | <constraint firstAttribute="trailing" secondItem="GYP-BU-qEb" secondAttribute="trailing" constant="5" id="jS2-fF-2N8"/> |
| | | <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25.100000000000001" id="kwa-m0-MN9"/> |
| | | </constraints> |
| | | </view> |
| | | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_vip" translatesAutoresizingMaskIntoConstraints="NO" id="3SE-bW-QUN"> |
| | | <rect key="frame" x="22.666666666666664" y="22" width="21.666666666666664" height="21.666666666666671"/> |
| | | </imageView> |
| | |
| | | <color key="backgroundColor" systemColor="systemBackgroundColor"/> |
| | | <constraints> |
| | | <constraint firstItem="3SE-bW-QUN" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" constant="22" id="7pu-mh-ZHA"/> |
| | | <constraint firstItem="uuN-2T-9v0" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" constant="21" id="8Bg-sg-Vj2"/> |
| | | <constraint firstItem="uuN-2T-9v0" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="21" id="DmF-KG-7vU"/> |
| | | <constraint firstAttribute="bottom" secondItem="0wr-Ds-8U1" secondAttribute="bottom" id="IG4-8T-fQI"/> |
| | | <constraint firstItem="1q9-TW-tvm" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="11" id="NDB-uF-c6J"/> |
| | | <constraint firstAttribute="trailing" secondItem="0wr-Ds-8U1" secondAttribute="trailing" id="Rp9-rB-RjA"/> |
| | | <constraint firstItem="qtk-jE-zYr" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" constant="25" id="SJD-A0-8xJ"/> |
| | | <constraint firstItem="0wr-Ds-8U1" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" id="VB8-6e-alw"/> |
| | | <constraint firstAttribute="width" secondItem="uBp-4Z-R7I" secondAttribute="height" multiplier="1:0.734" id="a3p-O7-YVH"/> |
| | | <constraint firstItem="3SE-bW-QUN" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="22.5" id="acq-2b-o03"/> |
| | | <constraint firstItem="qtk-jE-zYr" firstAttribute="leading" secondItem="uBp-4Z-R7I" secondAttribute="leading" constant="10" id="dLN-nd-UyR"/> |
| | | <constraint firstAttribute="bottom" secondItem="1q9-TW-tvm" secondAttribute="bottom" constant="9.5" id="n7D-lz-0VO"/> |
| | | <constraint firstAttribute="trailing" secondItem="1q9-TW-tvm" secondAttribute="trailing" constant="11" id="tQX-QX-bnF"/> |
| | | <constraint firstItem="0wr-Ds-8U1" firstAttribute="top" secondItem="uBp-4Z-R7I" secondAttribute="top" id="yhp-sW-lXD"/> |
| | |
| | | </constraints> |
| | | <size key="customSize" width="455" height="385"/> |
| | | <connections> |
| | | <outlet property="cover_bgImage" destination="0wr-Ds-8U1" id="IXg-DC-fLZ"/> |
| | | <outlet property="image_free" destination="qtk-jE-zYr" id="jEv-yO-uAa"/> |
| | | <outlet property="img_vip" destination="3SE-bW-QUN" id="MVq-Rr-ZaX"/> |
| | | <outlet property="label_peopleNum" destination="ANZ-Kn-isU" id="Qwy-mQ-ZXZ"/> |
| | | <outlet property="label_price" destination="GYP-BU-qEb" id="bVC-be-fMq"/> |
| | | <outlet property="label_subTitle" destination="Enr-D6-xzP" id="nHP-Rn-uin"/> |
| | | <outlet property="label_title" destination="1bZ-4v-DSk" id="X3J-ac-ebe"/> |
| | | <outlet property="view_price" destination="uuN-2T-9v0" id="NBM-4w-kOO"/> |
| | | <outlet property="view_text_bg" destination="1q9-TW-tvm" id="vW7-g9-YjL"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="448.09160305343511" y="138.38028169014086"/> |
| | |
| | | </objects> |
| | | <resources> |
| | | <image name="demo_pg_1" width="353.66665649414062" height="259.66665649414062"/> |
| | | <image name="icon_freee" width="50" height="18"/> |
| | | <image name="icon_play" width="46" height="46"/> |
| | | <image name="icon_use_small" width="10" height="10.666666984558105"/> |
| | | <image name="icon_vip" width="21.666666030883789" height="21.666666030883789"/> |
| | |
| | | let m = viewModel.meditationList[index] |
| | | if m.clientMeditationCategoryVO!.showType == .horizontal{ |
| | | let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_4_TCell") as! Home_Style_4_TCell |
| | | cell.style = .style1 |
| | | cell.style = .style2 |
| | | cell.setModels(m.clientMeditationVOList) |
| | | return cell |
| | | }else if m.clientMeditationCategoryVO!.showType == .vertical{ |
| | |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBannerCCell", for: indexPath) as! HomeRelaxBannerCCell |
| | | cell.contentView.backgroundColor = .jq_randomColor |
| | | cell.setMeditationModel(meditationModels[indexPath.row]) |
| | | return cell |
| | | } |
| | |
| | | } |
| | | |
| | | if m.chargeType == .payment && m.paidStatus == .no{ |
| | | let vc = PaymentOrderVC(courseId: m.id) |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true) |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | return |
| | | } |
| | |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | |
| | | let detailVC = HomeItemDetailVC(id: meditationModels[indexPath.row].id) |
| | | JQ_currentViewController().jq_push(vc: detailVC) |
| | | let m = meditationModels[indexPath.row] |
| | | |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){ |
| | | let detailVC = HomeItemDetailVC(id: meditationModels[indexPath.row].id) |
| | | JQ_currentViewController().jq_push(vc: detailVC) |
| | | }else{ |
| | | if m.chargeType == .vipFree{ |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { |
| | |
| | | |
| | | if style == .style2{ |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Home_Style_4_Inner_CCell", for: indexPath) as! Home_Style_4_Inner_CCell |
| | | cell.setMeditationModel(meditationModels[indexPath.row]) |
| | | return cell |
| | | } |
| | | |
| | |
| | | |
| | | private var items = [HomeTopMenuItem]() |
| | | @IBOutlet weak var btn_1: UIButton! |
| | | @IBOutlet weak var btn_2: UIButton! |
| | | @IBOutlet weak var cons_btn_1_w: NSLayoutConstraint! |
| | | @IBOutlet weak var btn_2: UIButton! |
| | | @IBOutlet weak var cons_btn_2_w: NSLayoutConstraint! |
| | | @IBOutlet weak var btn_3: UIButton! |
| | | |
| | | @IBOutlet weak var cons_btn_3_w: NSLayoutConstraint! |
| | | |
| | | override func awakeFromNib() { |
| | | super.awakeFromNib() |
| | | btn_1.isHidden = true |
| | |
| | | btn_1.tag = 1000 |
| | | btn_2.tag = 1001 |
| | | btn_3.tag = 1002 |
| | | |
| | | btn_1.jq_cornerRadius = 10 |
| | | btn_2.jq_cornerRadius = 10 |
| | | btn_3.jq_cornerRadius = 10 |
| | | |
| | | let w = (JQ_ScreenW - 19 * 2 - 9.5 * 2) / 3.0 |
| | | cons_btn_1_w.constant = w |
| | | cons_btn_2_w.constant = w |
| | | cons_btn_3_w.constant = w |
| | | } |
| | | |
| | | func setHomeTopMenuItem(_ items:[HomeTopMenuItem]){ |
| | |
| | | <?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> |
| | |
| | | <autoresizingMask key="autoresizingMask"/> |
| | | <subviews> |
| | | <stackView opaque="NO" contentMode="scaleToFill" spacing="9.5" translatesAutoresizingMaskIntoConstraints="NO" id="iSv-Jr-Qcx"> |
| | | <rect key="frame" x="53.666666666666657" y="27.333333333333336" width="354.66666666666674" height="126.66666666666666"/> |
| | | <rect key="frame" x="53.666666666666657" y="27.333333333333336" width="354.66666666666674" height="126.33333333333331"/> |
| | | <subviews> |
| | | <button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="30T-1D-WNl"> |
| | | <rect key="frame" x="0.0" y="0.0" width="111.66666666666667" height="126.66666666666667"/> |
| | | <rect key="frame" x="0.0" y="0.0" width="111.66666666666667" height="126.33333333333333"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="111.67" id="fzt-qD-W54"/> |
| | | <constraint firstAttribute="width" secondItem="30T-1D-WNl" secondAttribute="height" multiplier="1:1.134" id="rI9-Qc-ZN4"/> |
| | | </constraints> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="bg_home_3"/> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vXA-OX-SB1"> |
| | | <rect key="frame" x="121.33333333333334" y="0.0" width="112" height="126.66666666666667"/> |
| | | <rect key="frame" x="121.33333333333334" y="-0.3333333333333357" width="112" height="126.66666666666669"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" secondItem="vXA-OX-SB1" secondAttribute="height" multiplier="1:1.134" id="AHL-qK-kMk"/> |
| | | <constraint firstAttribute="width" constant="112" id="Gkt-sc-pFk"/> |
| | | </constraints> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | | <state key="normal" image="bg_home_1"/> |
| | | </button> |
| | | <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xmc-SJ-H1U"> |
| | | <rect key="frame" x="243.00000000000003" y="0.0" width="111.66666666666666" height="126.66666666666667"/> |
| | | <rect key="frame" x="243.00000000000003" y="0.0" width="111.66666666666666" height="126.33333333333333"/> |
| | | <constraints> |
| | | <constraint firstAttribute="width" constant="111.67" id="iGJ-mz-GOJ"/> |
| | | <constraint firstAttribute="width" secondItem="xmc-SJ-H1U" secondAttribute="height" multiplier="1:1.134" id="nka-Yt-rjX"/> |
| | | </constraints> |
| | | <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> |
| | |
| | | <outlet property="btn_1" destination="30T-1D-WNl" id="lfD-IP-ddb"/> |
| | | <outlet property="btn_2" destination="vXA-OX-SB1" id="a4n-5r-1jP"/> |
| | | <outlet property="btn_3" destination="xmc-SJ-H1U" id="uf7-FI-OON"/> |
| | | <outlet property="cons_btn_1_w" destination="fzt-qD-W54" id="yZ2-D5-0WD"/> |
| | | <outlet property="cons_btn_2_w" destination="Gkt-sc-pFk" id="CU8-ai-4oE"/> |
| | | <outlet property="cons_btn_3_w" destination="iGJ-mz-GOJ" id="0QG-q0-JHM"/> |
| | | </connections> |
| | | <point key="canvasLocation" x="174.04580152671755" y="68.661971830985919"/> |
| | | </tableViewCell> |
| | |
| | | } |
| | | |
| | | func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { |
| | | let id = viewModel.dataSource.value!.list[indexPath.row].id |
| | | let vc = HomeItemDetailVC(id: id) |
| | | push(vc: vc) |
| | | let m = viewModel.dataSource.value!.list[indexPath.row] |
| | | |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){ |
| | | let detailVC = HomeItemDetailVC(id: m.id) |
| | | jq_push(vc: detailVC) |
| | | }else{ |
| | | if m.chargeType == .vipFree{ |
| | | let vc = VIPCenterVC() |
| | | jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true) |
| | | jq_push(vc: vc) |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | class PaymentOrderVC: BaseVC { |
| | | |
| | | enum PaymentOrderType { |
| | | case course |
| | | case muse |
| | | } |
| | | |
| | | @IBOutlet weak var image_cover: UIImageView! |
| | | @IBOutlet weak var label_price: UILabel! |
| | | @IBOutlet weak var label_teacher: UILabel! |
| | |
| | | @IBOutlet weak var tf_phone: QMUITextField! |
| | | @IBOutlet weak var label_walletBalance: UILabel! |
| | | @IBOutlet weak var btn_isreadAgreement: UIButton! |
| | | private var courseId:Int! |
| | | private var id:Int! |
| | | private var giftUserId:Int? |
| | | private var giftToOther:Bool! |
| | | private var courseModel:CourseModel? |
| | | private var museModel:MeditationModel? |
| | | private var balance:Double = 0 |
| | | private var type:PaymentOrderType! |
| | | |
| | | init(courseId:Int,giftToOther:Bool = false) { |
| | | init(id:Int,type:PaymentOrderType,giftToOther:Bool = false) { |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.courseId = courseId |
| | | self.id = id |
| | | self.giftToOther = giftToOther |
| | | self.type = type |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | |
| | | |
| | | getBalance() |
| | | |
| | | Services.getCourseDetail(courseId: courseId).subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | | self.courseModel = m |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl)) |
| | | self.label_courseName.text = m.courseTitle |
| | | self.label_price.text = "愈疗币\(m.generalPrice.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)" |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | if type == .course{ |
| | | Services.getCourseDetail(courseId: id).subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | | self.courseModel = m |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl)) |
| | | self.label_courseName.text = m.courseTitle |
| | | self.label_price.text = "愈疗币\(m.generalPrice.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)" |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | if type == .muse{ |
| | | Services.getMeditationDetail(id: id).subscribe(onNext: {data in |
| | | if let m = data.data{ |
| | | self.museModel = m |
| | | self.image_cover.sd_setImage(with: URL(string: m.coverUrl)) |
| | | self.label_courseName.text = m.meditationTitle |
| | | self.label_price.text = "愈疗币\(m.generalPrice.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)" |
| | | } |
| | | }).disposed(by: disposeBag) |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | return |
| | | } |
| | | |
| | | let vc = PaymentOrderResultVC(courseId: courseId, price: m.generalPrice) |
| | | let vc = PaymentOrderResultVC(courseId: id, price: m.generalPrice) |
| | | push(vc: vc) |
| | | } |
| | | } |
| | |
| | | switch serchType{ |
| | | case .course: |
| | | let m = courseViewModel!.dataSource.value!.list[indexPath.row] |
| | | let vc = CourseDetialVC(courseId: m.id) |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){ |
| | | let vc = CourseDetialVC(courseId: m.id) |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | if m.chargeType == .vipFree{ |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | | |
| | | case .muse: |
| | | let m = museViewModel!.dataSource.value!.list[indexPath.row] |
| | | let vc = HomeItemDetailVC(id: m.id) |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | if m.chargeType == .free || (m.chargeType == .vipFree && UserViewModel.getAvatarInfo().isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){ |
| | | let detailVC = HomeItemDetailVC(id: m.id) |
| | | JQ_currentViewController().jq_push(vc: detailVC) |
| | | }else{ |
| | | if m.chargeType == .vipFree{ |
| | | let vc = VIPCenterVC() |
| | | JQ_currentViewController().jq_push(vc: vc) |
| | | }else{ |
| | | let vc = PaymentOrderVC(id: m.id,type: .muse,giftToOther: true) |
| | | JQ_currentViewController().jq_push(vc:vc) |
| | | } |
| | | } |
| | | default:break |
| | | } |
| | | |
| | |
| | | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBanner_2_CCell", for: indexPath) as! HomeRelaxBanner_2_CCell |
| | | |
| | | switch serchType{ |
| | | case .course:break |
| | | |
| | | case .course: |
| | | let m = courseViewModel!.dataSource.value!.list[indexPath.row] |
| | | cell.setCourseModel(m) |
| | | case .muse: |
| | | let m = museViewModel!.dataSource.value!.list[indexPath.row] |
| | | cell.setMeditationModel(m) |
| | |
| | | var backgroundUrl: String = "" |
| | | var cateId: Int = 0 |
| | | var chargeType:ChargeType = .free |
| | | var paidStatus:ConditionType = .no |
| | | var paidStatus:ConditionType = .no //是否购买 |
| | | var coverDescription: String = "" |
| | | var coverUrl: String = "" |
| | | var detailDescription: String = "" |
| | |
| | | var tutorAudioUrl: String = "" |
| | | var virtualLearnedNum: Int = 0 |
| | | var favorite:ConditionType = .no // 是否收藏:1:是 2:否 |
| | | var tutor:String = "" |
| | | var meditationMusicList = [String]() |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /// 获取课程列表 |
| | | class func getCoursePageList(page:Int,pageSize:Int = 20,cateId:String? = nil,courseTitle:String? = nil)->Observable<BaseResponse<BaseResponseList<CourseModel>>>{ |
| | | class func getCoursePageList(page:Int,pageSize:Int = 20,cateId:Int? = nil,courseTitle:String? = nil)->Observable<BaseResponse<BaseResponseList<CourseModel>>>{ |
| | | let params = ParamsAppender.build(url: All_Url) |
| | | params.interface(url: "/course/client/course/course/getCoursePageList") |
| | | .append(key: "pageCurr", value: page) |