From 607bcafb321cd175d8f72fbb238b113c8b2b7f61 Mon Sep 17 00:00:00 2001 From: zeng Date: Tue, 13 May 2025 15:26:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=B4=A6=E5=8F=B7=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BA=8C=E6=AC=A1=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MoviaBox/AppDelegate/SceneDelegate.swift | 3 + .../SPDeleteAccountViewController.swift | 13 +- .../Controller/SPSettingsViewController.swift | 14 +- MoviaBox/Libs/APPTool/SPAPPTool.swift | 2 + MoviaBox/Libs/Alert/SPAlertView.swift | 149 ++++++++++++++++++ .../Libs/Alert/SPAlertWindowManager.swift | 38 +++++ .../Contents.json | 22 +++ .../Vector@2x.png | Bin 0 -> 1801 bytes .../Vector@3x.png | Bin 0 -> 2707 bytes .../logout_icon_01.imageset/Contents.json | 22 +++ .../icon/logout_icon_01.imageset/Frame@2x.png | Bin 0 -> 5651 bytes .../icon/logout_icon_01.imageset/Frame@3x.png | Bin 0 -> 8551 bytes MoviaBox/Source/en.lproj/Localizable.strings | 5 +- 13 files changed, 256 insertions(+), 12 deletions(-) create mode 100644 MoviaBox/Libs/Alert/SPAlertView.swift create mode 100644 MoviaBox/Libs/Alert/SPAlertWindowManager.swift create mode 100644 MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Contents.json create mode 100644 MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Vector@2x.png create mode 100644 MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Vector@3x.png create mode 100644 MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Contents.json create mode 100644 MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Frame@2x.png create mode 100644 MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Frame@3x.png diff --git a/MoviaBox/AppDelegate/SceneDelegate.swift b/MoviaBox/AppDelegate/SceneDelegate.swift index e19d030..bbc987f 100644 --- a/MoviaBox/AppDelegate/SceneDelegate.swift +++ b/MoviaBox/AppDelegate/SceneDelegate.swift @@ -15,6 +15,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } + + SPAPPTool.windowScene = windowScene + ///监听语言切换 NotificationCenter.default.addObserver(self, selector: #selector(localizedDidChange), name: SPLocalizedManager.localizedDidChange, object: nil) ///监听网路变化 diff --git a/MoviaBox/Class/Mine/Controller/SPDeleteAccountViewController.swift b/MoviaBox/Class/Mine/Controller/SPDeleteAccountViewController.swift index d4437ea..414dcb6 100644 --- a/MoviaBox/Class/Mine/Controller/SPDeleteAccountViewController.swift +++ b/MoviaBox/Class/Mine/Controller/SPDeleteAccountViewController.swift @@ -139,11 +139,18 @@ extension SPDeleteAccountViewController { } @objc private func handleDeleteButton() { - SPLoginManager.manager.deleteAccount { isFinish in - if isFinish { - self.navigationController?.popViewController(animated: true) + + let alert = SPAlertView(iconImage: UIImage(named: "delete_account_icon_02"), text: "movia_deleteAccountInfo".localized, cancelTitle: "movia_Cancel".localized, sureTitle: "movia_delete".localized) + alert.clickSureButton = { + SPLoginManager.manager.deleteAccount { [weak self] isFinish in + guard let self = self else { return } + if isFinish { + self.navigationController?.popViewController(animated: true) + } } } + alert.show() + } } diff --git a/MoviaBox/Class/Mine/Controller/SPSettingsViewController.swift b/MoviaBox/Class/Mine/Controller/SPSettingsViewController.swift index d709dc8..e40c289 100644 --- a/MoviaBox/Class/Mine/Controller/SPSettingsViewController.swift +++ b/MoviaBox/Class/Mine/Controller/SPSettingsViewController.swift @@ -128,17 +128,15 @@ extension SPSettingsViewController { } ///退出登录 private func logout() { - let alert = UIAlertController(title: nil, message: "movia_confirm_logout".localized, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: "movia_affirm".localized, style: .default, handler: { _ in + let alert = SPAlertView(iconImage: UIImage(named: "logout_icon_01"), text: "movia_logoutinfo".localized, cancelTitle: "movia_Cancel".localized, sureTitle: "movia_Log_out".localized) + alert.clickSureButton = { SPLoginManager.manager.logout { [weak self] isFinish in guard let self = self else { return } self.dataArr = self.createDataArr() } - })) + } + alert.show() - alert.addAction(UIAlertAction(title: "movia_Cancel".localized, style: .cancel)) - - self.present(alert, animated: true) } private func createDataArr() -> [SPMineItem] { @@ -150,9 +148,9 @@ extension SPSettingsViewController { ] if SPLoginManager.manager.isLogin { - arr.append(SPMineItem(type: .deleteAccount, title: "DeleteAccount".localized)) - arr.append(SPMineItem(type: .logout, title: "movia_signout".localized)) } + arr.append(SPMineItem(type: .deleteAccount, title: "DeleteAccount".localized)) + arr.append(SPMineItem(type: .logout, title: "movia_signout".localized)) return arr diff --git a/MoviaBox/Libs/APPTool/SPAPPTool.swift b/MoviaBox/Libs/APPTool/SPAPPTool.swift index 88740b1..1c738ca 100644 --- a/MoviaBox/Libs/APPTool/SPAPPTool.swift +++ b/MoviaBox/Libs/APPTool/SPAPPTool.swift @@ -12,6 +12,8 @@ class SPAPPTool: NSObject { ///app开启状态 引导页结束后变为已开启 static var isAppOpen = true + static var windowScene: UIWindowScene? + static var mainTabBarController: SPTabBarController? static func getAppDelegate() -> AppDelegate? { diff --git a/MoviaBox/Libs/Alert/SPAlertView.swift b/MoviaBox/Libs/Alert/SPAlertView.swift new file mode 100644 index 0000000..5c991d7 --- /dev/null +++ b/MoviaBox/Libs/Alert/SPAlertView.swift @@ -0,0 +1,149 @@ +// +// SPAlertView.swift +// MoviaBox +// +// Created by 佳尔 on 2025/5/13. +// + +import UIKit + +class SPAlertView: UIView { + + + var clickSureButton: (() -> Void)? + var clickCancelButton: (() -> Void)? + + private var alertWidth: CGFloat = kSPScreenWidth - 52 + private var alertHeight: CGFloat = 284 + + //MARK: UI属性 + private lazy var contentView: UIView = { + let view = UIView() + view.backgroundColor = .color202531() + view.layer.cornerRadius = 18 + view.layer.masksToBounds = true + view.layer.borderWidth = 1 + view.layer.borderColor = UIColor.color3D4556().cgColor + return view + }() + + private lazy var iconImageView: UIImageView = { + let imageView = UIImageView() + return imageView + }() + + private lazy var textLabel: UILabel = { + let label = UILabel() + label.numberOfLines = 0 + label.font = .fontMedium(ofSize: 20) + label.textColor = .colorFFFFFF() + label.textAlignment = .center + return label + }() + + private lazy var cancelButton: UIButton = { + let button = UIButton(type: .custom) + button.setTitleColor(.colorFFFFFF(), for: .normal) + button.titleLabel?.font = .fontMedium(ofSize: 14) + button.layer.cornerRadius = 18 + button.layer.masksToBounds = true + button.layer.borderWidth = 1 + button.layer.borderColor = UIColor.colorFFFFFF().cgColor + button.addTarget(self, action: #selector(handleCancelButton), for: .touchUpInside) + return button + }() + + private lazy var sureButton: UIButton = { + let button = UIButton(type: .custom) + button.setBackgroundImage(UIImage(color: .colorFF1F1F()), for: .normal) + button.setTitleColor(.colorFFFFFF(), for: .normal) + button.titleLabel?.font = .fontMedium(ofSize: 14) + button.layer.cornerRadius = 18 + button.layer.masksToBounds = true + button.addTarget(self, action: #selector(handleSureButton), for: .touchUpInside) + return button + }() + + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + init(iconImage: UIImage?, text: String, cancelTitle: String, sureTitle: String) { + super.init(frame: UIScreen.main.bounds) + self.backgroundColor = .color000000(alpha: 0.8) + alertHeight = 0 + +// contentView.frame = CGRect(x: 0, y: 0, width: alertWidth, height: alertHeight) + addSubview(contentView) + + iconImageView.image = iconImage + let imageSize = iconImage?.size ?? .zero + contentView.addSubview(iconImageView) + iconImageView.frame = CGRect(x: (alertWidth - imageSize.width) / 2, y: 28, width: imageSize.width, height: imageSize.height) + alertHeight = iconImageView.frame.maxY + + + textLabel.text = text + let textSize = textLabel.sizeThatFits(CGSize(width: alertWidth - 50, height: CGFLOAT_MAX)) + contentView.addSubview(textLabel) + textLabel.frame = CGRect(x: (alertWidth - textSize.width) / 2, y: alertHeight + 25, width: textSize.width, height: textSize.height) + alertHeight = textLabel.frame.maxY + + + cancelButton.setTitle(cancelTitle, for: .normal) + sureButton.setTitle(sureTitle, for: .normal) + + let buttonWidth = (alertWidth - 60 - 10) / 2 + let buttonHeight = 36.0 + contentView.addSubview(cancelButton) + contentView.addSubview(sureButton) + + cancelButton.frame = CGRect(x: 30, y: alertHeight + 38, width: buttonWidth, height: buttonHeight) + sureButton.frame = CGRect(x: cancelButton.frame.maxX + 10.0, y: cancelButton.frame.minY, width: buttonWidth, height: buttonHeight) + + alertHeight = sureButton.frame.maxY + 34 + + contentView.frame = CGRect(x: 0, y: 0, width: alertWidth, height: alertHeight) + } + + + + + +} + +extension SPAlertView { + // MARK: - 弹出 + @discardableResult func show() -> Self { + SPAlertWindowManager.manager.createWindow().addSubview(self) + creatShowAnimation() + + return self + } + func dismiss() { + removeFromSuperview() + SPAlertWindowManager.manager.dismissWindow() + } + private func creatShowAnimation() { + contentView.layer.position = center + contentView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9) + UIView.animate(withDuration: 0.2, animations: { + self.contentView.transform = CGAffineTransform(scaleX: 1.2, y: 1.2) + }) { finished in + UIView.animate(withDuration: 0.1, animations: { + self.contentView.transform = CGAffineTransform.identity + }) + } + } + + @objc private func handleSureButton() { + self.clickSureButton?() + self.dismiss() + } + + @objc private func handleCancelButton() { + self.clickCancelButton?() + self.dismiss() + } +} diff --git a/MoviaBox/Libs/Alert/SPAlertWindowManager.swift b/MoviaBox/Libs/Alert/SPAlertWindowManager.swift new file mode 100644 index 0000000..56bd46a --- /dev/null +++ b/MoviaBox/Libs/Alert/SPAlertWindowManager.swift @@ -0,0 +1,38 @@ +// +// SPAlertWindowManager.swift +// MoviaBox +// +// Created by 佳尔 on 2025/5/13. +// + +import UIKit + +class SPAlertWindowManager { + + static let manager = SPAlertWindowManager() + + private var window: UIWindow? + + private var count = 0 + + func createWindow() -> UIWindow { + count += 1 + guard let window = window else { + let window = UIWindow(windowScene: SPAPPTool.windowScene!) + window.backgroundColor = .clear + window.windowLevel = .alert + window.isHidden = false + self.window = window + return window + } + return window + } + + func dismissWindow() { + count -= 1 + if count == 0 { + window?.isHidden = true + window = nil + } + } +} diff --git a/MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Contents.json b/MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Contents.json new file mode 100644 index 0000000..6a4d508 --- /dev/null +++ b/MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Vector@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Vector@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Vector@2x.png b/MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Vector@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..930c7cd2c612acc1c4d2872c438d41765e8cda68 GIT binary patch literal 1801 zcmV+k2ln`hP)xgsLEP1(7Oit(duy?b{>FLAneh%?F1k0pznXf$0;7IeQAlmw}htopt^1W!X65QEl^B1 zD4O^9baLjcOHk?-h1G$up#fn7is=Ex^byXBNi)Uwe#SpD1!03!C<_YX9tH9ihVz1z z>RKw*8W9v2F|{bBFW^?04zX0v&(|P`VF>SJYn{3;a2C6I>JRzg;=5|qj6;#%D{O1q1Lkqaxm>LFXzAn7J@Q8r}ad+JScTp2mP)m;Oq~@fU(d;v zYGaw|1eH8q@ukvOrYg(J7_a!!VJve66;W4(N;i`r6m4y>Of`Zs3pFWN-7b~IGF1r5 zS{>CcbXC2nIx18-@rp0i#4_Xuzz$1>zBFG0NG6o;hve^9hOdKHRZyyAXnwmm0T3bwv7D-@r2#g}4Znc@T`R_92eu}o2dBEEVhJq5-xWmPD?@rp0S#WKYR zihaD|OJT805rUFU$EL8Ecr}m3A9s8Y`9wE-2eXn*nWfh5dXewlGtcYZx0w zie-XsD{ZY#pX?Uu;S*M)f6?N8!N(bXO==U>Gc45e^D78QSV3K0zL$I##bnb zS85?hEHg?_vU;U50>m=jmM2zMElcc8U4tk76^ciTK#wcl;Bkw`EAu@5&8%}X#eU)( zJn^bfEP76T|4x1Vx|es^%KQ=P>X`5HVh89Q3}mpNDvejRQR)d#=AXx2wtY8k_cd?d z=oQNhw>%y_r+24bG?&&&oqSIPcr6qiRH2x}D=+xTyg2tJGliw^zd+p#j%A!H6r*^> z_2iMdxwI#PV;OhLlX!(IgJKycL79O#HoZXL$$-@|ZWT)674A64GG_(FFkYEBei~cg zgkvmoQcz46YHBf^Z(34b_2P@e0KFOe7gWi5%+MZvnf|I5U)poA%uzvAvU$L? zS&u1|xfuIXEL> zYYZi;SA+pf4(*Y!Jt&uWMHt3jEVHpZnbIqGvb9>~M}?AjMet)QmN9~o)hog%eu`xp zI}pDEK^TL*n9~(XH|tsugmLI8!!s=?ej%q2i)n+Us^;ZDLRx;+6-u%xAru!{P#h-P z3u*XY3#tP_2*Y!OJ%oQi5W=v~73v8DVLTniFN+3$Su$8wEyPBtNB!_U%bSCYr37E} zPBmTkq@Nl=+07sHl+F$WVF*fnf~J{&|8g_iz|6c;>RRkiaOA~K1HS!vGmYbm6xJEv r@3xaJ%}+t2MYP1nzwvlFv@6Ruu=fi~A(w-=00000NkvXXu0mjfI=3Y^ literal 0 HcmV?d00001 diff --git a/MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Vector@3x.png b/MoviaBox/Source/Assets.xcassets/icon/delete_account_icon_02.imageset/Vector@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f7d99ed3f60847657192c30d92e0969f0bf0ea3e GIT binary patch literal 2707 zcmW+&c|6nqAKzrYW4V5r^V{@wG>nW+OXxs37Q&7wq7=Dut*=Ao&x=kGTP>2pBJ+ zGQhkBy`2dxvSG&w5g^b%2Q~-T_O6)^a0!lZvp)i=?E3o~aF7l-?0gsms;0o!eIX!_ zoWY4>huulwIbn8`)_&F0&oIxzU>gk_;|iq6h*6Vx$4DFkxodRX>u{c2U!_kyJo(uU zU0k7D7H=J2W03Ix4DN)8ttQ)Y{1C0xKV|ciLeX}G^x%8DCBmUN&bA=a5lQyi0WEUF zoOQXdJ@6;{(r|^%Azha;#gYE11s;{mmlSUQ*wFu}9wdSZbVv^M@4f3iX7?8$>S$+Q zi`Z}m%m?LiW7P1=5eXME>51*Hh|f9vlxx_mnEvNY)&oafl4Hh;C^T;<#VT%e zF?rPF@h5|m7U!B)*3w=rUcPjOG_`g+kU*$iF65mrYS4?3x4r`Gm_az z?-5d@8cF1Wbj*aC7KOJ6JcXEI>|F%c(eNi-=q}*j_7gZA`-}+|k>7%@yf*ebn|P$)r;) ziaDjeSC=2wGQw-qP)40GUj6j%QJS%iCkJXi@Zx?3hM-qYN-(TQS$%|6mF2=r@(;0} zmFC)VOEp{$>rU*N_D`rDgSZW()n{S|KGLRn^WjAOY%04n7s4ymumS%EtOiA$fv)}s z3`-uR84MGtrqlk1(Sh{BN6Haux|8YnMXYQ0rjNmNC><$D$1Qtw`i;b&CkGtjC|N3w zrxDg{Wv2a+J4jXzWt*`~WM`sw!@XeNZE2lbP@=6V{ms|*W%&|~6lW5str~P*; zangTD%nj+M=%^sFvXhZw`qFWyfP5s8vY*-viQZEXSJ#mnYSXO zJULr_5viQUWi=ya_8uvgEMUw?&URD#88diKgs)T5ZGz|AptXpf{J!Ivlzatpz~IT z)ROCxd`%N2TT)mIYu=j!L##)TD5e@zMETL%Tr<`|_54v6rdAdLISCb|5%K4*xa7Uw1Y zC6URZKDp>nk$b0ZtWnLb^NI=)i83P14#JH z>qQovGCmeqJ%3Wkz-E~X2yWzTTA@PUhT9RE@yw_ztjtY0ipjxQ2Kq)B6=LrOi%U~H zc6~pn&fJP%q1(_`F0gC!Co@{p(sRrP=jYC=aW)i(-mOSQnhPD;LwUujsgum|-1Bh2 zegO3bL)ga!uC_4Ca=*S9bA`R}CG_%{P{5PZ?GGaQF97e&)_{5e|3?)NyKj!uwEuG; z^Q~vh)h&8uC`5H^VH5Ug49~Bn#V{2!m}2n697sqhc?_xe%?lvrpRKGY^QcXT!n{7d zI|Q)MaUmc-vc?E&+Ti9>IOM5qoNCpl%SM7D8Sw}F+}f9y-K8nSfilg-^Cm@cSPz<0 zYep+w7~i*HjCh+V>!iq5>E){`0{kWQ(Q#ik3spbT^wczBkUqs{}!ZFDtCTp2n+TCS+mLUd7mAGpM*GZ2qh!aFhb*ds3c_;M|iEn zoeA>YECtNT;**RC-z*i z+rD?r>H&)ky_sJzJRFNs=6Nq3Xa`?yNQ=V|UXF$n)tRcRkxYZ)oh-%_qLqTxP17gR zjJp5~V+Fr`^W!~n=Iig`I2zVjYcczKyyfgKeo$zUZyNi_LI|PwnYgIiNk= z`BX_sAD@%ddQ{J~I#)aT+bf`bj|#ERbFV@G{onqq0lf#j9;Dyf-zfk9ZrLki+&n`P z<-vCx$G1D@l|ZFD4v8S4&%5EQVq;$<0vuT&oC>y3FoR!!u0P$@>6%(Al}YtR-fsdt zpKc!-=jI&`zCgR≶>T+IDuT$7*|n?L`iF)syt6@o~*TxKBH*1VXuSJg^5MCNEXA zT3Aw-h|mWLeWC)>vmunm*^6RQnjX62@eOap=4%B$lS9WwuZ+np%z(7*XZ))+1r?U4 z``6gKJR>vAOnkT@+WVNfx_;TKd`#_%3rJ z%0!K@Pj;XdzfNJT?vD78Rh%Lzs{+%o;*!yy_E@ctw0Osr>kOiXY7Mgc9%|RM zVY6!$AgFKbkG$%xQ!67q2B3Aq+6PNZ4%B;c;HYEeli2bqRuCBdF05#2;{CRyr&d(v ztvBxTp_$2-x D(-A13 literal 0 HcmV?d00001 diff --git a/MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Contents.json b/MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Contents.json new file mode 100644 index 0000000..5c4d3b1 --- /dev/null +++ b/MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Frame@2x.png b/MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Frame@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b9dbd5ec2ab50c87a3e353c1b99591454dcf2b85 GIT binary patch literal 5651 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 literal 0 HcmV?d00001 diff --git a/MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Frame@3x.png b/MoviaBox/Source/Assets.xcassets/icon/logout_icon_01.imageset/Frame@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..033e9fb930d230d23941480547658bf11d07b5e5 GIT binary patch literal 8551 zcmb7Khc}#0)Lv|qAX>yK(N-6|cNVMn8ZCNnAw=JZ&LXR1wMGKc;yM004;9RF(7r04(r-9Uu3>63FPp z^Y9_?R(kEMI*U2mm!gxA`ytIw@!=001?~gf}*i0071tH6;bZ z0Ib~w!Z${zIeZ5gSe^>~3QIU(2?%*ot<(|etV<+L{?iA6HEB$0F2%e&Z@h12QjOa7 z^X${!4hZhctVxz?te=RPqOL-|K^k*#xF$Z~W8lDkuSQ0J9cdEzBlUPD_>7Ny-UCK_yNSi@>+rfd<%4x_9b6?2KR!Eg z(&wi)5V|<092YeF$w0R?%Izv$p0ct0>KaG=)sKvVEN01Tm=O1OyKM~}f6|UXQmBh- zXMBCWeBJkVA!bQ58Y`~l`|&i z?KK+!UGQvHUf&vNOII_JPWJXt*jE0Y#Af2?OX^UIA}vTKpWGZIRS_@px%H^Z7WLQy zAH0Y}^m+dTx3qLUB~?z-?PjSX4Fuw)v85U7*A-^L3<+mtyc9rcN!)o!&Yp2p-A<O;AZC_hdW0g$r+pA+$2`Nstt3L@>jWL{x+3c|}L?T$k--R&KkFmE4 z&CBk;j{0Vliu@d1RV@ok>o_Ha@-}R&wR3E2Z^dnJ>try$)BlW@T2QVPH#9HfygE;4 zvmz*sv!&3n?&g&^G!;+ax=`bY!;>Sc@m zs{*PFJKnVD-z}NAHfir4aT`Y}c{viB3I0t?HFMN{US5Py1SOJ|Gl9BBc(UEzlCu!o zq_G$(^1o>Hn|LoltINuYXOjjrRJ2a}%~1~9>4{cbCWYc2sK2CIdb6eo%fZ~nYzFMeh;)29H+3_e6PDcuXty=aC6$iiC;(B&dHLh|zryYO2DYwf729h;d_`?O` zoiem#1O9e|1B(%Lj~}e6%se=p9$okfz!bIb^6Clv5Yq6Xajp+f)p78dKTyIjN9TO^ z@~p|nA)r$}3^-Qa_U3jje>E`70986ycSoE!qXM-0jF&Pk1`QI0U&P}18%JcEc)?E& z#>jM{$zH{me0jr)6`-SMKd|FG(HYAA%T8KM=%1Usw-h)avs_n14w@s~YmiR%3NGr+ zK(@5`{IAPn7sNk}>Z=}&bJt)tc)+Gm7RV3$#Vi)^L;FKApL4d1-O+w)EndHnhgpnh zIgJ9)MfpDLd_1L{oeOLw0oF>RkZ&2wxM>yqjcgPA7hZq&B_1%IW`aAbZvq9G;t-L_ zJ|2{nOKA~2`dQ1*j%_V1rylt%wWp{Gj_YsgCccGrpu&{7uA*-YozEp(Qv&1_5|o>L zwXI59c%Np&Qjj@_50F(MDf~P>&FS!+%`#i`D_n;R`(3{MV8CbN@&Wu^>UTCqA|j26 ztZ}N8Q0GwqJOPhFe|H2~qP5-rj74Dr9{^8r_0x(Uh@BHMqRb!%utb?m+c(RZ$Mchq zSyPINVY4KgOiSA3)1YE%0A@knFvF_+`;i(LLTYfUSw#Thu<+MmP8 zP=TNH*B`lB-23K{y*=YQy2Rd=IVnl=x!GCm=Tc)=Xau-Vd&*;B3H?3W;j>E{vH7de zJC5d$c^0VZQj;y7JwdaYldExbMjDb*=W#~T$Y9RO`SrKNo94>OAvx(N2iv9tov?j3 zH?M8kg+F1YBqdie*W0vKvlnJK;U1B?ft0gTHY-~L8(YPVNPUYcrmvHcU598BV491Q)DPm{0cbMj1ncz6C# z_T{Sv1>danuTij@1>@_p|Du|DPau|S?rZ7LV}#(#x>Por@(wN}*!v#5TM+2G{=(OX zEsZOe(_^m2_cj@JIJgVs^mX%FX&H#EVAd+MeV^tna z*-Q%51>-a-z$Q_8_m!%|hRfR9lLuVri1V=BaDl?((v%qQZGVTUPXiOBbKA7pB#jjC zk5EVVfZ5^%UCPAyR~Xo+PpIr0q2lm=YD?&eQfLoyci)z<1HZXS(nkw)y5FGf z>;MEG&45X&GL1w-$%+vNk%z^r-v(pzS-B|XD(-EULi-7!7p4szBiQ44Fb|%_TE;gmnx(3g?l4BtXzV3 z6M4j!kw0_~C*zT85y4WwY#!Vr`Sz}!cY5{+6=W7qjF*ehJ~oNI2_j|L-H8k9ldz&b zs+7Q>zsh zMDz;!lH?LeueNtWvZFiw^aq^MDJyTcs?JG?Hj%VmrrnJO&(1`Ey_@^pcjtu>bi`mHRO<1mRJ(9zJqTCW&QHhz1DMp+eDqTNq_?Vn%o4dlZJZ)*jRcv{hWC|fLUoKH! zzNQMYp&V{{WMX8a{0mr?1ow3{8qOCbu5gCF_#{^iGD1k`KBw-ha9sh+b(c9_df3&( zI}YVxychg{CC&e8YnU!p=T}2m z$?m?vbvFkuGqBr?zxpvxRDS?wETg?inujl614)sALeoPbV_#p7zKcJ~EQ^1^9|{Fl zWnn?S-G{omfo#+;AWv5QrUu-0l=D>ddJlPfmCXtvi!LSgSLdY=AR@}sEa;Z*z0IX? zFs8a8nruzEcZf4DPAnmc?U_~wMFR0})l*N0$UuaE-O(`{g=vZXkc{-DaJ6s%z3?)WS%ZZuQ{ArL0KQn>~@Wfb~KK$AkW8L3Pqd{c*wN;X} zJaA!k>u-fvLd>iIsWa9=Y6NRgT#my?52+dt!oo-{cZ?Np;mufJK#n_qkS6_F25wo= z%$X$m85CqiOYu1BKoZT!mliRN21tp?&5}d8O;AL(0UnzC8-3POxP?BoWDn&G=^QG! z#)F`+&?&@OhG?LlUL?B1CtMzo@Abj*+;)x}Iul6D$Vc|oiFF>yPtIlY67#vTlE@Gt z`nMGdjGn14aMS>OVeugV6cwT0P#4HlxX^Hc0WOyzi!KuQh^1hr?3-93wAGf4P&u$$vg zMLw50#K~lo6WcpG*K^QZmtuBgLTp9qUEourbPta?o_N_;=x>&x!J-QSrH{n%kt zNdkTp3{R@7hFtsXgiP#P+%<_Dv zs;{<zwzZ_K3;mjo0y3793Ro1UI~Wg;Nfu zaDRXYna)@O5u3~FnX6D}(HR+hW;E~1?ep@&NpGW*PY-qcDk~E;&4c@F43)naOg7zkm_dFH{UYLPKVu7PN$w!I zTcwg?R?T!()Uyc$afU@AsQ-iU?!NYWVD}Eo&g?fYnKQ~v#hU!GuhQ^I*+(8(YGD@> zPNF9#C;x^W03=oSqjI<2IN_X=pP69}MVtkx9Z#i)!j3RuQ4QViU^nY|(%RNEJdU>y ztC*^*+ZhYx*9=AAGnj3 z_cv4+czYdpcNZ)dmeuhFf^TkSW!|NFfj^4<4M0+Nzc#ino4d#DPN#Gu`8ST?&u`&i zN!kYormCC{@*CWc122YPVM}fnAma3?eyahs%VV2B3?zb*d{mPo@nDEZ!5+tGrk2@L z$D!!z>klu1FvZ35-(Z~sSMp*kE3F^vcQIs2qN@0LJn4vJcmCIZCL?372MJ!BGt4b| zaO8sa2&j^>3pmu@Nk>;31YWmV@`bD)GT2NFv4xwCF821~4k}`h{I00#WaQ9COYJO~ zS9}W|u=5BV+9x4bi|IzbTsT-T(Lf->;RV`Y^tOHdE)>Vpy)N!|%(U0--Xn9=c0CWB zdWof^*8NJRSoBsT-PVYV0yg|>*jm?k47Q#%BLWv?zkjh>GRkIfbHKkewDUp`t9q=R^Q z1O_jN-R&KgUc&go3$a66_vZwDIKFp3andkGjXgkE6J+>3H~Z~nigE%QrB>O=bxsws z>G|^9i%W6|?CF`><}-GC3OTf@!6iK58JqW`wj`zdfFQ`y#cVdxN^U)+b~Bx#J1X6t z;>l;QO7hhG4aOA~a|`igG5ZB=h(_p)X|ozW9CRYQPPE4MH6QBLep>_rIQg#nC?~OgO+t?0Zr;QEk1J`9ai_GK2+5rW!TZ97mDR3yo*j zrV&GZ76%d89}j91PR)#HYrgjMSd%CptF>V<*hGC8~Y+4+DLJY!8CZ?Av#eNAD1%JpLAC z{=9g(92IEeGpvqZGctTM7g?ec*SdyK0B^?cn?!q|x$amz+a?Oyj@AqB%AAO8g(r0` zL4HbRV61miF6H2b1h9>g0K?jYfALj1)aM=8<|%!lC^?`>AGP7mg7;8InEu1_=DyB2 z!IPLMIixzX^924C%_@-a*G1RxbI~cEni}DFXIlTN2}If1^i<7uaE1ZAaq`Qx%wGkK z*RWrTKZ9ycq~!nssK1k3vy3X;u_Pk}42< z)yrasM~?yvzxf>d)FwRcJAXx{&+qu=ejPpp-+{yber<%DohpC74!XYD=ib`g-rd{U z+LQ>oQG%J@ZRW2TTd@BV?7D1)B}J1Zu!m?tSV*CwS-Rq~*D0F@eHQwX^&b`4#Q208 ztlxwkUY=9DOx%}~d>}jGG>LwVZ{IXD)Ys=+-FB9A|A#;zs%o?bp`((+p>Q<>OUju4e41v~0F`1FP_FJWn5^P>Mxbn-UIPSERRH--XNn%si% zvqr0m1x4P!7l2@0@#M3ODLsku!ckhH&#cpY7P(1N$$B>}2ZhKBJH6recjYeUxwmtq znu;3sF*Nxb(nf1vzKXI>0`)~SSZP@iTElaVdjVdwX3f4FZP7e@ za<5c)m&*Ac*tN3iiQ_!f1zz!4s@-R>z{P;gWNkH?jqGDQLtbn9UFt5aXnPya!nveN zX8!so>ATmmCQ%Q|>gN$DdOSf-$3bYQaJKB~GQsUvUA&6K$}mzM^0P_voFa=M9eqC( z;=|42`RMFr-u=luO+DFO<58tWUrfNzTvslbg*oig(;IZSD#58e&dzqR($DF_M_Ps`56R=-h=%&39myz0@Qm_|IokhFTC7Lw0Jm?Y~r1luFm2XtTLt+S+kakypowP z0ofG!!^tCUCgJG@>3L-6c78Aeja&o3BU33r)X;m{Y+z<-(L?!X&Ek0W$fu?qdE*fk z6&z|AVeBjYyLPc@*x#$~YsL75|8dKbp^wieg}GQVE-OSDhwl@n#4tGsvLWz?==*bG z;kCBlQ+c18t#um*7uUT!zYycg*Z$5Xwc$k{8r}}}I>|8+h+n<=U=Jr5)8-ZHSH8Qt z3r6y_ow-&b)k@@I_bywWDhS6m;z$QI-C-?yyIhcL?q?`DqPX|C1R)PX(C%C#pPqDm z!4%K#tX;Bnoue`O&Cc_bA#2iR2i+W^R*_%YC6Mu$KXZ+DXD?mIO|tlH=TXY)gM`9b zgX}Q}pRdMZ7@8{V^~WfI`b*S$FtApIBJI??xBG>h9qj~C0ewG9}E9TOrcKk z#xV2u01S&NBPA-*-fcL#i)Zd$GRS-Q!#!Z1)8|loJ73j^TA*~czLT-*0frvS94eYr zXR>XgwX;bs1dzD7II44AW^ibN}$hrstEXh#mz0)yaC z_3lOAq~w$8+}0yE15x!^trk&_4>=WX$sx;kM$W@4!rmi0r7K2nKS|a)+Sa|b7BPXz z!H@jZrgMo?MB%P(ZiUq7m(}=DFBXP=4xWp@=Hrt+*ou-E(+voFgXveCKCG^X|GxTP z4XCJy7<_g`ct2YngK&@|XbW4ICQ_BKDsJ)H zdU;eXD3&{3x!BA8t2x*TtiUh&X{0xRYKeC~v@KA3R%yPnM!w)P*fFh&g{eQ8LELJn z`Jmb$J!J>ZHC4qq@v4P%g8lb5`}e0lj&6@}`jQmn>|e4W2QaExIi}e%pa3Hx$+Cn;vA0$Ia8JAxTdtC8=Hae`rhC_EraYj|V9edQOviL#JJ z>C&Dn$pOPR>&8=6oc=pT8bd|$BX^L1mCZ8i{Sx*j;k1=yT=_5B_xt8`Omb*>AKqBg zNS2jNep@K^m)ekLBe{W*J}01;z0Qmhv`X$z)P5b?^zc4YHB~r%rZHRROHIJy6cMXB z!OW6hhYuDtWVF;5#W9Hph~4 z1WUB&Fw60pk?6)T%Odu>Kf|m6qk8L>Fy-7*7YtG+7Q_W6^xpn6oe{tf1_y|R7p9Fo z;kww`J+oACljGdyZ6P&;KKqMx-XRKDd=Y0P#{NZu$u;;Qd*vlWRfb)Xs_Pd7X5pvE zArW`}+^<^u^%qPc?(8?oBm6oS(XN4P-zH01-_hxQ%x`)68V#>eUNDJ*gFV<#ePqdh z_r&hr9#dcU$8~b?*za_D+6 zi;nWvCgX!Xk`c6;ZqjRFXwhJJ&l;motWdsn!g!^nqqA;cP@=in9-^6`#C#P$NxO0; zPhOyXKPuHqr$l7Kf|bkTcM7F)y10FNaT|UKgidW5{bp+&zv;IISjN(;W2O~1t$e^* z*Wu!CHe?^Jw7~sDM6IDBk@1_p{|*BhG5fF>?$3>wyMtz0uOD|!V{#RE<21L4_l+yL zTyb-?Qmu8#&f@ssxX`Q3(o1UUd>STlvEsvci^7sG?Mz40r>B0CmX+8vN%X2W@T=>Q z=oEvI4W<*E+v9VG*1@16QYigVU%6Vvn6Q8femTp&OHp`m@Z#ij?^b|vism0V4dyE( zy}CaybCCx=F$5F{GSSY=ln7${5_DQLq-Vs#{8C!yQ zyYerZ`J_YKnL6Tp1^hx`A&{=6IyhQU#fU;H z$a(MR(%Iyp73Opb(aC&tjg5$N&ZpP@^5_cvZc5Hdvo!O!H!1W0kIt|Vni$VQ&YXt{ z!(q@&+ps~vtW1@ouY!dWPrUOx8C~cu_9sQ3(BJNlJ4p{vx4-guWBwQ9=igvh2=nF` z9+Nvdg?0WyW7bBUM#8)ggvUGF4wlfPew$WUSpWam0}m16t8!TO$k}mQ@_h3D5~wL_ KE1@9P@BatibY7AG literal 0 HcmV?d00001 diff --git a/MoviaBox/Source/en.lproj/Localizable.strings b/MoviaBox/Source/en.lproj/Localizable.strings index baf09c6..f1a9f08 100644 --- a/MoviaBox/Source/en.lproj/Localizable.strings +++ b/MoviaBox/Source/en.lproj/Localizable.strings @@ -103,7 +103,10 @@ "movia_play_now" = "Play Now"; "movia_login_title_facebook" = "Sign in with FaceBook"; "movia_login_title_apple" = "Sign in with Apple"; - +"movia_Log_out" = "Log out"; +"movia_logoutinfo" = "Are you sure you want to log out?"; +"movia_delete" = "Delete"; +"movia_deleteAccountInfo" = "Are you sure you want to deactivate your account?"; "movia_iap_error_toast_01" = "Invalid in-app purchase"; ///没有可恢复购买