forked from organicmaps/organicmaps
[iOS] fix bookmarks subscription screen layout
https://jira.mail.ru/browse/MAPSME-11499 https://jira.mail.ru/browse/MAPSME-11508 https://jira.mail.ru/browse/MAPSME-11503 https://jira.mail.ru/browse/MAPSME-11505
This commit is contained in:
parent
fa0a912083
commit
496c1acb96
5 changed files with 68 additions and 16 deletions
|
@ -23,10 +23,10 @@ class BookmarksSubscriptionCellViewController: UIViewController {
|
|||
func setSelected(_ selected: Bool, animated: Bool = false) {
|
||||
isSelected = selected
|
||||
let setSelectedClosure = { [unowned self] in
|
||||
self.titleLabel.textColor = selected ? .linkBlue() : .blackPrimaryText()
|
||||
self.titleLabel.textColor = selected ? .subscriptionCellTitle() : .blackSecondaryText()
|
||||
self.subtitleLabel.textColor = selected ? .linkBlue() : .blackSecondaryText()
|
||||
self.priceLabel.textColor = selected ? .linkBlue() : .blackPrimaryText()
|
||||
self.contentView.backgroundColor = selected ? .linkBlueHighlighted() : .clear
|
||||
self.priceLabel.textColor = selected ? .subscriptionCellTitle() : .blackSecondaryText()
|
||||
self.contentView.backgroundColor = selected ? .subscriptionCellBackground() : .clear
|
||||
self.containerView.backgroundColor = selected ? .white() : .clear
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import SafariServices
|
||||
|
||||
class BookmarksSubscriptionViewController: MWMViewController {
|
||||
@IBOutlet private var annualView: UIView!
|
||||
@IBOutlet private var monthlyView: UIView!
|
||||
|
@ -82,8 +84,9 @@ class BookmarksSubscriptionViewController: MWMViewController {
|
|||
|
||||
let monthlyPrice = subscriptions[0].price
|
||||
let annualPrice = subscriptions[1].price
|
||||
let discount = monthlyPrice.multiplying(by: 12).subtracting(annualPrice)
|
||||
let discountString = formatter.string(from: discount)
|
||||
|
||||
let twelveMonthPrice = monthlyPrice.multiplying(by: 12)
|
||||
let discount = twelveMonthPrice.subtracting(annualPrice).dividing(by: twelveMonthPrice).multiplying(by: 100)
|
||||
|
||||
self?.monthlyViewController.config(title: L("montly_subscription_title"),
|
||||
subtitle: L("montly_subscription_message"),
|
||||
|
@ -93,7 +96,7 @@ class BookmarksSubscriptionViewController: MWMViewController {
|
|||
subtitle: L("annual_subscription_message"),
|
||||
price: formatter.string(from: annualPrice) ?? "",
|
||||
image: UIImage(named: "bookmarksSubscriptionYear")!,
|
||||
discount: (discountString != nil) ? "- \(discountString!)" : nil)
|
||||
discount: "- \(discount.rounding(accordingToBehavior: nil).intValue) %")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -142,10 +145,39 @@ class BookmarksSubscriptionViewController: MWMViewController {
|
|||
Statistics.logEvent(kStatInappPay, withParameters: [kStatPurchase: MWMPurchaseManager.bookmarksSubscriptionServerId()])
|
||||
}
|
||||
|
||||
@IBAction func onRestore(_ sender: UIButton) {
|
||||
loadingView.isHidden = false
|
||||
InAppPurchase.bookmarksSubscriptionManager.restore { [weak self] result in
|
||||
self?.loadingView.isHidden = true
|
||||
let alertText: String
|
||||
switch result {
|
||||
case .valid:
|
||||
alertText = L("restore_success_alert")
|
||||
case .notValid:
|
||||
alertText = L("restore_no_subscription_alert")
|
||||
case .serverError, .authError:
|
||||
alertText = L("restore_error_alert")
|
||||
}
|
||||
MWMAlertViewController.activeAlert().presentInfoAlert(L("restore_subscription"), text: alertText)
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func onClose(_ sender: UIButton) {
|
||||
onCancel?()
|
||||
Statistics.logEvent(kStatInappCancel, withParameters: [kStatPurchase: MWMPurchaseManager.bookmarksSubscriptionServerId()])
|
||||
}
|
||||
|
||||
@IBAction func onTerms(_ sender: UIButton) {
|
||||
guard let url = URL(string: MWMAuthorizationViewModel.termsOfUseLink()) else { return }
|
||||
let safari = SFSafariViewController(url: url)
|
||||
self.present(safari, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
@IBAction func onPrivacy(_ sender: UIButton) {
|
||||
guard let url = URL(string: MWMAuthorizationViewModel.privacyPolicyLink()) else { return }
|
||||
let safari = SFSafariViewController(url: url)
|
||||
self.present(safari, animated: true, completion: nil)
|
||||
}
|
||||
}
|
||||
|
||||
extension BookmarksSubscriptionViewController: SubscriptionManagerListener {
|
||||
|
|
|
@ -41,10 +41,10 @@
|
|||
<rect key="frame" x="0.0" y="20" width="414" height="716"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Eiz-QQ-h0b">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="669.66666666666663"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="675.66666666666663"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Unlimited access to 5000+ guides!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bOS-sQ-rkD">
|
||||
<rect key="frame" x="16" y="16.000000000000004" width="382" height="57.333333333333343"/>
|
||||
<rect key="frame" x="16" y="22.000000000000004" width="382" height="57.333333333333343"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="24"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -55,7 +55,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Every kind of journey. Whether alone or with friends, hiking or sunbathing" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vzD-qz-Fwt">
|
||||
<rect key="frame" x="16" y="89.333333333333329" width="382" height="33.666666666666671"/>
|
||||
<rect key="frame" x="16" y="95.333333333333329" width="382" height="33.666666666666671"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
@ -66,7 +66,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<scrollView multipleTouchEnabled="YES" contentMode="scaleToFill" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" bouncesZoom="NO" translatesAutoresizingMaskIntoConstraints="NO" id="q5w-jW-Chn">
|
||||
<rect key="frame" x="33" y="157" width="348" height="254"/>
|
||||
<rect key="frame" x="33" y="163" width="348" height="254"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GGO-lU-mzy">
|
||||
<rect key="frame" x="0.0" y="0.0" width="348" height="254"/>
|
||||
|
@ -115,7 +115,7 @@
|
|||
</constraints>
|
||||
</scrollView>
|
||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="neX-0h-hs4" userLabel="Continue">
|
||||
<rect key="frame" x="50" y="445" width="314" height="50"/>
|
||||
<rect key="frame" x="50" y="451" width="314" height="50"/>
|
||||
<color key="backgroundColor" red="0.1176470588" green="0.58823529409999997" blue="0.94117647059999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="welcome_storyboard.button_next2"/>
|
||||
<constraints>
|
||||
|
@ -141,7 +141,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a64-qc-DrZ" userLabel="Restore">
|
||||
<rect key="frame" x="50" y="503" width="314" height="50"/>
|
||||
<rect key="frame" x="50" y="509" width="314" height="50"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="welcome_storyboard.button_next2"/>
|
||||
<constraints>
|
||||
|
@ -157,9 +157,12 @@
|
|||
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="linkBlue"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="restore_subscription"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onRestore:" destination="-1" eventType="touchUpInside" id="3br-rR-hqk"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="justified" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tWZ-GP-RxW">
|
||||
<rect key="frame" x="20" y="561" width="374" height="64.666666666666629"/>
|
||||
<rect key="frame" x="20" y="567" width="374" height="64.666666666666629"/>
|
||||
<string key="text">Payment will be charged to your iTunes account at confirmation of purchase. The subscription will automatically renew unless auto-renew is turned off at least 24 hours before the end of the current period. Your account will be charged according to your plan for renewal within 24 hours prior to the end of the current period. You can manage or turn off auto-renew in your Apple ID account settings at any time of your purchase.</string>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="9"/>
|
||||
<color key="textColor" white="0.0" alpha="0.31555008561643838" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
|
@ -171,7 +174,7 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</label>
|
||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="awa-we-Pjk" userLabel="TermsOfUse">
|
||||
<rect key="frame" x="20" y="625.66666666666663" width="66" height="44"/>
|
||||
<rect key="frame" x="20" y="631.66666666666663" width="66" height="44"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="welcome_storyboard.button_next2"/>
|
||||
<constraints>
|
||||
|
@ -187,9 +190,12 @@
|
|||
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="blackSecondaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="terms_of_use"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onTerms:" destination="-1" eventType="touchUpInside" id="Khm-jH-zzz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalCompressionResistancePriority="749" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="60B-kT-Eev" userLabel="PrivacyPolicy">
|
||||
<rect key="frame" x="325" y="625.66666666666663" width="69" height="44"/>
|
||||
<rect key="frame" x="325" y="631.66666666666663" width="69" height="44"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="welcome_storyboard.button_next2"/>
|
||||
<constraints>
|
||||
|
@ -205,6 +211,9 @@
|
|||
<userDefinedRuntimeAttribute type="string" keyPath="textColorName" value="blackSecondaryText"/>
|
||||
<userDefinedRuntimeAttribute type="string" keyPath="localizedText" value="privacy_policy"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onPrivacy:" destination="-1" eventType="touchUpInside" id="ySf-IG-mMz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="v0Z-5m-unD">
|
||||
<rect key="frame" x="362" y="0.0" width="44" height="44"/>
|
||||
|
@ -232,7 +241,7 @@
|
|||
<constraint firstItem="q5w-jW-Chn" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Eiz-QQ-h0b" secondAttribute="leading" constant="13" id="9kc-0C-7dp"/>
|
||||
<constraint firstItem="60B-kT-Eev" firstAttribute="top" secondItem="tWZ-GP-RxW" secondAttribute="bottom" id="HNk-gd-Qc6"/>
|
||||
<constraint firstAttribute="trailing" secondItem="a64-qc-DrZ" secondAttribute="trailing" constant="50" id="INc-Pv-5M3"/>
|
||||
<constraint firstItem="bOS-sQ-rkD" firstAttribute="top" secondItem="Eiz-QQ-h0b" secondAttribute="top" constant="16" id="JTG-8l-iqj"/>
|
||||
<constraint firstItem="bOS-sQ-rkD" firstAttribute="top" secondItem="Eiz-QQ-h0b" secondAttribute="top" constant="22" id="JTG-8l-iqj"/>
|
||||
<constraint firstItem="awa-we-Pjk" firstAttribute="leading" secondItem="Eiz-QQ-h0b" secondAttribute="leading" constant="20" id="Loh-WS-cJr"/>
|
||||
<constraint firstAttribute="trailing" secondItem="tWZ-GP-RxW" secondAttribute="trailing" constant="20" id="OFb-vM-2cl"/>
|
||||
<constraint firstItem="a64-qc-DrZ" firstAttribute="leading" secondItem="Eiz-QQ-h0b" secondAttribute="leading" constant="50" id="R8g-2f-TIi"/>
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
+ (UIColor *)shadowColorBlue;
|
||||
+ (UIColor *)shadowColorPurple;
|
||||
+ (UIColor *)subscriptionCellBorder;
|
||||
+ (UIColor *)subscriptionCellBackground;
|
||||
+ (UIColor *)subscriptionCellTitle;
|
||||
|
||||
+ (UIColor *)colorWithName:(NSString *)colorName;
|
||||
+ (UIColor *)colorFromHexString:(NSString *)hexString;
|
||||
|
|
|
@ -407,4 +407,13 @@ UIColor * color(SEL cmd)
|
|||
return [UIColor colorWithRed:scaled(174) green:scaled(184) blue:scaled(190) alpha:alpha100];
|
||||
}
|
||||
|
||||
+ (UIColor *)subscriptionCellBackground {
|
||||
return [UIColor colorWithRed:scaled(208) green:scaled(246) blue:scaled(255) alpha:alpha100];
|
||||
}
|
||||
|
||||
+ (UIColor *)subscriptionCellTitle {
|
||||
return [UIColor colorWithRed:scaled(14) green:scaled(101) blue:scaled(188) alpha:alpha100];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
|
Loading…
Add table
Reference in a new issue