PODS:
+ - AMap3DMap-NO-IDFA (10.0.700):
+ - AMapFoundation-NO-IDFA (>= 1.8.0)
+ - AMapFoundation-NO-IDFA (1.8.2)
+ - AMapLocation-NO-IDFA (2.10.0):
+ - AMapFoundation-NO-IDFA (>= 1.8.0)
+ - AMapSearch-NO-IDFA (9.7.0):
+ - AMapFoundation-NO-IDFA (>= 1.8.0)
- CryptoSwift (1.8.4)
- DeviceKit (5.4.0)
- DGActivityIndicatorView (2.1.1)
- ZipArchive (1.4.0)
DEPENDENCIES:
+ - AMap3DMap-NO-IDFA (= 10.0.700)
+ - AMapLocation-NO-IDFA
+ - AMapSearch-NO-IDFA (= 9.7.0)
- CryptoSwift
- DeviceKit (~> 5.4.0)
- DGActivityIndicatorView
SPEC REPOS:
https://gitee.com/mirrors/CocoaPods-Specs.git:
+ - AMap3DMap-NO-IDFA
+ - AMapFoundation-NO-IDFA
+ - AMapLocation-NO-IDFA
+ - AMapSearch-NO-IDFA
- CryptoSwift
- DeviceKit
- DGActivityIndicatorView
- ZipArchive
SPEC CHECKSUMS:
+ AMap3DMap-NO-IDFA: e029d65ea35d3e4c0a948e1dab9e77109bf0e86a
+ AMapFoundation-NO-IDFA: 6ce0ef596d4eb8d934ff498e56747b6de1247b05
+ AMapLocation-NO-IDFA: 735791aeb1ba52dff666e4158b86caf4b68b5be7
+ AMapSearch-NO-IDFA: 749f73d5a773758f01a24eb8872f8798c8b47cb4
CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
DeviceKit: bd34bb1766d926c3cc5a5f6e3e9a6dd10148b805
DGActivityIndicatorView: ff2c76073d79692f724863c8dd38685866a03cb6
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
ZipArchive: e25a4373192673e3229ac8d6e9f64a3e5713c966
-PODFILE CHECKSUM: 0164676b37eb80faebf2999f878a492c1d277ddd
+PODFILE CHECKSUM: 72f4eaacbe6e66655fb7c7aef1807fd74a1fd9b2
COCOAPODS: 1.16.2
3F887B9A2E38D8DC00C98658 /* Resources */,
5A934A35F54A5620CFD3C08A /* [CP] Embed Pods Frameworks */,
3FEFE9092F1B252000D82F17 /* Embed Frameworks */,
+ C952A11BAF04A31F5BE85A2D /* [CP] Copy Pods Resources */,
);
buildRules = (
);
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
+ C952A11BAF04A31F5BE85A2D /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ inputPaths = (
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
FEE3A20D8A2FA81E622C488B /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
--- /dev/null
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 145@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 145@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 147@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 147@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 146@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 146@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Slice 131.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 131@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 131@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Slice 130.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 130@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 130@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
--- /dev/null
+{
+ "images" : [
+ {
+ "filename" : "Slice 132.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Slice 132@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Slice 132@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
App.shared.window = window
// window?.rootViewController = BaseTC()
-// window?.rootViewController = UINavigationController(rootViewController: SportHomeVC())
- AppLaunch.start()
+ MapManager.shared.setupSdk()
+ window?.rootViewController = UINavigationController(rootViewController: ReadyVC())
+// AppLaunch.start()
}
func sceneDidDisconnect(_ scene: UIScene) {
--- /dev/null
+//
+// Untitled.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+
+extension ReadyVC{
+ class CountdownView: BaseView {
+ let label = UILabel()
+ let skip = UILabel()
+ var timer:Timer!
+ var count = 3
+
+ override func setupViews() {
+ addSubviews([label,skip])
+ label.do { v in
+ v.textColor = .color(.first)
+ v.font = .bold(210)
+ v.textAlignment = .center
+ v.text = "\(count)"
+ }
+ skip.do { v in
+ v.textColor = .color(.first)
+ v.font = .regular(14)
+ v.textAlignment = .center
+ v.text = "直接开始".l10n
+ v.yc.addTap(target: self, action: #selector(skipAction))
+
+ let line = UIView()
+ line.backgroundColor = .color(.first)
+ v.addSubview(line)
+ line.snp.makeConstraints { make in
+ make.height.equalTo(1)
+ make.left.right.equalToSuperview()
+ make.bottom.equalToSuperview().offset(4)
+ }
+ }
+ backgroundColor = .white
+ }
+
+ override func setupLayout() {
+ label.snp.makeConstraints { make in
+ make.center.equalToSuperview()
+ }
+ skip.snp.makeConstraints { make in
+ make.bottom.equalToSuperview().inset(100)
+ make.centerX.equalToSuperview()
+ }
+ }
+ override func setupData() {
+ timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
+ }
+ @objc func timerAction(){
+ count -= 1
+ label.text = "\(count)"
+ print(count)
+ if count == 0 {
+ skipAction()
+ }
+ }
+ static func show(in view:UIView){
+ let countView = CountdownView()
+ view.addSubview(countView)
+ countView.snp.makeConstraints { make in
+ make.edges.equalToSuperview()
+ }
+ }
+ @objc func skipAction(){
+ timer.invalidate()
+ App.shared.goToPage(BaseVC())
+ removeFromSuperview()
+ }
+ }
+
+}
--- /dev/null
+//
+// Untitled.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+
+class CustomMapView: BaseView {
+
+
+
+}
--- /dev/null
+//
+// FooterView.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+
+extension ReadyVC{
+ class FooterView: BaseView {
+ let targetBtn = ButtonItem()
+ let routeBtn = ButtonItem()
+ let goBtn = UIImageView()
+
+ override func setupViews() {
+ addSubviews([targetBtn,goBtn,routeBtn])
+ targetBtn.do { v in
+ v.titleLabel.text = "目标".l10n
+ v.icon.image = UIImage(named: "ready_target")
+ v.yc.setCornerRadius(18)
+ v.yc.addTap(target: self, action: #selector(targetAction))
+ }
+ goBtn.do { v in
+ v.image = UIImage(named: "ready_go")
+ v.yc.addTap(target: self, action: #selector(goAction))
+ }
+ routeBtn.do { v in
+ v.yc.setCornerRadius(18)
+ v.titleLabel.text = "路线".l10n
+ v.icon.image = UIImage(named: "ready_route")
+ v.yc.addTap(target: self, action: #selector(routeAction))
+ }
+ }
+
+ override func setupLayout() {
+ goBtn.snp.makeConstraints { make in
+ make.size.equalTo(90)
+ make.centerY.equalToSuperview()
+ make.centerX.equalTo(kScreenWid/2)
+ }
+
+ targetBtn.snp.makeConstraints { make in
+ make.width.equalTo(90)
+ make.height.equalTo(36)
+ make.centerY.equalToSuperview()
+ make.right.equalTo(goBtn.snp.left).offset(-27)
+ }
+ routeBtn.snp.makeConstraints { make in
+ make.width.equalTo(90)
+ make.height.equalTo(36)
+ make.centerY.equalToSuperview()
+ make.left.equalTo(goBtn.snp.right).offset(27)
+ }
+
+ }
+
+ @objc func targetAction(){
+
+ }
+ @objc func goAction(){
+ CountdownView.show(in: App.shared.window!)
+ }
+ @objc func routeAction(){
+
+ }
+
+ class ButtonItem: BaseView {
+ let icon = UIImageView()
+ let titleLabel = UILabel()
+
+ override func setupViews() {
+ addSubviews([titleLabel,icon])
+ icon.do { v in
+ }
+ titleLabel.do { v in
+ v.textColor = .color(.first)
+ v.font = .regular(14)
+ }
+ backgroundColor = .white
+ }
+
+ override func setupLayout() {
+ icon.snp.makeConstraints { make in
+ make.size.equalTo(24)
+ make.centerY.equalToSuperview()
+ make.left.equalToSuperview().inset(16)
+ }
+ titleLabel.snp.makeConstraints { make in
+ make.centerY.equalToSuperview()
+ make.left.equalTo(43)
+ }
+ }
+ }
+
+ }
+
+}
--- /dev/null
+//
+// Untitled.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+import MAMapKit
+
+class ReadyVC: BaseVC {
+ let headerView = UIView()
+ var mapView:MAMapView!
+ let footerView = FooterView()
+
+ override func setupViews() {
+ mapView = MAMapView(frame: .zero)
+ mapView.delegate = self
+ mapView.showsUserLocation = true
+ mapView.zoomLevel = 16
+ mapView.userTrackingMode = .followWithHeading
+
+ view.addSubviews([headerView,mapView,footerView])
+ headerView.do { v in
+ v.backgroundColor = .white
+ }
+ mapView.do { v in
+ v.backgroundColor = .green
+
+ }
+ footerView.do { v in
+// v.backgroundColor = .blue
+ }
+ }
+ override func setupLayout() {
+ headerView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.top.equalToSuperview().inset(kNavBtm + 20)
+ make.height.equalTo(100)
+ }
+ footerView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.bottom.equalToSuperview()
+ make.height.equalTo(200)
+ }
+ mapView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.top.equalTo(headerView.snp.bottom)
+ make.bottom.equalTo(footerView.snp.top)
+ }
+
+ }
+ override func setupData() {
+
+ }
+
+}
+
+extension ReadyVC:MAMapViewDelegate{
+ func mapViewRequireLocationAuth(_ locationManager: CLLocationManager!) {
+// locationManager.requestAlwaysAuthorization()
+ }
+}
+++ /dev/null
-//
-// SportVC.swift
-// ShenYin
-//
-// Created by liangshi on 2026/1/20.
-//
-
-import UIKit
-import JXSegmentedView
-
-class SportRootView: BaseView{
- override func setupViews() {
- backgroundColor = UIColor.random()
- }
-}
-
-extension SportRootView: JXSegmentedListContainerViewListDelegate {
- func listView() -> UIView {
- return self
- }
-}
+++ /dev/null
-//
-// SportTypeView.swift
-// ShenYin
-//
-// Created by liangshi on 2026/1/20.
-//
-import UIKit
-
-class SportTypeView: BaseView{
- override func setupViews() {
-
- }
-
-
- class SportTypeView: BaseView{
- override func setupViews() {
-
- }
-
-
-
- }
-}
--- /dev/null
+//
+// MapManager.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+import MAMapKit
+import UIKit
+
+class MapManager {
+ static let shared = MapManager()
+
+ func setupSdk(){
+ AMapServices.shared().apiKey = "57aebc5a63fa3ccb8cb81ae0cab649d1"
+ //判断是否是首次启动
+ if !UserDefaults.standard.bool(forKey: "agreeStatus") {
+ //添加隐私合规弹窗
+ self.addAlertController()
+ //更新App是否显示隐私弹窗的状态,隐私弹窗是否包含高德SDK隐私协议内容的状态. since 8.1.0
+ MAMapView.updatePrivacyShow(AMapPrivacyShowStatus.didShow, privacyInfo: AMapPrivacyInfoStatus.didContain)
+ }
+ }
+
+
+ func addAlertController(){
+
+ let paragraphStyle : NSMutableParagraphStyle = NSMutableParagraphStyle.init()
+ paragraphStyle.alignment = NSTextAlignment.left
+
+ let message : NSMutableAttributedString = NSMutableAttributedString.init(string: "\n亲,感谢您对XXX一直以来的信任!我们依据最新的监管要求更新了XXX《隐私权政策》,特向您说明如下\n1.为向您提供交易相关基本功能,我们会收集、使用必要的信息;\n2.基于您的明示授权,我们可能会获取您的位置(为您提供附近的商品、店铺及优惠资讯等)等信息,您有权拒绝或取消授权;\n3.我们会采取业界先进的安全措施保护您的信息安全;\n4.未经您同意,我们不会从第三方处获取、共享或向提供您的信息;", attributes: [NSAttributedString.Key.paragraphStyle:paragraphStyle])
+
+ message.setAttributes([NSAttributedString.Key.foregroundColor:UIColor.blue], range: message.mutableString.range(of: "《隐私权政策》"))
+
+ let alert : UIAlertController = UIAlertController.init(title: "温馨提示(隐私合规示例)", message: "", preferredStyle: UIAlertController.Style.alert)
+
+ alert.setValue(message, forKey: "attributedMessage")
+
+ let conform : UIAlertAction = UIAlertAction.init(title: "同意", style: UIAlertAction.Style.default) { UIAlertAction in
+ UserDefaults.standard.set(true, forKey: "agreeStatus")
+ UserDefaults.standard.synchronize()
+ //更新用户授权高德SDK隐私协议状态. since 8.1.0
+ MAMapView.updatePrivacyAgree(AMapPrivacyAgreeStatus.didAgree)
+ }
+
+ let cancel : UIAlertAction = UIAlertAction.init(title: "不同意", style: UIAlertAction.Style.default) { UIAlertAction in
+ UserDefaults.standard.set(false, forKey: "agreeStatus")
+ UserDefaults.standard.synchronize()
+ //更新用户授权高德SDK隐私协议状态. since 8.1.0
+ MAMapView.updatePrivacyAgree(AMapPrivacyAgreeStatus.notAgree)
+ }
+
+ alert.addAction(conform)
+ alert.addAction(cancel)
+
+ App.shared.window?.rootViewController?.present(alert, animated: true, completion: nil)
+ }
+}
--- /dev/null
+//
+// DataView.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+
+extension SportRootView{
+ class DataView: BaseView {
+
+
+ override func setupViews() {
+ backgroundColor = .color(.cellBg)
+ }
+
+ override func setupLayout() {
+
+ }
+ }
+}
--- /dev/null
+//
+// GroupView.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+
+extension SportRootView{
+ class GroupView: BaseView {
+
+
+ override func setupViews() {
+ backgroundColor = .color(.cellBg)
+ }
+
+ override func setupLayout() {
+
+ }
+ }
+}
--- /dev/null
+//
+// PlanView.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+
+extension SportRootView{
+ class PlanView: BaseView {
+
+
+ override func setupViews() {
+ backgroundColor = .color(.cellBg)
+ }
+
+ override func setupLayout() {
+
+ }
+ }
+}
--- /dev/null
+//
+// RouteView.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/21.
+//
+
+extension SportRootView{
+ class RouteView: BaseView {
+
+
+ override func setupViews() {
+ backgroundColor = .color(.cellBg)
+ }
+
+ override func setupLayout() {
+
+ }
+ }
+}
--- /dev/null
+//
+// SportVC.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/20.
+//
+
+import UIKit
+import JXSegmentedView
+
+class SportRootView: BaseView{
+ let sportType = SportTypeView()
+ let dataView = DataView()
+ let groupView = GroupView()
+ let planView = PlanView()
+ let routeView = RouteView()
+
+ override func setupViews() {
+ addSubviews([sportType,dataView,groupView,planView,routeView])
+ dataView.do { v in
+ v.yc.setCornerRadius(12)
+ }
+ groupView.do { v in
+ v.yc.setCornerRadius(12)
+ }
+ planView.do { v in
+ v.yc.setCornerRadius(12)
+ }
+ routeView.do { v in
+ v.yc.setCornerRadius(12)
+ }
+ }
+ override func setupLayout() {
+ sportType.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.top.equalToSuperview().inset(20)
+ make.height.equalTo(80)
+ }
+ dataView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(18)
+ make.top.equalTo(sportType.snp.bottom).offset(10)
+ make.height.equalTo(123)
+ }
+ groupView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(18)
+ make.top.equalTo(dataView.snp.bottom).offset(10)
+ make.height.equalTo(140)
+ }
+ planView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(18)
+ make.top.equalTo(groupView.snp.bottom).offset(10)
+ make.height.equalTo(65)
+ }
+ routeView.snp.makeConstraints { make in
+ make.left.right.equalToSuperview().inset(18)
+ make.top.equalTo(planView.snp.bottom).offset(10)
+ make.height.equalTo(180)
+ }
+ }
+}
+
+extension SportRootView: JXSegmentedListContainerViewListDelegate {
+ func listView() -> UIView {
+ return self
+ }
+}
--- /dev/null
+//
+// SportTypeView.swift
+// ShenYin
+//
+// Created by liangshi on 2026/1/20.
+//
+
+
+enum SportType{
+ case run
+ case ride
+ case walk
+
+ var name:String{
+ switch self {
+ case .run:
+ return "户外跑步"
+ case .ride:
+ return "户外骑行"
+ case .walk:
+ return "健走"
+ }
+ }
+ var icon:String{
+ switch self {
+ case .run:
+ return "sport_run"
+ case .ride:
+ return "sport_ride"
+ case .walk:
+ return "sport_walk"
+ }
+ }
+ static var all:[SportType] = [.run,.ride,.walk]
+}
+
+class SportTypeView: BaseView {
+ let run = SportTypeItem()
+ let ride = SportTypeItem()
+ let walk = SportTypeItem()
+
+ override func setupViews() {
+ addSubviews([run,ride,walk])
+ run.do { v in
+ v.type = .run
+ v.yc.addTap(target: self, action: #selector(runAction))
+ }
+ ride.do { v in
+ v.type = .ride
+ v.yc.addTap(target: self, action: #selector(rideAction))
+ }
+ walk.do { v in
+ v.type = .walk
+ v.yc.addTap(target: self, action: #selector(walkAction))
+ }
+ }
+
+ override func setupLayout() {
+ run.snp.makeConstraints { make in
+ make.left.equalToSuperview().inset(38)
+ make.width.equalTo(50)
+ make.height.equalTo(80)
+ make.top.equalToSuperview()
+ }
+ ride.snp.makeConstraints { make in
+ make.left.equalTo(run.snp.right).offset(32)
+ make.width.equalTo(50)
+ make.height.equalTo(80)
+ make.top.equalToSuperview()
+ }
+ walk.snp.makeConstraints { make in
+ make.left.equalTo(ride.snp.right).offset(32)
+ make.width.equalTo(50)
+ make.height.equalTo(80)
+ make.top.equalToSuperview()
+ }
+ }
+ @objc func runAction(){
+ App.shared.goToPage(ReadyVC())
+ }
+ @objc func rideAction(){
+
+ }
+ @objc func walkAction(){
+
+ }
+}
+
+class SportTypeItem: BaseView {
+ private let icon = UIImageView()
+ private let titleLabel = UILabel()
+ var type:SportType = .run{
+ didSet{
+ titleLabel.text = type.name
+ }
+ }
+ override func setupViews() {
+ addSubviews([titleLabel,icon])
+ icon.do { v in
+ v.image = UIImage(named: type.icon)
+ }
+ titleLabel.do { v in
+ v.textColor = .color(.first)
+ v.font = .regular(10)
+ }
+ }
+
+ override func setupLayout() {
+ icon.snp.makeConstraints { make in
+ make.size.equalTo(50)
+ make.top.equalToSuperview()
+ make.centerX.equalToSuperview()
+ }
+ titleLabel.snp.makeConstraints { make in
+ make.top.equalTo(icon.snp.bottom).offset(5)
+ make.centerX.equalTo(icon)
+ }
+ }
+}
// AudioPlayView.shared.show()
self.view.addSubview(AudioPlayView.shared)
+// MapManager.shared.setupSdk()
}
override func setupLayout(){
pod 'HorizonCalendar'#日历
-# pod 'DSWaveformImage'
+
+ #高德地图
+ pod 'AMap3DMap-NO-IDFA', '10.0.700'
+ pod 'AMapLocation-NO-IDFA'
+ pod 'AMapSearch-NO-IDFA', '9.7.0'
-# pod 'NVActivityIndicatorView', '~> 5.1.1' # 最新稳定版
-# pod 'EZAudio', '~> 1.1.0'
end
target 'playboy' do