无故事王国
2024-07-26 e6636384e031aab3c38710c5d996c2e0d54e8860
fix bug
10个文件已修改
280 ■■■■■ 已修改文件
WanPai.xcodeproj/project.pbxproj 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Common/View/PaymentView.swift 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Info.plist 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Network/NetworkRequest.swift 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Network/Services.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Root/Other/View/CommonDatePickerView.swift 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Root/Welfare/VC/WelfareVC.swift 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Root/Welfare/VC/WelfareVC.xib 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/WanPaiDebug.entitlements 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/WanPaiRelease.entitlements 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai.xcodeproj/project.pbxproj
@@ -2193,7 +2193,7 @@
                CODE_SIGN_ENTITLEMENTS = WanPai/WanPaiDebug.entitlements;
                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
                CODE_SIGN_STYLE = Manual;
                CURRENT_PROJECT_VERSION = 11;
                CURRENT_PROJECT_VERSION = 12;
                DEVELOPMENT_TEAM = "";
                "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 2MWV8K39DV;
                FRAMEWORK_SEARCH_PATHS = (
@@ -2222,7 +2222,7 @@
                    "$(inherited)",
                    "$(PROJECT_DIR)/WanPai/YYPaymentManager/WeChatPay",
                );
                MARKETING_VERSION = 2.0.0;
                MARKETING_VERSION = 2.0.2;
                OTHER_LDFLAGS = (
                    "$(inherited)",
                    "-ObjC",
@@ -2357,7 +2357,7 @@
                CODE_SIGN_ENTITLEMENTS = WanPai/WanPaiRelease.entitlements;
                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
                CODE_SIGN_STYLE = Manual;
                CURRENT_PROJECT_VERSION = 11;
                CURRENT_PROJECT_VERSION = 12;
                DEVELOPMENT_TEAM = "";
                "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 2MWV8K39DV;
                FRAMEWORK_SEARCH_PATHS = (
@@ -2386,7 +2386,7 @@
                    "$(inherited)",
                    "$(PROJECT_DIR)/WanPai/YYPaymentManager/WeChatPay",
                );
                MARKETING_VERSION = 2.0.0;
                MARKETING_VERSION = 2.0.2;
                OTHER_LDFLAGS = (
                    "$(inherited)",
                    "-ObjC",
WanPai/Common/View/PaymentView.swift
@@ -79,6 +79,7 @@
                                sceneDelegate?.window?.addSubview(paymentView)
                                paymentView.cons_bottom.constant = 0
                                //添加支付方式: 如果为空,则为免费
                                var customType = [PayType]()
                                if !paymentView.view_alipay.isHidden{customType.append(.aliPay)}
                                if !paymentView.view_wechat.isHidden{customType.append(.wechat)}
@@ -143,7 +144,7 @@
                @IBAction func paymentAction(_ sender: UIButton) {
                                //场地,游戏,门票 可免费,根据上面的金额,展示了哪些条目判断,如果都没展示,金额全部会是0
                                switch paymentEnumType {
                                                case .yard,.game:
                                                case .yard,.game,.worldCup:
                                                                if payType == nil && customType.count == 0{
                                                                                payType = .coin
                                                                }else{
WanPai/Info.plist
@@ -40,6 +40,7 @@
        <string>iosamap</string>
        <string>qqmap</string>
        <string>googlemap</string>
        <string>openapp.jdmobile</string>
    </array>
    <key>NSAppTransportSecurity</key>
    <dict>
WanPai/Network/NetworkRequest.swift
@@ -190,7 +190,7 @@
        return Observable<BaseResponse<T>>.create{ ob in
            guard NetworkReachabilityManager.init(host: All_Url)!.isReachable else {
                alertError(msg: "当前网络不可用")
//                                                                alertError(msg: "当前网络不可用")
                ob.onError(AFError.invalidURL(url: params.url))
                return Disposables.create{}
            }
@@ -261,144 +261,6 @@
            return Disposables.create{}
        }
    }
//    class func requestData(params: ParamsAppender, method: HTTPMethod, encoding: ParameterEncoding? = nil, progress: Bool = true) -> Observable<Data>{
//        return Observable<Data>.create{ ob in
//            if progress {
//                SVProgressHUD.show()
//            }
//
//            var headers = HTTPHeaders()
//                //            if let token = UserViewModel.getUserInfo()?.token {
//                //                headers.add(name: "Authorization", value: "Bearer" + " " + token)
//                //                LogInfo("USER_token:\(token)")
//                //            }
//            if encoding is JSONEncoding {
//                headers.add(name: "Content-Type", value: "application/json;charset=UTF-8")
//            }
//
//            var newEncoding: ParameterEncoding
//            if encoding != nil {
//                newEncoding = encoding!
//            } else {
//                newEncoding = method == .post ? URLEncoding.httpBody : URLEncoding.queryString
//            }
//
//            sharedSessionManager.request(params.url.absoluteString, method: method, parameters: params.done(), encoding: newEncoding, headers: headers).validate().responseData{response in
//                LogInfo("请求地址:\(params.url)")
//                LogInfo("请求参数:\(params.params)")
//                SVProgressHUD.dismiss()
//                if response.error != nil {
//                    LogError("\(response.error!)")
//                    ob.onError(response.error!)
//                }else if let data = response.data{
//                    LogInfo("返回数据:\(data)")
//                    ob.onNext(data)
//                }
//                ob.onCompleted()
//            }
//            return Disposables.create{}
//        }
//    }
//
//        /// 带code请求的
//        /// - Parameters:
//        ///   - params: <#params description#>
//        ///   - method: <#method description#>
//        ///   - progress: <#progress description#>
//        /// - Returns: <#description#>
//    class func requestCode<T: HandyJSON>(params: ParamsAppender,method: HTTPMethod,progress: Bool = true) -> Observable<BaseResponse<T>>{
//        return Observable<BaseResponse<T>>.create{ ob in
//            if progress {
//                SVProgressHUD.show()
//            }
//            sharedSessionManager.request(params.url.absoluteString, method: method, parameters:
//                                            params.done(),encoding: URLEncoding.default).validate().responseData{response in
//                LogInfo("请求地址:\(params.url)")
//                LogInfo("请求参数:\(params.params)")
//                if response.error != nil {
//                    SVProgressHUD.dismiss()
//                    LogInfo("\(response.error!)")
//                    ob.onError(response.error!)
//                }else if let data = response.data,let jsonString = String(data: data, encoding: String.Encoding.utf8){
//
//                    SVProgressHUD.dismiss()
//                    LogInfo("返回数据:\(jsonString)")
//                    if let next = BaseResponse<T>.deserialize(from: jsonString){
//                        ob.onNext(next)
//                    }else{
//                        SVProgressHUD.dismiss()
//                            //                            alert(msg: "请求失败")
//                        LogInfo("error")
//                    }
//                }else{
//                    SVProgressHUD.dismiss()
//                        //                        alert(msg: "请求失败")
//                    LogInfo("Netrequest-Tag:No data")
//                }
//                ob.onCompleted()
//            }
//            return Disposables.create{}
//        }
//    }
//        /// 上传
//        /// - Parameter params: <#params description#>
//    class func upload<T: HandyJSON>(params: ParamsAppender) -> Observable<BaseResponse<T>> {
//        return Observable<BaseResponse<T>>.create{ob in
//                //            let hud = MBProgressHUD.showAdded(to: screnDelegate!.window!, animated: true)
//                //            hud.bezelView.style = .solidColor
//                //            hud.contentColor = .white
//                //            hud.bezelView.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8)
//                //            hud.bezelView.color = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.8)
//                //            hud.removeFromSuperViewOnHide = true
//
//            var headers = HTTPHeaders()
//                //            if let token = UserViewModel.getUserInfo()?.token {
//                //                headers.add(name: "Authorization", value: "Bearer" + " " + token)
//                //                LogInfo("USER_token:\(token)")
//                //            }
//
//
//            AF.upload(multipartFormData: { data in
//                let p = params
//                LogInfo("Netrequest-Upload-Starting.")
//                for key in p.params{
//                    if let d = key.value as? Data {
//                        LogInfo("Netrequest-Upload-Appending-Data: Length = \(d.count) bytes")
//
//                        data.append(d, withName: key.key, fileName: "\(Date().timeIntervalSince1970).png", mimeType: "image/png")
//                    } else if let url = key.value as? URL {
//                        LogInfo("Netrequest-Upload-Appending-Data: Url = \(url)")
//                        data.append(url, withName: key.key)
//                    }
//                }
//            }, to: params.url, method: .post, headers: headers) .uploadProgress(queue: .main, closure: { progress in
//                    //                progressClosure(progress.fractionCompleted)
//            }).responseJSON(completionHandler: { data in
//                print("upload finished: \(data)")
//
//            }).response { (response) in
//
//                    //                hud.hide(animated: true)
//                switch response.result {
//                    case .success(let dataObj):
//                            //                    alert(msg: "上传成功")
//                        let jsonString = String(data: dataObj ?? Data(), encoding: String.Encoding.utf8)
//                        if let next = BaseResponse<T>.deserialize(from: jsonString){
//                            ob.onNext(next)
//                        }
//                    case .failure(let err):
//                        alert(msg: "上传失败")
//                        print("upload err: \(err)")
//                }
//
//            }
//            return Disposables.create{
//
//            }
//
//        }
//    }
}
extension Dictionary {
    mutating func append(dict: Dictionary) {
WanPai/Network/Services.swift
@@ -68,7 +68,7 @@
                                return NetworkRequest.request(params: params, method: .post, progress: false)
                }
                /// 启动本地游戏
                /// 启动本地游戏【未使用】
                class func game_gameStart(gameId:Int,spaceId:Int,sutuId:Int,userID:Int)->Observable<BaseResponse<SimpleModel>>{
                                let params = ParamsAppender.build(url: Game_Url)
                                                .interface(url: "/v7/user_api/general/gameStart")
@@ -80,7 +80,7 @@
                                return NetworkRequest.request(params: params, method: .post, encoding: JSONEncoding.default, progress: false)
                }
                /// 开门
                /// 开门 【未使用】
                class func game_OpenDoorCode(userID:Int)->Observable<BaseResponse<DoorModel>>{
                                let params = ParamsAppender.build(url: Game_Url)
                                                .interface(url: "/v7/user_api/general/getOpenDoorCode")
WanPai/Root/Other/View/CommonDatePickerView.swift
@@ -71,7 +71,6 @@
            }
        }
        pickerView.frame = sceneDelegate?.window?.frame ?? .zero
        sceneDelegate?.window?.addSubview(pickerView)
@@ -106,11 +105,19 @@
        switch type{
            case .YMD:
                year = years[pickerView.selectedRow(inComponent: 0)]
                                                                if year == Date().jq_nowYear(){
                                                                                month = months[pickerView.selectedRow(inComponent: 1)] - (12 - Date().jq_nowMonth())
                                                                }else{
                month = months[pickerView.selectedRow(inComponent: 1)]
                                                                }
                day = pickerView.selectedRow(inComponent: 2) + 1
            case .YM:
                year = years[pickerView.selectedRow(inComponent: 0)]
                                                                if year == Date().jq_nowYear(){
                                                                                month = months[pickerView.selectedRow(inComponent: 1)] - (12 - Date().jq_nowMonth())
                                                                }else{
                month = months[pickerView.selectedRow(inComponent: 1)]
                                                                }
            case .HHmm:
                hour = hours[pickerView.selectedRow(inComponent: 0)]
                minute = minutes[pickerView.selectedRow(inComponent: 1)]
@@ -213,7 +220,11 @@
        if component == 1{
            switch type{
                case .YM,.YMD:return "\(months[row])月"
                                                                case .YM,.YMD:
                                                                                if pickerView.selectedRow(inComponent: 0) == 0{
                                                                                                return "\(11 - Date().jq_nowMonth() - row - 1)月"
                                                                                }
                                                                                return "\(months[row])月"
                case .HHmm:return String(format: "%02ld分", minutes[row])
                default:return nil
            }
WanPai/Root/Welfare/VC/WelfareVC.swift
@@ -21,6 +21,7 @@
                @IBOutlet weak var scrollView: UIScrollView!
                @IBOutlet weak var coinCollectionView: UICollectionView!
                @IBOutlet weak var btn_coupon: UIButton!
                @IBOutlet weak var btn_shopping: UIButton!
                //    @IBOutlet weak var btn_shoppping: UIButton!
                //    @IBOutlet weak var btn_weekly: UIButton!
                //    @IBOutlet weak var btn_todayFree: UIButton!
@@ -73,6 +74,11 @@
                                                                                self?.btn_coupon.sd_setImage(with: URL(string: coupon), for: .normal, placeholderImage: nil,context: nil)
                                                                }
                                                                if let onlineShop = model.image?.onlineShop{
                                                                                self?.btn_shopping.sd_setImage(with: URL(string: onlineShop), for: .normal, placeholderImage: nil,context: nil)
                                                                }
                                                                if let weeksBenefit = model.image?.weeksBenefit{
                                                                                //                    self?.btn_weekly.sd_setImage(with: URL(string: weeksBenefit), for: .normal, placeholderImage: nil, context: nil)
                                                                }
@@ -94,6 +100,23 @@
                @IBAction func billAction(_ sender: UIButton) {
                                let vc = WelfareBillListVC()
                                push(vc: vc)
                }
                @IBAction func shoppingAction(_ sender: UIButton) {
                                CommonAlertView.show(title: "提示", content: "即将打开京东,是否继续?") { status in
                                                if status{
                                                                if UIApplication.shared.canOpenURL(URL(string: "openApp.jdMobile://")!){
                                                                                let url = "openApp.jdMobile://virtual?params={\"category\":\"jump\",\"des\":\"jshopMain\",\"shopId\":\"15995015\",\"sourceType\":\"APP\",\"sourceValue\":\"1000\",\"landPageId\":\"iOS\"}"
                                                                                UIApplication.shared.open(URL(string: url)!)
                                                                }else{
                                                                                let url = "https://shop.m.jd.com/shop/home?shopId=15995015"
                                                                                UIApplication.shared.open(URL(string: url)!)
                                                                }
                                                }
                                }
                }
                @IBAction func couponsAction(_ sender: UIButton) {
@@ -128,11 +151,11 @@
                                }
                }
                @IBAction func storeAction(_ sender: Any) {
                                let vc = CoinStoreCenterVC()
                                vc.benefitHomeModel = benefitHomeModel
                                push(vc: vc)
                }
//                @IBAction func storeAction(_ sender: Any) {
//                                let vc = CoinStoreCenterVC()
//                                vc.benefitHomeModel = benefitHomeModel
//                                push(vc: vc)
//                }
                override var preferredStatusBarStyle: UIStatusBarStyle{
                                return .lightContent
WanPai/Root/Welfare/VC/WelfareVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<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">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
        <capability name="Named colors" 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"/>
@@ -12,6 +12,7 @@
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="WelfareVC" customModule="WanPai" customModuleProvider="target">
            <connections>
                <outlet property="btn_coupon" destination="Kte-Xd-tVd" id="Xg6-k9-w88"/>
                <outlet property="btn_shopping" destination="D6T-vb-qxm" id="Xh1-D1-Qbr"/>
                <outlet property="btn_vip" destination="6lk-Nd-Tug" id="fed-2F-KP6"/>
                <outlet property="coinCollectionView" destination="yBw-of-rdU" id="g6s-C7-Axj"/>
                <outlet property="img_userProfile" destination="7GZ-X8-dwC" id="nYH-xs-aFt"/>
@@ -31,7 +32,7 @@
                    <rect key="frame" x="0.0" y="59" width="393" height="759"/>
                    <subviews>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1kO-ug-2Gd">
                            <rect key="frame" x="0.0" y="0.0" width="393" height="715"/>
                            <rect key="frame" x="0.0" y="0.0" width="393" height="1123"/>
                            <subviews>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qtJ-Db-Js8">
                                    <rect key="frame" x="0.0" y="0.0" width="393" height="152"/>
@@ -235,8 +236,14 @@
                                        <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
                                    </collectionViewFlowLayout>
                                </collectionView>
                                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="65" translatesAutoresizingMaskIntoConstraints="NO" id="3kA-cL-Ed9">
                                    <rect key="frame" x="0.0" y="399" width="393" height="714"/>
                                    <subviews>
                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X4v-IX-hDR">
                                            <rect key="frame" x="0.0" y="0.0" width="393" height="324.33333333333331"/>
                                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的券包" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GiC-Xf-dhQ">
                                    <rect key="frame" x="30" y="389" width="65.333333333333329" height="22"/>
                                                    <rect key="frame" x="30" y="0.0" width="65.333333333333329" height="22"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="22" id="egh-AJ-1Zh"/>
                                    </constraints>
@@ -244,11 +251,8 @@
                                    <nil key="textColor"/>
                                    <nil key="highlightedColor"/>
                                </label>
                                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="-55" translatesAutoresizingMaskIntoConstraints="NO" id="3kA-cL-Ed9">
                                    <rect key="frame" x="0.0" y="422" width="393" height="283"/>
                                    <subviews>
                                        <button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kte-Xd-tVd">
                                            <rect key="frame" x="0.0" y="0.0" width="393" height="283"/>
                                                    <rect key="frame" x="0.0" y="41" width="393" height="283"/>
                                            <constraints>
                                                <constraint firstAttribute="width" secondItem="Kte-Xd-tVd" secondAttribute="height" multiplier="1:0.72" id="9pS-AQ-07b"/>
                                            </constraints>
@@ -258,6 +262,52 @@
                                            </connections>
                                        </button>
                                    </subviews>
                                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                            <constraints>
                                                <constraint firstItem="GiC-Xf-dhQ" firstAttribute="leading" secondItem="X4v-IX-hDR" secondAttribute="leading" constant="30" id="Dec-YC-3qM"/>
                                                <constraint firstItem="Kte-Xd-tVd" firstAttribute="top" secondItem="GiC-Xf-dhQ" secondAttribute="bottom" constant="19" id="HAU-iu-rUs"/>
                                                <constraint firstItem="Kte-Xd-tVd" firstAttribute="leading" secondItem="X4v-IX-hDR" secondAttribute="leading" id="JPC-1V-Ig8"/>
                                                <constraint firstAttribute="width" secondItem="X4v-IX-hDR" secondAttribute="height" multiplier="1:0.8256" id="hJH-lU-jCy"/>
                                                <constraint firstItem="GiC-Xf-dhQ" firstAttribute="top" secondItem="X4v-IX-hDR" secondAttribute="top" id="xSy-sX-IkY"/>
                                                <constraint firstAttribute="trailing" secondItem="Kte-Xd-tVd" secondAttribute="trailing" id="xTo-qF-TJ3"/>
                                            </constraints>
                                        </view>
                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="okD-Z6-aC0">
                                            <rect key="frame" x="0.0" y="389.33333333333337" width="393" height="324.66666666666663"/>
                                            <subviews>
                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="线上商城" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hzq-tj-g2o">
                                                    <rect key="frame" x="30" y="0.0" width="65.333333333333329" height="22"/>
                                                    <constraints>
                                                        <constraint firstAttribute="height" constant="22" id="xoC-bO-hxC"/>
                                                    </constraints>
                                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                                    <nil key="textColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                                <button opaque="NO" contentMode="scaleAspectFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="D6T-vb-qxm">
                                                    <rect key="frame" x="0.0" y="41" width="393" height="283"/>
                                                    <constraints>
                                                        <constraint firstAttribute="width" secondItem="D6T-vb-qxm" secondAttribute="height" multiplier="1:0.72" id="zKH-g5-bXq"/>
                                                    </constraints>
                                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                                    <connections>
                                                        <action selector="shoppingAction:" destination="-1" eventType="touchUpInside" id="6s8-FW-YEn"/>
                                                    </connections>
                                                </button>
                                            </subviews>
                                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                            <constraints>
                                                <constraint firstItem="Hzq-tj-g2o" firstAttribute="leading" secondItem="okD-Z6-aC0" secondAttribute="leading" constant="30" id="08z-gj-SzQ"/>
                                                <constraint firstAttribute="trailing" secondItem="D6T-vb-qxm" secondAttribute="trailing" id="2Qz-Ji-mSW"/>
                                                <constraint firstItem="Hzq-tj-g2o" firstAttribute="top" secondItem="okD-Z6-aC0" secondAttribute="top" id="9gD-nA-mY5"/>
                                                <constraint firstItem="D6T-vb-qxm" firstAttribute="leading" secondItem="okD-Z6-aC0" secondAttribute="leading" id="K5r-lx-K63"/>
                                                <constraint firstItem="D6T-vb-qxm" firstAttribute="top" secondItem="Hzq-tj-g2o" secondAttribute="bottom" constant="19" id="dzC-KC-UcZ"/>
                                            </constraints>
                                        </view>
                                    </subviews>
                                    <constraints>
                                        <constraint firstItem="okD-Z6-aC0" firstAttribute="width" secondItem="okD-Z6-aC0" secondAttribute="height" multiplier="1:0.8256" id="1ux-eE-MRG"/>
                                    </constraints>
                                </stackView>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
@@ -268,12 +318,10 @@
                                <constraint firstItem="qtJ-Db-Js8" firstAttribute="top" secondItem="1kO-ug-2Gd" secondAttribute="top" id="ArH-VK-Ih1"/>
                                <constraint firstItem="15P-Xn-N3C" firstAttribute="leading" secondItem="1kO-ug-2Gd" secondAttribute="leading" constant="30" id="E7I-5W-IU3"/>
                                <constraint firstAttribute="trailing" secondItem="yBw-of-rdU" secondAttribute="trailing" id="IP4-Gn-Ai6"/>
                                <constraint firstItem="3kA-cL-Ed9" firstAttribute="top" secondItem="GiC-Xf-dhQ" secondAttribute="bottom" constant="11" id="Kru-uw-J4P"/>
                                <constraint firstItem="3kA-cL-Ed9" firstAttribute="leading" secondItem="1kO-ug-2Gd" secondAttribute="leading" id="WeR-P6-ZdV"/>
                                <constraint firstAttribute="trailing" secondItem="3kA-cL-Ed9" secondAttribute="trailing" id="bts-6y-Zk6"/>
                                <constraint firstAttribute="bottom" secondItem="3kA-cL-Ed9" secondAttribute="bottom" constant="10" id="eyB-YC-OJF"/>
                                <constraint firstItem="GiC-Xf-dhQ" firstAttribute="leading" secondItem="1kO-ug-2Gd" secondAttribute="leading" constant="30" id="gY0-D8-1VM"/>
                                <constraint firstItem="GiC-Xf-dhQ" firstAttribute="top" secondItem="yBw-of-rdU" secondAttribute="bottom" constant="17" id="nqA-X1-BoF"/>
                                <constraint firstItem="3kA-cL-Ed9" firstAttribute="top" secondItem="yBw-of-rdU" secondAttribute="bottom" constant="27" id="nHY-om-rxY"/>
                                <constraint firstItem="yBw-of-rdU" firstAttribute="top" secondItem="15P-Xn-N3C" secondAttribute="bottom" constant="9" id="tn6-cH-k2u"/>
                                <constraint firstItem="qtJ-Db-Js8" firstAttribute="leading" secondItem="1kO-ug-2Gd" secondAttribute="leading" id="vz9-lC-ac4"/>
                            </constraints>
@@ -309,7 +357,7 @@
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="tertiarySystemGroupedBackgroundColor">
            <color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
            <color red="0.94901960780000005" green="0.94901960780000005" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </systemColor>
    </resources>
</document>
WanPai/WanPaiDebug.entitlements
@@ -4,7 +4,7 @@
<dict>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>webcredentials:www.weparklife.com/</string>
        <string>webcredentials:www.weparklife.com/app/</string>
    </array>
</dict>
</plist>
WanPai/WanPaiRelease.entitlements
@@ -4,7 +4,7 @@
<dict>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>webcredentials:www.weparklife.com/</string>
        <string>webcredentials:www.weparklife.com/app/</string>
    </array>
</dict>
</plist>