bug修复 1.0.1发布
@ -1607,7 +1607,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -1648,7 +1648,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -35,6 +35,7 @@ class VPHomeListViewController: VPViewController, WMZPageProtocol {
|
|||||||
collectionView.vp_addRefreshBackFooter(insetBottom: 0) { [weak self] in
|
collectionView.vp_addRefreshBackFooter(insetBottom: 0) { [weak self] in
|
||||||
self?.handleFooterRefresh(nil)
|
self?.handleFooterRefresh(nil)
|
||||||
}
|
}
|
||||||
|
collectionView.vp_addNormalEmpty()
|
||||||
collectionView.register(VPHomeListCell.self, forCellWithReuseIdentifier: "cell")
|
collectionView.register(VPHomeListCell.self, forCellWithReuseIdentifier: "cell")
|
||||||
return collectionView
|
return collectionView
|
||||||
}()
|
}()
|
||||||
|
@ -168,6 +168,10 @@ extension VPMeViewController: UITableViewDelegate, UITableViewDataSource {
|
|||||||
let vc = VPFeedbackViewController()
|
let vc = VPFeedbackViewController()
|
||||||
self.navigationController?.pushViewController(vc, animated: true)
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
|
|
||||||
|
case .orderRecord:
|
||||||
|
let vc = VPWalletViewController()
|
||||||
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -204,15 +208,16 @@ extension VPMeViewController {
|
|||||||
]
|
]
|
||||||
|
|
||||||
var cellArr: [VPMeItem] = []
|
var cellArr: [VPMeItem] = []
|
||||||
|
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_07"), title: "Order Record".localized, type: .orderRecord, cellKey: .normal))
|
||||||
// cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_05"), title: "Language".localized, type: .language, cellKey: .normal))
|
// cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_05"), title: "Language".localized, type: .language, cellKey: .normal))
|
||||||
|
if VPLoginManager.manager.userInfo?.is_tourist == false {
|
||||||
|
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_06"), title: "Delete Account".localized, type: .deleteAccount, cellKey: .normal))
|
||||||
|
}
|
||||||
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_01"), title: "Privacy Policy".localized, type: .privacyPolicy, cellKey: .normal))
|
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_01"), title: "Privacy Policy".localized, type: .privacyPolicy, cellKey: .normal))
|
||||||
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_02"), title: "User Agreement".localized, type: .userAgreement, cellKey: .normal))
|
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_02"), title: "User Agreement".localized, type: .userAgreement, cellKey: .normal))
|
||||||
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_04"), title: "Help Center".localized, type: .feedback, cellKey: .normal))
|
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_04"), title: "Feedback".localized, type: .feedback, cellKey: .normal))
|
||||||
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_03"), title: "About Us".localized, type: .aboutUs, cellKey: .normal))
|
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_03"), title: "About Us".localized, type: .aboutUs, cellKey: .normal))
|
||||||
|
|
||||||
if VPLoginManager.manager.userInfo?.is_tourist == false {
|
|
||||||
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_06"), title: "Delet Account".localized, type: .deleteAccount, cellKey: .normal))
|
|
||||||
}
|
|
||||||
|
|
||||||
dataArr.append(cellArr)
|
dataArr.append(cellArr)
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ struct VPMeItem {
|
|||||||
case aboutUs
|
case aboutUs
|
||||||
case feedback
|
case feedback
|
||||||
case deleteAccount
|
case deleteAccount
|
||||||
|
case orderRecord
|
||||||
case informationProtection
|
case informationProtection
|
||||||
case civizatioConvention
|
case civizatioConvention
|
||||||
case informationSharing
|
case informationSharing
|
||||||
|
@ -94,7 +94,7 @@ extension VPMeUserInfoCell {
|
|||||||
contentView.addSubview(avatarImageView)
|
contentView.addSubview(avatarImageView)
|
||||||
contentView.addSubview(nicknameLabel)
|
contentView.addSubview(nicknameLabel)
|
||||||
contentView.addSubview(idLabel)
|
contentView.addSubview(idLabel)
|
||||||
contentView.addSubview(loginButton)
|
// contentView.addSubview(loginButton)
|
||||||
|
|
||||||
avatarImageView.snp.makeConstraints { make in
|
avatarImageView.snp.makeConstraints { make in
|
||||||
make.left.equalToSuperview()
|
make.left.equalToSuperview()
|
||||||
@ -114,11 +114,11 @@ extension VPMeUserInfoCell {
|
|||||||
make.bottom.equalTo(avatarImageView).offset(-3)
|
make.bottom.equalTo(avatarImageView).offset(-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
loginButton.snp.makeConstraints { make in
|
// loginButton.snp.makeConstraints { make in
|
||||||
make.centerY.equalTo(avatarImageView)
|
// make.centerY.equalTo(avatarImageView)
|
||||||
make.right.equalToSuperview()
|
// make.right.equalToSuperview()
|
||||||
make.height.equalTo(34)
|
// make.height.equalTo(34)
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ class VPVideoPlayerViewController: VPViewController {
|
|||||||
CATransaction.setCompletionBlock { [weak self] in
|
CATransaction.setCompletionBlock { [weak self] in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
if !animated {
|
if !animated {
|
||||||
if self.currentIndexPath != indexPath {
|
if self.currentIndexPath != indexPath, indexPath.row < self.getDataCount() {
|
||||||
self.skip(indexPath: indexPath)
|
self.skip(indexPath: indexPath)
|
||||||
} else {
|
} else {
|
||||||
self.play()
|
self.play()
|
||||||
|
@ -47,7 +47,7 @@ class VPShortModel: VPModel, SmartCodable {
|
|||||||
|
|
||||||
static func mappingForKey() -> [SmartKeyTransformer]? {
|
static func mappingForKey() -> [SmartKeyTransformer]? {
|
||||||
return [
|
return [
|
||||||
CodingKeys.vp_description <--- ["description"],
|
CodingKeys.vp_description <--- ["description", "short_video_description"],
|
||||||
CodingKeys.name <--- ["short_video_title", "name"]
|
CodingKeys.name <--- ["short_video_title", "name"]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ class VPPlayerCoinBuyView: UIView {
|
|||||||
var videoId: String?
|
var videoId: String?
|
||||||
var buyFinishBlock: (() -> Void)?
|
var buyFinishBlock: (() -> Void)?
|
||||||
|
|
||||||
private lazy var selectedIndex = 0
|
private var selectedIndex: Int?
|
||||||
|
|
||||||
private lazy var collectionViewLayout: UICollectionViewFlowLayout = {
|
private lazy var collectionViewLayout: UICollectionViewFlowLayout = {
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ class VPPlayerVipBuyView: UIView {
|
|||||||
|
|
||||||
var buyFinishBlock: (() -> Void)?
|
var buyFinishBlock: (() -> Void)?
|
||||||
|
|
||||||
private lazy var currentIndex: Int = 0
|
private var currentIndex: Int?
|
||||||
|
|
||||||
private lazy var collectionViewLayout: UICollectionViewFlowLayout = {
|
private lazy var collectionViewLayout: UICollectionViewFlowLayout = {
|
||||||
let layout = UICollectionViewFlowLayout()
|
let layout = UICollectionViewFlowLayout()
|
||||||
|
@ -95,8 +95,6 @@ class VPVideoPlayerCell: VPCollectionViewCell, VPPlayerProtocol {
|
|||||||
didSet {
|
didSet {
|
||||||
controlView.isCurrent = isCurrent
|
controlView.isCurrent = isCurrent
|
||||||
if !isCurrent {
|
if !isCurrent {
|
||||||
// self.player.replay()
|
|
||||||
// self.player.seekToTime(toTime: 0)
|
|
||||||
self.coverImageView.isHidden = false
|
self.coverImageView.isHidden = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -210,6 +208,7 @@ extension VPVideoPlayerCell: VPPlayerDelegate {
|
|||||||
|
|
||||||
func vp_playerReadyToPlay(_ player: VPPlayer) {
|
func vp_playerReadyToPlay(_ player: VPPlayer) {
|
||||||
self.seekToTime(toTime: (videoInfo?.play_seconds ?? 0) / 1000)
|
self.seekToTime(toTime: (videoInfo?.play_seconds ?? 0) / 1000)
|
||||||
|
player.rate = self.viewModel?.rateModel.rate.getRate() ?? 1
|
||||||
}
|
}
|
||||||
|
|
||||||
private func updateCoverShowState() {
|
private func updateCoverShowState() {
|
||||||
|
@ -201,11 +201,27 @@ extension VPVideoPlayerControlView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc private func handleCollectButton() {
|
@objc private func handleCollectButton() {
|
||||||
guard let shortPlayId = self.videoInfo?.short_play_id else { return }
|
|
||||||
guard let videoId = self.videoInfo?.short_play_video_id else { return }
|
|
||||||
|
|
||||||
let isCollect = !(self.shortModel?.is_collect ?? false)
|
let isCollect = !(self.shortModel?.is_collect ?? false)
|
||||||
|
|
||||||
|
if isCollect {
|
||||||
|
self.collectShort(isCollect: isCollect)
|
||||||
|
} else {
|
||||||
|
let alert = VPAlertView(title: "kUnFavoritesAlertTitle".localized, subtitle: "kUnFavoritesAlertText".localized, icon: UIImage(named: "alert_icon_03"), normalButtonText: nil, highlightButtonText: "Confirm".localized)
|
||||||
|
alert.show()
|
||||||
|
|
||||||
|
alert.clickHighlightButton = { [weak self] in
|
||||||
|
self?.collectShort(isCollect: isCollect)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private func collectShort(isCollect: Bool) {
|
||||||
|
guard let shortPlayId = self.videoInfo?.short_play_id else { return }
|
||||||
|
guard let videoId = self.videoInfo?.short_play_video_id else { return }
|
||||||
|
|
||||||
VPVideoAPI.requestCollectShort(isCollect: isCollect, shortPlayId: shortPlayId, videoId: videoId) { [weak self] in
|
VPVideoAPI.requestCollectShort(isCollect: isCollect, shortPlayId: shortPlayId, videoId: videoId) { [weak self] in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
var count = self.shortModel?.collect_total ?? 0
|
var count = self.shortModel?.collect_total ?? 0
|
||||||
|
@ -16,7 +16,7 @@ class VPCoinsViewController: VPViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private lazy var selectedIndex = 0
|
private var selectedIndex: Int?
|
||||||
|
|
||||||
//MARK: UI属性
|
//MARK: UI属性
|
||||||
private lazy var scrollView: UIScrollView = {
|
private lazy var scrollView: UIScrollView = {
|
||||||
|
@ -29,6 +29,7 @@ class VPGiveCoinRecordsViewController: VPViewController {
|
|||||||
tableView.vp_addRefreshBackFooter(insetBottom: tableView.contentInset.bottom) { [weak self] in
|
tableView.vp_addRefreshBackFooter(insetBottom: tableView.contentInset.bottom) { [weak self] in
|
||||||
self?.handleFooterRefresh(nil)
|
self?.handleFooterRefresh(nil)
|
||||||
}
|
}
|
||||||
|
tableView.vp_addNormalEmpty()
|
||||||
tableView.register(VPGiveCoinRecordsCell.self, forCellReuseIdentifier: "cell")
|
tableView.register(VPGiveCoinRecordsCell.self, forCellReuseIdentifier: "cell")
|
||||||
return tableView
|
return tableView
|
||||||
}()
|
}()
|
||||||
|
@ -16,7 +16,7 @@ class VPVipViewController: VPViewController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private lazy var currentIndex: Int = 0
|
private var currentIndex: Int?
|
||||||
|
|
||||||
private lazy var scrollView: UIScrollView = {
|
private lazy var scrollView: UIScrollView = {
|
||||||
let scrollView = VPScrollView()
|
let scrollView = VPScrollView()
|
||||||
|
@ -13,6 +13,7 @@ class VPCoinRecordCell: VPWalletBaseCell {
|
|||||||
didSet {
|
didSet {
|
||||||
coinCountLabel.text = "+\(model?.value ?? "0")"
|
coinCountLabel.text = "+\(model?.value ?? "0")"
|
||||||
timeLabel.text = model?.created_at
|
timeLabel.text = model?.created_at
|
||||||
|
titleLabel.text = model?.type
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21,7 +22,7 @@ class VPCoinRecordCell: VPWalletBaseCell {
|
|||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
label.font = .fontRegular(ofSize: 14)
|
label.font = .fontRegular(ofSize: 14)
|
||||||
label.textColor = .colorFFFFFF(alpha: 0.9)
|
label.textColor = .colorFFFFFF(alpha: 0.9)
|
||||||
label.text = "Recharge Coins".localized
|
|
||||||
return label
|
return label
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -23,11 +23,15 @@ class VPCoinsBuyCell: VPCollectionViewCell {
|
|||||||
|
|
||||||
if let sendCoins = item?.send_coins, sendCoins > 0, let coins = item?.coins {
|
if let sendCoins = item?.send_coins, sendCoins > 0, let coins = item?.coins {
|
||||||
sendBgView.isHidden = false
|
sendBgView.isHidden = false
|
||||||
|
sendCountLabel.isHidden = false
|
||||||
|
|
||||||
|
sendCountLabel.text = String(format: "kBonusCoinCount".localized, "\(sendCoins)")
|
||||||
let percent = CGFloat(sendCoins) / CGFloat(coins) * 100
|
let percent = CGFloat(sendCoins) / CGFloat(coins) * 100
|
||||||
|
|
||||||
sendLabel.text = String(format: "+%.0f%%".localized, percent)
|
sendLabel.text = String(format: "+%.0f%%".localized, percent)
|
||||||
} else {
|
} else {
|
||||||
sendBgView.isHidden = true
|
sendBgView.isHidden = true
|
||||||
|
sendCountLabel.isHidden = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,6 +63,11 @@ class VPCoinsBuyCell: VPCollectionViewCell {
|
|||||||
return imageView
|
return imageView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
private lazy var coinBgView: UIView = {
|
||||||
|
let view = UIView()
|
||||||
|
return view
|
||||||
|
}()
|
||||||
|
|
||||||
private lazy var coinCountLabel: UILabel = {
|
private lazy var coinCountLabel: UILabel = {
|
||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
label.font = .fontMedium(ofSize: 16)
|
label.font = .fontMedium(ofSize: 16)
|
||||||
@ -71,6 +80,13 @@ class VPCoinsBuyCell: VPCollectionViewCell {
|
|||||||
return imageView
|
return imageView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
private lazy var sendCountLabel: UILabel = {
|
||||||
|
let label = UILabel()
|
||||||
|
label.font = .fontRegular(ofSize: 12)
|
||||||
|
label.textColor = .color05CEA0()
|
||||||
|
return label
|
||||||
|
}()
|
||||||
|
|
||||||
private lazy var priceLabel: UILabel = {
|
private lazy var priceLabel: UILabel = {
|
||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
label.font = .fontRegular(ofSize: 12)
|
label.font = .fontRegular(ofSize: 12)
|
||||||
@ -131,8 +147,10 @@ extension VPCoinsBuyCell {
|
|||||||
private func vp_setupUI() {
|
private func vp_setupUI() {
|
||||||
contentView.addSubview(bgView)
|
contentView.addSubview(bgView)
|
||||||
contentView.addSubview(selectedImageView)
|
contentView.addSubview(selectedImageView)
|
||||||
contentView.addSubview(coinCountLabel)
|
contentView.addSubview(coinBgView)
|
||||||
contentView.addSubview(iconImageView)
|
coinBgView.addSubview(coinCountLabel)
|
||||||
|
coinBgView.addSubview(iconImageView)
|
||||||
|
contentView.addSubview(sendCountLabel)
|
||||||
contentView.addSubview(priceLabel)
|
contentView.addSubview(priceLabel)
|
||||||
contentView.addSubview(hotBgView)
|
contentView.addSubview(hotBgView)
|
||||||
hotBgView.addSubview(hotLabel)
|
hotBgView.addSubview(hotLabel)
|
||||||
@ -148,14 +166,26 @@ extension VPCoinsBuyCell {
|
|||||||
make.bottom.right.equalToSuperview()
|
make.bottom.right.equalToSuperview()
|
||||||
}
|
}
|
||||||
|
|
||||||
coinCountLabel.snp.makeConstraints { make in
|
coinBgView.snp.makeConstraints { make in
|
||||||
make.centerX.equalToSuperview()
|
make.centerX.equalToSuperview()
|
||||||
make.top.equalToSuperview().offset(22)
|
make.top.equalToSuperview().offset(28)
|
||||||
|
}
|
||||||
|
|
||||||
|
coinCountLabel.snp.makeConstraints { make in
|
||||||
|
make.left.equalToSuperview()
|
||||||
|
make.centerY.equalToSuperview()
|
||||||
|
}
|
||||||
|
|
||||||
|
sendCountLabel.snp.makeConstraints { make in
|
||||||
|
make.centerX.equalToSuperview()
|
||||||
|
make.top.equalTo(coinBgView.snp.bottom).offset(8)
|
||||||
}
|
}
|
||||||
|
|
||||||
iconImageView.snp.makeConstraints { make in
|
iconImageView.snp.makeConstraints { make in
|
||||||
make.centerX.equalToSuperview()
|
make.left.equalTo(coinCountLabel.snp.right).offset(3)
|
||||||
make.top.equalToSuperview().offset(45)
|
make.right.equalToSuperview()
|
||||||
|
make.centerY.equalToSuperview()
|
||||||
|
make.top.equalToSuperview()
|
||||||
}
|
}
|
||||||
|
|
||||||
priceLabel.snp.makeConstraints { make in
|
priceLabel.snp.makeConstraints { make in
|
||||||
|
@ -13,6 +13,7 @@ class VPVIPRecordCell: VPWalletBaseCell {
|
|||||||
didSet {
|
didSet {
|
||||||
dayLabel.text = model?.value
|
dayLabel.text = model?.value
|
||||||
timeLabel.text = model?.created_at
|
timeLabel.text = model?.created_at
|
||||||
|
titleLabel.text = model?.type
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,6 +180,8 @@ extension VPIAPManager: JXIAPManagerDelegate {
|
|||||||
|
|
||||||
if code == .noProduct {
|
if code == .noProduct {
|
||||||
VPToast.show(text: "kIapErrorToast02".localized)
|
VPToast.show(text: "kIapErrorToast02".localized)
|
||||||
|
} else if code == .cancelled {
|
||||||
|
VPToast.show(text: "kIapErrorToast04".localized)
|
||||||
}
|
}
|
||||||
self.completionHandler?(false)
|
self.completionHandler?(false)
|
||||||
}
|
}
|
||||||
|
22
Veloria/Source/Assets.xcassets/icon/alert_icon_03.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "通知图标-切图图层@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "通知图标-切图图层@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
Veloria/Source/Assets.xcassets/icon/alert_icon_03.imageset/通知图标-切图图层@2x.png
vendored
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
Veloria/Source/Assets.xcassets/icon/alert_icon_03.imageset/通知图标-切图图层@3x.png
vendored
Normal file
After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.1 KiB |
22
Veloria/Source/Assets.xcassets/icon/me_item_icon_07.imageset/Contents.json
vendored
Normal file
@ -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
|
||||||
|
}
|
||||||
|
}
|
BIN
Veloria/Source/Assets.xcassets/icon/me_item_icon_07.imageset/Frame@2x.png
vendored
Normal file
After Width: | Height: | Size: 555 B |
BIN
Veloria/Source/Assets.xcassets/icon/me_item_icon_07.imageset/Frame@3x.png
vendored
Normal file
After Width: | Height: | Size: 650 B |
@ -31,7 +31,6 @@
|
|||||||
"Explicit List of Personal Information Collection" = "Explicit List of Personal Information Collection";
|
"Explicit List of Personal Information Collection" = "Explicit List of Personal Information Collection";
|
||||||
"About Us" = "About Us";
|
"About Us" = "About Us";
|
||||||
"Visitor" = "Visitor";
|
"Visitor" = "Visitor";
|
||||||
"Help Center" = "Help Center";
|
|
||||||
"Feedback History" = "Feedback History";
|
"Feedback History" = "Feedback History";
|
||||||
"Feedback" = "Feedback";
|
"Feedback" = "Feedback";
|
||||||
"Feedback Details" = "Feedback Details";
|
"Feedback Details" = "Feedback Details";
|
||||||
@ -73,7 +72,7 @@
|
|||||||
"Login with Facebook" = "Login with Facebook";
|
"Login with Facebook" = "Login with Facebook";
|
||||||
"Log In" = "Log In";
|
"Log In" = "Log In";
|
||||||
"Sign Out" = "Sign Out";
|
"Sign Out" = "Sign Out";
|
||||||
"Delet Account" = "Delet Account";
|
"Delete Account" = "Delete Account";
|
||||||
"Account Deletion" = "Account Deletion";
|
"Account Deletion" = "Account Deletion";
|
||||||
"Delete Account" = "Delete Account";
|
"Delete Account" = "Delete Account";
|
||||||
"Delete Forever" = "Delete Forever";
|
"Delete Forever" = "Delete Forever";
|
||||||
@ -89,13 +88,17 @@
|
|||||||
"Restore" = "Restore";
|
"Restore" = "Restore";
|
||||||
"Watch Now" = "Watch Now";
|
"Watch Now" = "Watch Now";
|
||||||
"More" = "More";
|
"More" = "More";
|
||||||
|
"Confirm" = "Confirm";
|
||||||
|
"Order Record" = "Order Record";
|
||||||
|
|
||||||
|
|
||||||
|
"kBonusCoinCount" = "+%@ Bonus";
|
||||||
"kEmptyTitle01" = "Nothing Here Yet";
|
"kEmptyTitle01" = "Nothing Here Yet";
|
||||||
"kEmptyDes01" = "Start exploring and add something!";
|
"kEmptyDes01" = "Start exploring and add something!";
|
||||||
"kEmptyTitle02" = "Not Found";
|
"kEmptyTitle02" = "Not Found";
|
||||||
"kEmptyDes02" = "Sorry, we couldn't find anything.";
|
"kEmptyDes02" = "Sorry, we couldn't find anything.";
|
||||||
"kDetailRecommandTitle" = "Picked Just for You";
|
"kDetailRecommandTitle" = "Picked Just for You";
|
||||||
"kHomeTitleText" = "10,000+ addictive shorts await!";
|
"kHomeTitleText" = "10,000+ Addictive Shorts Await!";
|
||||||
"kSearchPlaceholderText1" = "Search dramas";
|
"kSearchPlaceholderText1" = "Search dramas";
|
||||||
"kSearchPlaceholderText2" = "#Recersal of fate";
|
"kSearchPlaceholderText2" = "#Recersal of fate";
|
||||||
"kHomeMenuTitle" = "Select Categories";
|
"kHomeMenuTitle" = "Select Categories";
|
||||||
@ -123,6 +126,7 @@
|
|||||||
"kIapErrorToast02" = "Invalid in-app purchase";
|
"kIapErrorToast02" = "Invalid in-app purchase";
|
||||||
///没有可恢复购买
|
///没有可恢复购买
|
||||||
"kIapErrorToast03" = "There are no in-app purchases to restore.";
|
"kIapErrorToast03" = "There are no in-app purchases to restore.";
|
||||||
|
"kIapErrorToast04" = "Payment has been cancelled.";
|
||||||
///请购买上一集
|
///请购买上一集
|
||||||
"kUnlockVideoErrorToast01" = "The prequel to this series is not unlocked. Please unlock the prequel before unlocking this series";
|
"kUnlockVideoErrorToast01" = "The prequel to this series is not unlocked. Please unlock the prequel before unlocking this series";
|
||||||
|
|
||||||
@ -131,14 +135,16 @@
|
|||||||
"kStoreTips" = "1. Coins are virtual items and cannot be refunded. Use it for this product.
|
"kStoreTips" = "1. Coins are virtual items and cannot be refunded. Use it for this product.
|
||||||
2. Gold coins will never expire, the reward coins will expire 24 hours a day.
|
2. Gold coins will never expire, the reward coins will expire 24 hours a day.
|
||||||
3. Coins will be used first when unlocking episodes. If the amount is insufficient, reward coins will automatically be used.
|
3. Coins will be used first when unlocking episodes. If the amount is insufficient, reward coins will automatically be used.
|
||||||
4. The purchase has not been credited, click <Restore> torefresh.
|
4. The purchase has not been credited, click <Restore> to refresh.
|
||||||
5. For other questions, contact us via Profile>Help &feedback.";
|
5. For other questions, contact us via Me>Feedback.";
|
||||||
|
|
||||||
//请选择需要删除的短剧
|
//请选择需要删除的短剧
|
||||||
"kToastText1" = "Please select the short plays that need to be deleted";
|
"kToastText1" = "Please select the short plays that need to be deleted";
|
||||||
|
|
||||||
"kDeleteAccountAlertTitle" = "Confirm Account Deletion";
|
"kDeleteAccountAlertTitle" = "Confirm Account Deletion";
|
||||||
"kDeleteAccountAlertText" = "This action cannot be undone.";
|
"kDeleteAccountAlertText" = "This action cannot be undone.";
|
||||||
|
"kUnFavoritesAlertTitle" = "UnFavorites";
|
||||||
|
"kUnFavoritesAlertText" = "You may not find this collection after you uncollect it";
|
||||||
"kLogoutAlertTitle" = "Ready to Leave?";
|
"kLogoutAlertTitle" = "Ready to Leave?";
|
||||||
"kLogoutAlertText" = "when you sign out, your watch history will not be synced to your account.";
|
"kLogoutAlertText" = "when you sign out, your watch history will not be synced to your account.";
|
||||||
|
|
||||||
|