Browse Source

changed RechargePayment

pull/1/head
InKwon James Kim 5 years ago
parent
commit
49d75cf57a
  1. 2
      GME Remit/Extensions/UIColor+Ext.swift
  2. 1279
      GME Remit/Modules/PowerCallModules/PhoneCardRecharge/User Interface/View/PhoneCardRecharge.storyboard
  3. 19
      GME Remit/Modules/PowerCallModules/PhoneCardRecharge/User Interface/View/PhoneCardRechargeViewController.swift
  4. 94
      GME Remit/Modules/PowerCallModules/RechargePayment/User Interface/View/RechargePayment.storyboard
  5. 99
      GME Remit/Modules/PowerCallModules/RechargePayment/User Interface/View/RechargePaymentViewController.swift
  6. 8
      GME Remit/Utilities/TablePresenter/User Interface/View/TablePresenter.storyboard

2
GME Remit/Extensions/UIColor+Ext.swift

@ -20,7 +20,7 @@ extension UIColor {
}
// origin: ed1b24 // vivid red: ff2727 // cherry tomato: E94B3C // coral red: ff4040
// UIColor(red:0.92, green:0.12, blue:0.18, alpha:1.0)
// UIColor(red:0.92, green:0.12, blue:0.18, alpha:1.0) // fiesta #dd1923
// #f04b4c
class var themeRed: UIColor {
return .init(hex: "#ed1b24")

1279
GME Remit/Modules/PowerCallModules/PhoneCardRecharge/User Interface/View/PhoneCardRecharge.storyboard
File diff suppressed because it is too large
View File

19
GME Remit/Modules/PowerCallModules/PhoneCardRecharge/User Interface/View/PhoneCardRechargeViewController.swift

@ -32,6 +32,7 @@ class PhoneCardRechargeViewController: UIViewController {
@IBOutlet private weak var mycashAmountLabel: UILabel!
@IBOutlet private weak var typeSegment: UISegmentedControl!
@IBOutlet private weak var mainContainerView: UIView!
@IBOutlet private weak var menuContainerView: UIStackView!
// Regular Type
@IBOutlet private weak var regularTypeContainerView: UIView!
@ -136,6 +137,9 @@ extension PhoneCardRechargeViewController {
amountButton1, amountButton2, amountButton3,
amountButton4, amountButton5, amountButton6
]
mobileTextField.validCondition = {!$0.isEmpty && $0.count == 11}
mobileTextField.errorMessage = "Invalid Mobile Number"
}
private func setBinding() {
@ -327,6 +331,21 @@ extension PhoneCardRechargeViewController {
.withLatestFrom(mobileTextField.rx.text.orEmpty)
.bind(to: selectedMobile)
.disposed(by: disposeBag)
mobileTextField.rx.controlEvent(.editingDidEnd)
.withLatestFrom(mobileTextField.valid) {$1}
.asDriverOnErrorJustComplete()
.drive(onNext: { [weak self] in
self?.menuContainerView.animateHidden(isHidden: !$0)
})
.disposed(by: disposeBag)
mobileTextField.rx.controlEvent(.editingDidBegin)
.asDriver()
.drive(onNext: { [weak self] in
self?.menuContainerView.animateHidden(isHidden: true)
})
.disposed(by: disposeBag)
}
}

94
GME Remit/Modules/PowerCallModules/RechargePayment/User Interface/View/RechargePayment.storyboard

@ -29,7 +29,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l8P-RE-lSE">
<rect key="frame" x="0.0" y="312" width="375" height="355"/>
<rect key="frame" x="0.0" y="362" width="375" height="305"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fDs-Q8-JOQ">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
@ -260,19 +260,13 @@
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Dz3-R4-DPX">
<rect key="frame" x="10" y="245" width="355" height="95"/>
<rect key="frame" x="10" y="245" width="355" height="60"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="lhy-bf-cVT">
<rect key="frame" x="0.0" y="0.0" width="355" height="95"/>
<rect key="frame" x="0.0" y="0.0" width="355" height="60"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="249" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xQe-W2-GHn">
<rect key="frame" x="0.0" y="0.0" width="355" height="25"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="e74-Cq-lAv">
<rect key="frame" x="0.0" y="25" width="355" height="60"/>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="e74-Cq-lAv">
<rect key="frame" x="0.0" y="0.0" width="355" height="50"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="aXl-Ow-5kT">
<rect key="frame" x="0.0" y="0.0" width="355" height="50"/>
@ -295,73 +289,19 @@
<constraints>
<constraint firstItem="aXl-Ow-5kT" firstAttribute="top" secondItem="e74-Cq-lAv" secondAttribute="top" id="7Wh-45-OD5"/>
<constraint firstItem="aXl-Ow-5kT" firstAttribute="leading" secondItem="e74-Cq-lAv" secondAttribute="leading" id="H9I-eW-o8W"/>
<constraint firstAttribute="bottom" secondItem="aXl-Ow-5kT" secondAttribute="bottom" constant="10" id="Rgm-d1-TW8"/>
<constraint firstAttribute="bottom" secondItem="aXl-Ow-5kT" secondAttribute="bottom" id="Rgm-d1-TW8"/>
<constraint firstAttribute="trailing" secondItem="aXl-Ow-5kT" secondAttribute="trailing" id="WeP-s6-jqH"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TeZ-k6-k8k">
<rect key="frame" x="0.0" y="25" width="355" height="70"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="WWK-jH-jsl">
<rect key="frame" x="0.0" y="0.0" width="355" height="70"/>
<subviews>
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0ad-l4-Wf0">
<rect key="frame" x="0.0" y="0.0" width="355" height="50"/>
<subviews>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="gwv-fP-XLK">
<rect key="frame" x="0.0" y="10" width="355" height="31"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="2P0-Vu-Ie0"/>
</constraints>
<segments>
<segment title="Check(Credit) Card"/>
<segment title="ATM(Interent Banking)" enabled="NO"/>
</segments>
<color key="tintColor" name="ThemeRed"/>
</segmentedControl>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="gwv-fP-XLK" firstAttribute="leading" secondItem="0ad-l4-Wf0" secondAttribute="leading" id="6ys-Le-dtS"/>
<constraint firstItem="gwv-fP-XLK" firstAttribute="top" secondItem="0ad-l4-Wf0" secondAttribute="top" constant="10" id="UQD-Vl-PaR"/>
<constraint firstAttribute="trailing" secondItem="gwv-fP-XLK" secondAttribute="trailing" id="hEs-Jf-c7x"/>
<constraint firstAttribute="bottom" secondItem="gwv-fP-XLK" secondAttribute="bottom" constant="10" id="rIN-h8-y9I"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zAj-ls-81U">
<rect key="frame" x="0.0" y="0.0" width="355" height="70"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Lgd-0i-84N">
<rect key="frame" x="0.0" y="10" width="355" height="50"/>
<color key="backgroundColor" name="ThemeRed"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="Vb4-21-Po4"/>
</constraints>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Medium" family="San Francisco Display" pointSize="17"/>
<state key="normal" title="Pay ₩0">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="Lgd-0i-84N" secondAttribute="bottom" constant="10" id="55P-Zp-oCZ"/>
<constraint firstAttribute="trailing" secondItem="Lgd-0i-84N" secondAttribute="trailing" id="R7k-4v-UAQ"/>
<constraint firstItem="Lgd-0i-84N" firstAttribute="leading" secondItem="zAj-ls-81U" secondAttribute="leading" id="TsV-pc-2J9"/>
<constraint firstItem="Lgd-0i-84N" firstAttribute="top" secondItem="zAj-ls-81U" secondAttribute="top" constant="10" id="bLC-0y-Muj"/>
</constraints>
</view>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="249" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xQe-W2-GHn">
<rect key="frame" x="0.0" y="50" width="355" height="10"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="WWK-jH-jsl" secondAttribute="bottom" id="4gp-NL-VFA"/>
<constraint firstItem="WWK-jH-jsl" firstAttribute="top" secondItem="TeZ-k6-k8k" secondAttribute="top" id="ATp-v7-J7W"/>
<constraint firstItem="WWK-jH-jsl" firstAttribute="leading" secondItem="TeZ-k6-k8k" secondAttribute="leading" id="ON2-i2-GpE"/>
<constraint firstAttribute="trailing" secondItem="WWK-jH-jsl" secondAttribute="trailing" id="ZAl-ui-6FC"/>
<constraint firstAttribute="height" constant="10" id="Q9N-TB-mFf"/>
</constraints>
</view>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
@ -371,14 +311,13 @@
<constraint firstAttribute="trailing" secondItem="lhy-bf-cVT" secondAttribute="trailing" id="Qmn-JZ-TpI"/>
<constraint firstItem="lhy-bf-cVT" firstAttribute="top" secondItem="Dz3-R4-DPX" secondAttribute="top" id="YLV-hl-JYx"/>
<constraint firstAttribute="bottom" secondItem="lhy-bf-cVT" secondAttribute="bottom" id="eBg-K0-KUF"/>
<constraint firstAttribute="height" constant="95" id="qur-FX-UfR"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" name="ThemeMainBackground"/>
<constraints>
<constraint firstItem="Dz3-R4-DPX" firstAttribute="top" secondItem="esj-KG-eg7" secondAttribute="bottom" constant="10" id="6Qd-va-Eme"/>
<constraint firstAttribute="bottom" secondItem="Dz3-R4-DPX" secondAttribute="bottom" constant="15" id="82Y-eb-bQY"/>
<constraint firstAttribute="bottom" secondItem="Dz3-R4-DPX" secondAttribute="bottom" id="82Y-eb-bQY"/>
<constraint firstItem="Dz3-R4-DPX" firstAttribute="leading" secondItem="l8P-RE-lSE" secondAttribute="leading" constant="10" id="HWe-kr-5fw"/>
<constraint firstItem="fDs-Q8-JOQ" firstAttribute="top" secondItem="l8P-RE-lSE" secondAttribute="top" id="UpW-X3-hRf"/>
<constraint firstAttribute="trailing" secondItem="Dz3-R4-DPX" secondAttribute="trailing" constant="10" id="YBs-HW-Zgi"/>
@ -394,19 +333,18 @@
<constraints>
<constraint firstItem="l8P-RE-lSE" firstAttribute="leading" secondItem="9Uc-9s-KgO" secondAttribute="leading" id="AO4-6j-VaV"/>
<constraint firstAttribute="trailing" secondItem="l8P-RE-lSE" secondAttribute="trailing" id="vDN-X5-4Uz"/>
<constraint firstAttribute="bottom" secondItem="l8P-RE-lSE" secondAttribute="bottom" id="zYY-Oo-67e"/>
<constraint firstItem="O1T-1R-Sun" firstAttribute="bottom" secondItem="l8P-RE-lSE" secondAttribute="bottom" id="zYY-Oo-67e"/>
</constraints>
<viewLayoutGuide key="safeArea" id="O1T-1R-Sun"/>
</view>
<connections>
<outlet property="balanceLabel" destination="sVm-np-EVy" id="noT-sF-BtH"/>
<outlet property="finalPaymentLabel" destination="9SX-XC-bU3" id="Cua-BT-uag"/>
<outlet property="keybardHeight" destination="Q9N-TB-mFf" id="4XZ-zk-JmS"/>
<outlet property="mainView" destination="l8P-RE-lSE" id="2D8-fU-Zng"/>
<outlet property="paymentAmountLabel" destination="MkW-zy-Pnl" id="eZ5-gE-kpT"/>
<outlet property="rechargeButton" destination="ndU-4T-cSq" id="Dox-dY-sqD"/>
<outlet property="rechargeButtonContainerView" destination="e74-Cq-lAv" id="BvP-bR-iYk"/>
<outlet property="rechargeCardButton" destination="Lgd-0i-84N" id="28c-68-KEA"/>
<outlet property="rechargeCardContainerView" destination="TeZ-k6-k8k" id="6Nl-Xo-4vI"/>
<outlet property="useBalanceTextField" destination="5h7-OV-JiD" id="AGF-nR-ZcE"/>
</connections>
</viewController>

99
GME Remit/Modules/PowerCallModules/RechargePayment/User Interface/View/RechargePaymentViewController.swift

@ -11,6 +11,12 @@ import RxSwift
import RxCocoa
import SwiftyBootpay
import IQKeyboardManagerSwift
enum RechargePaymentMode {
case card
case wallet
}
protocol RechargePayementDelegate: class {
func rechargePayment(_ viewController: RechargePaymentViewController, didComplete data: CreditCardReceipt)
@ -27,7 +33,7 @@ class RechargePaymentViewController: UIViewController {
private lazy var bootpayController = BootpayController()
private lazy var availableBalance = BehaviorSubject<String>(value: "0")
private lazy var rechargeSuccess = PublishSubject<CreditCardReceipt>()
private lazy var selectedPaymentMode = PublishSubject<RechargePaymentMode>()
private var isFirst = true
// MARK: Computed Properties
@ -39,35 +45,47 @@ class RechargePaymentViewController: UIViewController {
@IBOutlet private weak var useBalanceTextField: UITextField!
@IBOutlet private weak var finalPaymentLabel: UILabel!
@IBOutlet private weak var rechargeCardContainerView: UIView!
@IBOutlet private weak var rechargeCardButton: UIButton!
@IBOutlet private weak var rechargeButtonContainerView: UIView!
@IBOutlet private weak var rechargeButton: UIButton!
@IBOutlet private weak var keybardHeight: NSLayoutConstraint!
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
setup()
IQKeyboardManager.shared.enable = false
IQKeyboardManager.shared.shouldResignOnTouchOutside = false
useBalanceTextField.keyboardToolbar.isHidden = true
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillShow),
name: UIResponder.keyboardWillShowNotification,
object: nil
)
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillHide),
name: UIResponder.keyboardWillHideNotification,
object: nil
)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.title = "Recharge Payment"
mainView.bottomToOrigin { [weak self] in
guard let `self` = self else { return }
if self.rechargeButtonContainerView.isHidden && self.rechargeCardContainerView.isHidden {
self.useBalanceTextField.becomeFirstResponder()
}
}
mainView.bottomToOrigin()
useBalanceTextField.becomeFirstResponder()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.title = ""
view.endEditing(true)
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.shouldResignOnTouchOutside = true
}
override func viewDidAppear(_ animated: Bool) {
@ -94,11 +112,7 @@ extension RechargePaymentViewController {
mainView.layer.cornerRadius = 5
availableBalance.onNext(GMEDB.shared.user.string(.availableBalance) ?? "0")
self.rechargeButtonContainerView.isHidden = true
self.rechargeCardContainerView.isHidden = true
rechargeButton.layer.cornerRadius = 5
rechargeCardButton.layer.cornerRadius = 5
}
private func setBinding() {
@ -133,8 +147,14 @@ extension RechargePaymentViewController {
.disposed(by: disposeBag)
output.finalPaymentAmount
.map { "Pay by debit/credit card ₩ \(Utility.getCommaSeperatedString(numberString: $0) ?? "")" }
.drive(rechargeCardButton.rx.title(for: .normal))
.map {
if $0 == "0" {
return "Recharge"
} else {
return "Pay ₩ \(Utility.getCommaSeperatedString(numberString: $0) ?? "")"
}
}
.drive(rechargeButton.rx.title(for: .normal))
.disposed(by: disposeBag)
output.isAvailableUseBalance
@ -145,16 +165,13 @@ extension RechargePaymentViewController {
})
.disposed(by: disposeBag)
rechargeCardButton.rx.tap.bind { [weak self] in
rechargeButton.rx.tap.bind { [weak self] in
//TODO: Biometric & Secure Keypad
guard let `self` = self else {return}
let vc = BootPayViewController(dataSource: self, delegate: self)
self.present(vc, animated: true)
}.disposed(by: disposeBag)
rechargeButton.rx.tap.bind { [weak self] in
//TODO: Biometric & Secure Keypad
}.disposed(by: disposeBag)
availableBalance.asDriverOnErrorJustComplete()
.drive(balanceLabel.rx.text)
.disposed(by: disposeBag)
@ -172,32 +189,38 @@ extension RechargePaymentViewController {
guard let `self` = self else { return }
self.useBalanceTextField.text = "0"
self.useBalanceTextField.sendActions(for: .editingChanged)
self.rechargeButtonContainerView.animateHidden(isHidden: true) {
self.rechargeCardContainerView.animateHidden(isHidden: true)
}
}.disposed(by: disposeBag)
useBalanceTextField.rx.controlEvent(.editingDidEnd)
.bind { [weak self] in
guard let `self` = self else { return }
if self.finalPaymentLabel.text != "0" {
self.rechargeCardContainerView.animateHidden(isHidden: false)
} else {
self.rechargeButtonContainerView.animateHidden(isHidden: false)
}
}.disposed(by: disposeBag)
let tapGestureRecognizer = UITapGestureRecognizer()
tapGestureRecognizer.delegate = self
tapGestureRecognizer.rx.event.asDriver()
.drive(onNext: {[weak self] _ in
self?.dismiss(animated: true)
self?.touchClose(UIButton())
})
.disposed(by: disposeBag)
self.view.addGestureRecognizer(tapGestureRecognizer)
}
@objc func keyboardWillShow(_ notification: Notification) {
if let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
let keyboardRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keyboardRectangle.height
print("keyboardRectangle: \(keyboardRectangle)")
print("keyboardHeight: \(keyboardHeight)")
UIView.animate(withDuration: 0.5) { [weak self] in
self?.keybardHeight.constant = keyboardHeight
}
}
}
@objc func keyboardWillHide(_ notification: NSNotification) {
UIView.animate(withDuration: 0.5) { [weak self] in
self?.keybardHeight.constant = 10
}
}
}
// MARK: BootPayDataSource

8
GME Remit/Utilities/TablePresenter/User Interface/View/TablePresenter.storyboard

@ -38,9 +38,9 @@
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Presenter Title" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jvk-DD-Fur">
<rect key="frame" x="142.5" y="14" width="90" height="16.5"/>
<rect key="frame" x="139.5" y="13.5" width="96.5" height="17.5"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="15"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iQt-DI-xho">
@ -143,10 +143,10 @@
<constraint firstAttribute="width" secondItem="dLg-4E-6az" secondAttribute="height" multiplier="4:3" id="z1Q-3T-hlB"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cell Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J9n-Ka-9S8">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cell Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="J9n-Ka-9S8">
<rect key="frame" x="63.5" y="0.0" width="251.5" height="40"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="14"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="16"/>
<color key="textColor" name="ThemeText"/>
<nil key="highlightedColor"/>
</label>

Loading…
Cancel
Save