Commit ed442887 authored by DavidHuang's avatar DavidHuang

Merge branch 'main' into push

# Conflicts:
#	galaxy/galaxy.xcodeproj/project.pbxproj
parents f23a31e7 a468a3b2
......@@ -33,7 +33,7 @@ platform :ios do
sc_105_branch = "sc-1.0.5"
main_fix = "main-fix"
jiaofei = "jiaofei"
plan = "plan"
plan = "4.25-1"
#打包正使用的分支
myPack_branch = plan
......
......@@ -1269,6 +1269,7 @@
04D8FFB42DA61DA300703C75 /* YHPlanTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D8FFB32DA61DA200703C75 /* YHPlanTestViewController.swift */; };
04D8FFB82DB0D50B00703C75 /* YHGalaxyNewsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D8FFB72DB0D50B00703C75 /* YHGalaxyNewsListViewController.swift */; };
04D8FFBA2DB0D95A00703C75 /* YHGalaxyNewsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D8FFB92DB0D95A00703C75 /* YHGalaxyNewsCell.swift */; };
04D8FFB62DAE489A00703C75 /* YHVisitHKAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D8FFB52DAE489A00703C75 /* YHVisitHKAlertView.swift */; };
04E4CF3E2D5C6D32004D4013 /* YHCountryMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E4CF3D2D5C6D32004D4013 /* YHCountryMessageView.swift */; };
04E4CF402D5C83AE004D4013 /* YHSelectPhoneCountryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E4CF3F2D5C83AE004D4013 /* YHSelectPhoneCountryViewController.swift */; };
04E507D62D6EE856005F758B /* YHUserLevelAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E507D52D6EE856005F758B /* YHUserLevelAlertView.swift */; };
......@@ -2580,6 +2581,7 @@
04D8FFB32DA61DA200703C75 /* YHPlanTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHPlanTestViewController.swift; sourceTree = "<group>"; };
04D8FFB72DB0D50B00703C75 /* YHGalaxyNewsListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGalaxyNewsListViewController.swift; sourceTree = "<group>"; };
04D8FFB92DB0D95A00703C75 /* YHGalaxyNewsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGalaxyNewsCell.swift; sourceTree = "<group>"; };
04D8FFB52DAE489A00703C75 /* YHVisitHKAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVisitHKAlertView.swift; sourceTree = "<group>"; };
04E4CF3D2D5C6D32004D4013 /* YHCountryMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHCountryMessageView.swift; sourceTree = "<group>"; };
04E4CF3F2D5C83AE004D4013 /* YHSelectPhoneCountryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHSelectPhoneCountryViewController.swift; sourceTree = "<group>"; };
04E507D52D6EE856005F758B /* YHUserLevelAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHUserLevelAlertView.swift; sourceTree = "<group>"; };
......@@ -3631,6 +3633,7 @@
045C0B882D12CA5E00BD2DC0 /* YHServiceItemCell.swift */,
045C0B892D12CA5E00BD2DC0 /* YHServiceSelectAlertView.swift */,
045C0B8A2D12CA5E00BD2DC0 /* YHWaitAppointMembersCell.swift */,
04D8FFB52DAE489A00703C75 /* YHVisitHKAlertView.swift */,
);
path = V;
sourceTree = "<group>";
......@@ -7206,6 +7209,7 @@
045C0FC52D12CA5F00BD2DC0 /* YHMainInformationTableViewCell.swift in Sources */,
045C0FC62D12CA5F00BD2DC0 /* YHApplyActivityResultViewController.swift in Sources */,
045C0FC72D12CA5F00BD2DC0 /* YhOverlayView.swift in Sources */,
04D8FFB62DAE489A00703C75 /* YHVisitHKAlertView.swift in Sources */,
04AE20372D13B7CF00891D24 /* YHGCChildInfoContainerVC.swift in Sources */,
045C0FC82D12CA5F00BD2DC0 /* YHCollectionModel.swift in Sources */,
045C0FC92D12CA5F00BD2DC0 /* YHOtherLanguageSelecteView.swift in Sources */,
......@@ -8510,22 +8514,24 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = "Launch Screen.storyboard";
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2.0;
MARKETING_VERSION = 2.2.2;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = TESTENV;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(TARGET_NAME)/Res/galaxy-Bridge-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = TestEnv;
};
......@@ -8656,22 +8662,24 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = "Launch Screen.storyboard";
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2.0;
MARKETING_VERSION = 2.2.2;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = UATENV;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(TARGET_NAME)/Res/galaxy-Bridge-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = UatRelease;
};
......@@ -8864,21 +8872,23 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = "Launch Screen.storyboard";
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2.0;
MARKETING_VERSION = 2.2.2;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(TARGET_NAME)/Res/galaxy-Bridge-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
......@@ -8912,21 +8922,23 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = "Launch Screen.storyboard";
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.2.0;
MARKETING_VERSION = 2.2.2;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(TARGET_NAME)/Res/galaxy-Bridge-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
......
......@@ -223,15 +223,23 @@ class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate {
}
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .pad {
let vc = UIViewController.current ?? UIViewController()
if vc.isKind(of: YHLivePlayerViewController.self) {
if let vc2 = vc as? YHLivePlayerViewController, vc2.canDoRotateFunc() {
// printLog(" 可旋转")
return [.portrait, .landscapeRight]
}
}
// printLog("不 可旋转")
return .portrait
} else {
let vc = UIViewController.current ?? UIViewController()
if vc.isKind(of: YHLivePlayerViewController.self) {
if let vc2 = vc as? YHLivePlayerViewController, vc2.canDoRotateFunc() {
return [.portrait, .landscapeRight]
}
}
return .portrait
}
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
......
......@@ -43,6 +43,22 @@ class YHTabBarViewController: ESTabBarController {
shareView.frame = self.tabBar.frame
view.addSubview(shareView)
if UIDevice.current.userInterfaceIdiom == .pad {
if #available(iOS 18.0, *) {
traitOverrides.horizontalSizeClass = .compact
// 2. 遍历子视图,找到可能是 _UITabContainerView 的视图
for subview in view.subviews {
let className = String(describing: type(of: subview))
if className.contains("TabContainer") { // 模糊匹配类名
subview.isHidden = true // 或其他操作
break
}
}
view.addSubview(tabBar)
}
}
shareView.block = { tag in
if let model = self.shareModel {
......
......@@ -75,18 +75,18 @@ class YHHKEventCenterViewController: YHBaseViewController {
gk_navTitle = "香港办事"
gk_navBackgroundColor = .white
gk_navBarAlpha = 1.0
homeViewModel.getHKEvent {[weak self] _, _ in
guard let self = self else { return }
homeViewModel.getHKEvent { _, _ in
// guard let self = self else { return }
self.hkList = self.homeViewModel.hkList ?? []
self.arrItemTitles.removeAll()
for item in self.hkList {
self.arrItemTitles.append(item.tag)
let vc = YHHKEventWebViewController()
vc.model = item
arrItemVCs.append(vc)
self.arrItemVCs.append(vc)
}
self.segmentedDataSource.titles = arrItemTitles
self.segmentedView.dataSource = segmentedDataSource
self.segmentedDataSource.titles = self.arrItemTitles
self.segmentedView.dataSource = self.segmentedDataSource
self.segmentedView.reloadData()
}
}
......@@ -140,6 +140,15 @@ class YHHKEventCenterViewController: YHBaseViewController {
}
}
task.resume()
} else if model.tag.contains("香港行程") {
guard let urlString = model.list.first else {
return
}
var currentUrl = urlString
if let orderID = UserDefaults.standard.value(forKey: "orderIdForPreview") as? Int {
currentUrl = urlString + "?paramO=\(orderID)" + "&param=" + YHLoginManager.shared.h5Token
}
YHShareManager.shared.sendLinkContent("一图看清香港办事", "", UIImage(named: "AppIcon") ?? UIImage(), link: currentUrl)
} else {
guard let urlString = model.list.first else {
return
......@@ -150,6 +159,10 @@ class YHHKEventCenterViewController: YHBaseViewController {
YHOneKeyLoginManager.shared.oneKeyLogin()
}
}
deinit {
}
}
extension YHHKEventCenterViewController: JXSegmentedViewDelegate {
......
......@@ -11,8 +11,8 @@ import Photos
import WebKit
import JXSegmentedView
class YHHKEventWebViewController: YHBaseViewController {
var webview = WKWebView()
class YHHKEventWebViewController: YHH5WebViewVC {
// var webview = WKWebView()
var model: YHHKEventModel = YHHKEventModel()
override func viewDidLoad() {
super.viewDidLoad()
......@@ -33,11 +33,17 @@ class YHHKEventWebViewController: YHBaseViewController {
extension YHHKEventWebViewController {
func loadData() {
guard let urlString = model.list.first else { return }
if let url = URL(string: urlString) {
var currentUrl = urlString
if model.tag.contains("香港行程") {
if let orderID = UserDefaults.standard.value(forKey: "orderIdForPreview") as? Int {
currentUrl = urlString + "?paramO=\(orderID)" + "&param=" + YHLoginManager.shared.h5Token
}
}
if let url = URL(string: currentUrl) {
let request = URLRequest(url: url)
webview.load(request)
} else {
let tmpUrl = YHURLEncodeHelper.urlEncodedString(urlString)
let tmpUrl = YHURLEncodeHelper.urlEncodedString(currentUrl)
if let url = URL(string: tmpUrl) {
let request = URLRequest(url: url)
webview.load(request)
......@@ -60,13 +66,15 @@ extension YHHKEventWebViewController {
func setupUI() {
gk_navigationBar.isHidden = true
gk_navBarAlpha = 0.0
gk_navLineHidden = false
gk_navBackgroundColor = .white
// 创建wkwebview
webview = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - 0))
webview.navigationDelegate = self
// 添加wkwebview
view.addSubview(webview)
// webview = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - 0))
// webview.navigationDelegate = self
// // 添加wkwebview
// view.addSubview(webview)
webview.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - 0)
view.addSubview(bottomViewForSavePic)
bottomViewForSavePic.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
......@@ -76,10 +84,12 @@ extension YHHKEventWebViewController {
self.saveImageToPhotoLib()
}
}
}
extension YHHKEventWebViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
extension YHHKEventWebViewController {
override func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
super.webView(webView, didFinish: navigation)
if model.tag.contains("日历") {
bottomViewForSavePic.isHidden = false
}
......
......@@ -207,7 +207,7 @@ class YHHomeHoldViewPageViewController: YHBaseViewController, WKUIDelegate, WKNa
// 处于第一个item的时候,才允许屏幕边缘手势返回
navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
checkStatusBar()
YHOSSManager.share.getOSSID()
getTotalUnreadMsgCount()
......@@ -225,6 +225,13 @@ class YHHomeHoldViewPageViewController: YHBaseViewController, WKUIDelegate, WKNa
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: YhConstant.YhNotification.backToHomeNotification, object: nil)
}
private func checkStatusBar() {
if k_Height_statusBar() == 0 {
self.gk_statusBarHidden = false
setNeedsStatusBarAppearanceUpdate()
}
}
@objc func handleNotification(_ notification: Notification) {
if let userInfo = notification.userInfo, let value = userInfo["value"] as? Int {
segmentedView.selectItemAt(index: value)
......
......@@ -34,7 +34,6 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD
config.mediaTypesRequiringUserActionForPlayback = []
let webview = DWKWebView(frame: .zero, configuration: config)
webview.scrollView.contentInsetAdjustmentBehavior = .never
webview.navigationDelegate = self
// webview.scrollView.delegate = self
webview.setDebugMode(false)
......@@ -135,7 +134,6 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD
// webview = DWKWebView(frame: CGRect(x: 0, y: statusHeight + navHeight!, width: self.view.frame.width, height: self.view.frame.height - statusHeight - navHeight! - 59 - k_Height_safeAreaInsetsBottom()))
webview.navigationDelegate = self
webview.setDebugMode(false)
webview.scrollView.contentInsetAdjustmentBehavior = .never
api.delegate = self
......
......@@ -398,8 +398,12 @@ extension YHHomePageViewModel {
}
func getHKEvent(param: [String: Int] = [:], callBackBlock: @escaping (_ success: Bool, _ error: YHErrorModel?) -> Void) {
var params = param
if let orderID = UserDefaults.standard.value(forKey: "orderIdForPreview") as? Int {
params = ["order_id": orderID]
}
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.hklistApi
_ = YHNetRequest.getRequest(url: strUrl, params: param) { [weak self] json, _ in
_ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, _ in
guard let self = self else { return }
// 1. json字符串 转 对象
if json.code == 200 {
......
......@@ -791,6 +791,12 @@ extension YHCertificateAppointViewController {
groupModel.isNeedCheck = true
isOK = false
}
// 到访香港体验中心 未选
if groupModel.isWillVisitHkGalaxyBay == 0 {
groupModel.isNeedCheck = true
isOK = false
}
}
}
if !isOK { // 检测各批次是否有日期或办证地点未选择
......@@ -826,6 +832,7 @@ extension YHCertificateAppointViewController {
let batch: [String: Any] = ["start_time": start_time,
"end_time": end_time,
"migration_office": model.hkPlace.name,
"is_will_visit_hk_galaxy_bay": model.isWillVisitHkGalaxyBay,
"users": users]
batchs.append(batch)
}
......
......@@ -21,7 +21,7 @@ class YHReAppointViewController: YHBaseViewController {
lazy var tableView: UITableView = {
let tableView = UITableView(frame: .zero, style: .grouped)
tableView.estimatedSectionHeaderHeight = 16.0
tableView.estimatedSectionHeaderHeight = 0.01
tableView.estimatedSectionFooterHeight = 0.01
tableView.contentInsetAdjustmentBehavior = .never
tableView.showsVerticalScrollIndicator = false
......@@ -217,6 +217,12 @@ extension YHReAppointViewController {
groupModel.isNeedCheck = true
isOK = false
}
// 到访香港体验中心 未选
if groupModel.isWillVisitHkGalaxyBay == 0 {
groupModel.isNeedCheck = true
isOK = false
}
}
}
if !isOK { // 检测各批次是否有日期或办证地点未选择
......@@ -252,6 +258,7 @@ extension YHReAppointViewController {
let batch: [String: Any] = ["start_time": start_time,
"end_time": end_time,
"migration_office": model.hkPlace.name,
"is_will_visit_hk_galaxy_bay": model.isWillVisitHkGalaxyBay,
"users": users]
batchs.append(batch)
}
......
......@@ -41,6 +41,7 @@ class YHAppointMemberGroupModel: SmartCodable {
// 此处是私链URL数组
var receipts: [String] = []
var submitTime: String = ""
var isWillVisitHkGalaxyBay: Int = 0 // 0没有选择1是2否
// 自定义
// 私链反馈回执对应的公链
......@@ -65,6 +66,7 @@ class YHAppointMemberGroupModel: SmartCodable {
case goTime = "go_time"
case receipts = "receipts"
case submitTime = "submit_time"
case isWillVisitHkGalaxyBay = "is_will_visit_hk_galaxy_bay"
}
required init() {
......
......@@ -71,4 +71,8 @@ class YHSelectGroupMemberModel {
// 是否显示重新预约人员名单
var isShowReAppointView: Bool = false
//
var isWillVisitHkGalaxyBay: Int = 0 // 0没有选择1是2否
}
......@@ -12,6 +12,7 @@ enum YHGrabItemViewType: Int {
case info
case grab
case files
case visit
}
class YHGrabItem {
......@@ -97,9 +98,14 @@ class YHGrabNumberInfoItemView: UIView {
if item.files.count%4 != 0 {
rowCount += 1
}
collectionView.snp.remakeConstraints { make in
make.left.right.bottom.equalTo(0)
if item.type == .visit {
make.top.equalTo(titleLabel.snp.bottom).offset(16)
} else {
make.top.equalTo(detailLabel.snp.bottom).offset(16)
}
if item.type == .files {
make.height.equalTo((fileWidth+16.0)*Double(rowCount))
......@@ -122,6 +128,7 @@ class YHGrabNumberInfoItemView: UIView {
lazy var titleLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = .mainTextColor(alpha: 0.5)
return label
......
......@@ -41,8 +41,10 @@ class YHGrabingNumberListCell: UITableViewCell {
if group.wantMinTime == group.wantMaxTime {
wantTimeText = group.wantMinTime
}
let visitOption = group.isWillVisitHkGalaxyBay == 1 ? "是" : "否"
let items2 = [YHGrabItem(type: .info, title: "期望赴港时间:", detail: wantTimeText, isSingleLine: true),
YHGrabItem(type: .info, title: "期望香港办证点:", detail: group.wantImmigrationOffice, isSingleLine: false)]
YHGrabItem(type: .info, title: "期望香港办证点:", detail: group.wantImmigrationOffice, isSingleLine: false),
YHGrabItem(type: .visit, title: "到访香港体验中心:香港华润大厦 (湾仔入境处旁)", detail: visitOption, isSingleLine: false)]
listView.intentionInfoView.updateItems(items2)
......
......@@ -34,8 +34,10 @@ class YHHaveGrabbedNumberListCell: UITableViewCell {
if group.wantMinTime == group.wantMaxTime {
wantTimeText = group.wantMinTime
}
let visitOption = group.isWillVisitHkGalaxyBay == 1 ? "是" : "否"
let items2 = [YHGrabItem(type: .info, title: "期望赴港时间:", detail: wantTimeText, isSingleLine: true),
YHGrabItem(type: .info, title: "期望香港办证点:", detail: group.wantImmigrationOffice, isSingleLine: false)]
YHGrabItem(type: .info, title: "期望香港办证点:", detail: group.wantImmigrationOffice, isSingleLine: false),
YHGrabItem(type: .visit, title: "到访香港体验中心:香港华润大厦 (湾仔入境处旁)", detail: visitOption, isSingleLine: false)]
listView.intentionInfoView.updateItems(items2)
listContainView.addSubview(listView)
......
......@@ -55,6 +55,21 @@ class YHInfoItemOptionView: UIView {
}
}
var tips: String = "" {
didSet {
let isShowTips = !tips.isEmpty
tipsLabel.text = tips
tipsLabel.snp.updateConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(titleView.snp.bottom).offset(isShowTips ? 5.0 : 0.0)
make.height.equalTo(isShowTips ? 17.0 : 0.0)
make.bottom.equalTo(-titleGap)
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
var selectIndex: Int = -1 {
didSet {
for (index, _) in options.enumerated() {
......@@ -69,8 +84,12 @@ class YHInfoItemOptionView: UIView {
didSet {
titleView.snp.updateConstraints { make in
make.top.equalTo(titleGap)
}
tipsLabel.snp.updateConstraints { make in
make.bottom.equalTo(-titleGap)
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
......@@ -94,6 +113,14 @@ class YHInfoItemOptionView: UIView {
return label
}()
private lazy var tipsLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.font = UIFont.PFSC_R(ofSize: 12)
label.textColor = .failColor
return label
}()
func createOptionButton() -> UIButton {
let btn = UIButton()
......@@ -139,6 +166,8 @@ class YHInfoItemOptionView: UIView {
func createUI() {
self.addSubview(titleView)
self.addSubview(tipsLabel)
titleView.addSubview(titleLabel)
let firstBtn = self.createOptionButton()
......@@ -165,10 +194,16 @@ class YHInfoItemOptionView: UIView {
titleView.snp.makeConstraints { make in
make.left.equalTo(0)
make.top.equalTo(titleGap)
make.bottom.equalTo(-titleGap)
make.width.equalTo(titleMaxWidth)
}
tipsLabel.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(titleView.snp.bottom).offset(0)
make.height.equalTo(0)
make.bottom.equalTo(-titleGap)
}
titleLabel.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
......
......@@ -25,6 +25,24 @@ class YHSelectApplicantGroupCell: UITableViewCell {
// param 选中的用户 是否选中 选中的用户是第几批
var selectBlock: ((_ member: YHHKMemberModel, _ isSelect: Bool, _ groupIndex: Int) -> Void)?
var isShowVisitOption: Bool = true {
didSet {
visitOptionView.isHidden = !isShowVisitOption
visitOptionView.snp.remakeConstraints { make in
make.top.equalTo(locationSelectView.snp.bottom).offset(0)
make.left.equalTo(18)
make.right.equalTo(-18)
if !isShowVisitOption {
make.height.equalTo(0)
}
make.bottom.equalToSuperview()
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
var isShowSelectUserView: Bool = true {
didSet {
......@@ -99,6 +117,7 @@ class YHSelectApplicantGroupCell: UITableViewCell {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
view.clipsToBounds = true
return view
}()
......@@ -288,6 +307,34 @@ class YHSelectApplicantGroupCell: UITableViewCell {
return label
}()
lazy var visitOptionView: YHInfoItemOptionView = {
let view = YHInfoItemOptionView(frame: .zero)
view.title = "到访香港体验中心:香港华润大厦 (湾仔入境处旁)"
view.options = ["是", "否"]
view.selectIndex = 0
view.selectBlock = { [weak self] index in
guard let self = self else { return }
guard let model = dataModel?.model else { return }
if index == 1 { // 点击否
refreshBlock?()
let view = YHVisitHKAlertView.alertView()
view.confirmBlock = { [weak self] isSure in
guard let self = self else { return }
model.isWillVisitHkGalaxyBay = (isSure ? 1 : 2)
refreshBlock?()
}
view.show()
} else { // 点击是
model.isWillVisitHkGalaxyBay = (index == 0 ? 1 : 2)
refreshBlock?()
}
}
return view
}()
required init?(coder: NSCoder) {
super.init(coder: coder)
}
......@@ -310,6 +357,7 @@ class YHSelectApplicantGroupCell: UITableViewCell {
whiteContentView.addSubview(optionsView)
whiteContentView.addSubview(timeSelectView)
whiteContentView.addSubview(locationSelectView)
whiteContentView.addSubview(visitOptionView)
whiteContentView.snp.makeConstraints { make in
make.top.equalTo(16)
......@@ -360,6 +408,12 @@ class YHSelectApplicantGroupCell: UITableViewCell {
make.top.equalTo(timeSelectView.snp.bottom).offset(0)
make.left.equalTo(18)
make.right.equalTo(-18)
}
visitOptionView.snp.makeConstraints { make in
make.top.equalTo(locationSelectView.snp.bottom).offset(0)
make.left.equalTo(18)
make.right.equalTo(-18)
make.bottom.equalToSuperview()
}
}
......@@ -473,6 +527,14 @@ private extension YHSelectApplicantGroupCell {
// 办证地点是否显示红色错误提示
timeSelectView.isNeedShowErrorTips = (model.isNeedCheck && !isSelectDate)
var selectIndex = -1
if model.isWillVisitHkGalaxyBay == 1 { // 是
selectIndex = 0
} else if model.isWillVisitHkGalaxyBay == 2 { // 否
selectIndex = 1
}
visitOptionView.selectIndex = selectIndex
visitOptionView.tips = (model.isNeedCheck && selectIndex == -1) ? "请选择" : ""
self.setNeedsLayout()
self.layoutIfNeeded()
}
......
//
// YHVisitHKAlertView.swift
// galaxy
//
// Created by Dufet on 2025/4/15.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import AttributedString
class YHVisitHKAlertView: UIView {
var confirmBlock: ((Bool) -> Void)?
lazy var blackMaskView: UIView = {
let view = UIView()
view.backgroundColor = UIColor.init(hex: 0x000000, alpha: 0.68)
return view
}()
lazy var whiteContentView: UIView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = kCornerRadius6
return view
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.textAlignment = .center
label.font = UIFont.PFSC_M(ofSize: 17)
label.textColor = UIColor.mainTextColor
label.text = "温馨提示"
return label
}()
lazy var lineView: UIView = {
let view = UIView()
view.backgroundColor = .separatorColor
return view
}()
lazy var messageLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
let a = ASAttributedString.init("银河香港体验中心距离湾仔入境处", .font(UIFont.PFSC_R(ofSize: 15)), .foreground(UIColor.mainTextColor70))
let b = ASAttributedString.init("步行5分钟", .font(UIFont.PFSC_B(ofSize: 15)), .foreground(UIColor.brandMainColor))
let c = ASAttributedString.init(",办证前或办证结束,您可", .font(UIFont.PFSC_R(ofSize: 15)), .foreground(UIColor.mainTextColor70))
let d = ASAttributedString.init("预留30分钟-60分钟", .font(UIFont.PFSC_B(ofSize: 15)), .foreground(UIColor.brandMainColor))
let e = ASAttributedString.init("时间,我们将为您详细规划续签方案,欢迎您莅临香港体验中心!", .font(UIFont.PFSC_R(ofSize: 15)), .foreground(UIColor.mainTextColor70))
label.attributed.text = a+b+c+d+e
return label
}()
lazy var confirmBtn: UIButton = {
let button = UIButton(type: .custom)
button.backgroundColor = UIColor.brandMainColor
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
button.setTitle("到访".local, for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.layer.cornerRadius = kCornerRadius3
button.addTarget(self, action: #selector(agree), for: .touchUpInside)
return button
}()
lazy var unconfirmBtn: UIButton = {
let button = UIButton(type: .custom)
button.backgroundColor = UIColor.white
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 14)
button.setTitle("不到访".local, for: .normal)
button.setTitleColor( UIColor.brandMainColor, for: .normal)
button.layer.cornerRadius = kCornerRadius3
button.layer.borderWidth = 1
button.layer.borderColor = UIColor.brandMainColor.cgColor
button.addTarget(self, action: #selector(disagree), for: .touchUpInside)
return button
}()
static func alertView() -> YHVisitHKAlertView {
let view = YHVisitHKAlertView(frame: UIScreen.main.bounds)
return view
}
func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
}
func dismiss() {
self.removeFromSuperview()
}
@objc func agree() {
confirmBlock?(true)
dismiss()
}
@objc func disagree() {
confirmBlock?(false)
dismiss()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
func createUI() {
self.addSubview(blackMaskView)
self.addSubview(whiteContentView)
whiteContentView.addSubview(titleLabel)
whiteContentView.addSubview(lineView)
whiteContentView.addSubview(messageLabel)
whiteContentView.addSubview(unconfirmBtn)
whiteContentView.addSubview(confirmBtn)
blackMaskView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
whiteContentView.snp.makeConstraints { make in
make.left.equalTo(38)
make.right.equalTo(-38)
make.centerY.equalToSuperview()
}
titleLabel.snp.makeConstraints { make in
make.top.equalTo(16)
make.height.equalTo(24)
make.left.equalTo(21)
make.right.equalTo(-21)
}
lineView.snp.makeConstraints { make in
make.left.right.equalTo(0)
make.height.equalTo(0.5)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
}
messageLabel.snp.makeConstraints { make in
make.left.equalTo(21)
make.right.equalTo(-21)
make.top.equalTo(lineView.snp.bottom).offset(16)
}
unconfirmBtn.snp.makeConstraints { make in
make.left.equalTo(21)
make.top.equalTo(messageLabel.snp.bottom).offset(21)
make.height.equalTo(45)
make.width.equalTo(confirmBtn.snp.width)
make.right.equalTo(confirmBtn.snp.left).offset(-10)
make.bottom.equalTo(-16)
}
confirmBtn.snp.makeConstraints { make in
make.right.equalTo(-21)
make.centerY.equalTo(unconfirmBtn)
make.height.equalTo(45)
}
}
}
......@@ -14,7 +14,6 @@ class YHSignatureWebViewController: YHBaseViewController {
var titleName: String = ""
lazy var webView: WKWebView = {
let webView = WKWebView(frame: CGRect(x: 0, y: k_Height_NavigationtBarAndStatuBar, width: KScreenWidth, height: KScreenHeight-k_Height_NavigationtBarAndStatuBar), configuration: self.configuaration)
webView.navigationDelegate = self
return webView
}()
......@@ -53,6 +52,7 @@ class YHSignatureWebViewController: YHBaseViewController {
func createUI() {
gk_navTitle = titleName
webView.navigationDelegate = self
webView.addSubview(progressBar)
self.view.addSubview(webView)
// 监听网页加载的进度
......
......@@ -10,6 +10,7 @@ import UIKit
@preconcurrency import WebKit
import dsBridge
import Photos
import Kingfisher
/*
快速测评 及 其他与H5交互的界面
......@@ -36,22 +37,22 @@ class YHH5WebViewVC: YHBaseViewController, WKUIDelegate, WKNavigationDelegate {
config.allowsInlineMediaPlayback = true
/// 开启让自动播放
config.mediaTypesRequiringUserActionForPlayback = []
let webview = DWKWebView(frame: .zero, configuration: config)
webview.scrollView.contentInsetAdjustmentBehavior = .never
webview.navigationDelegate = self
webview.scrollView.delegate = self
webview.setDebugMode(false)
// webview.uiDelegate = self
let view = DWKWebView(frame: .zero, configuration: config)
view.scrollView.contentInsetAdjustmentBehavior = .never
// view.navigationDelegate = self
// view.scrollView.delegate = self
return webview
view.setDebugMode(false)
// webview.uiDelegate = self
return view
}()
lazy var progBar: UIProgressView = {
progBar = UIProgressView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 30))
progBar.progress = 0.0
progBar.tintColor = UIColor.brandMainColor
return progBar
let view = UIProgressView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 30))
view.progress = 0.0
view.tintColor = UIColor.brandMainColor
return view
}()
var url = ""
......@@ -82,14 +83,14 @@ class YHH5WebViewVC: YHBaseViewController, WKUIDelegate, WKNavigationDelegate {
name: UIResponder.keyboardWillHideNotification, object: nil)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
reloadUI()
}
deinit {
webview.removeObserver(self, forKeyPath: "estimatedProgress")
webview.removeObserver(self, forKeyPath: "title")
if webview.observationInfo != nil {
webview.removeObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress))
webview.removeObserver(self, forKeyPath: #keyPath(WKWebView.title))
}
// webview.removeObserver(self, forKeyPath: "estimatedProgress")
// webview.removeObserver(self, forKeyPath: "title")
webview.navigationDelegate = nil
NotificationCenter.default.removeObserver(self)
}
......@@ -307,7 +308,8 @@ private extension YHH5WebViewVC {
}
gk_navigationBar.isHidden = isHideNavigationBar
webview.navigationDelegate = self
webview.scrollView.delegate = self
NotificationCenter.default.addObserver(self, selector: #selector(updateNetWorkUI), name: .reachabilityChanged, object: nil)
view.backgroundColor = .white
......@@ -480,6 +482,7 @@ private extension YHH5WebViewVC {
let dict = ["height": "\(0)"]
webview.callHandler("onKeyboardHeightChanged", arguments: [dict])
}
}
// MARK: - WKNavigationDelegate
......@@ -742,15 +745,28 @@ extension YHH5WebViewVC {
}
func saveLocalPictureSyn(_ picUrl: String) {
let imageView = UIImageView()
imageView.kf.setImage(with: URL(string: picUrl)) { result in
guard let url = URL(string: picUrl) else {
YHHUD.flash(message: "保存失败")
return
}
KingfisherManager.shared.retrieveImage(with: url) { result in
switch result {
case .success(let value):
self.saveImage(value.image)
case .success(let imageLoadingResult):
self.saveImage(imageLoadingResult.image)
case .failure:
YHHUD.flash(message: "保存失败")
}
}
// let imageView = UIImageView()
// imageView.kf.setImage(with: URL(string: picUrl)) { result in
// switch result {
// case .success(let value):
// self.saveImage(value.image)
// case .failure:
// YHHUD.flash(message: "保存失败")
// }
// }
}
func savePicToLocal(_ data: String) {
......
......@@ -5,6 +5,8 @@
// Created by davidhuangA on 2024/8/6.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import Kingfisher
import UIKit
import Photos
import PhotosUI
......@@ -238,15 +240,27 @@ private extension YHLongtapPictureSheetView {
}
func saveLocalPictureSyn(_ picUrl: String) {
let imageView = UIImageView()
imageView.kf.setImage(with: URL(string: picUrl)) { result in
guard let url = URL(string: picUrl) else {
YHHUD.flash(message: "保存失败")
return
}
KingfisherManager.shared.retrieveImage(with: url) { result in
switch result {
case .success(let value):
self.saveImage(value.image)
case .success(let imageLoadingResult):
self.saveImage(imageLoadingResult.image)
case .failure:
YHHUD.flash(message: "保存失败")
}
}
// let imageView = UIImageView()
// imageView.kf.setImage(with: URL(string: picUrl)) { result in
// switch result {
// case .success(let value):
// self.saveImage(value.image)
// case .failure:
// YHHUD.flash(message: "保存失败")
// }
// }
}
func saveImage(_ image: UIImage) {
......
......@@ -6,6 +6,7 @@
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import Kingfisher
import UIKit
import JXPhotoBrowser
import Photos
......@@ -68,15 +69,28 @@ class YHPictureBrowserViewController: JXPhotoBrowser {
}
func saveLocalPictureSyn(_ picUrl: String) {
let imageView = UIImageView()
imageView.kf.setImage(with: URL(string: picUrl)) { result in
guard let url = URL(string: picUrl) else {
YHHUD.flash(message: "保存失败")
return
}
KingfisherManager.shared.retrieveImage(with: url) { result in
switch result {
case .success(let value):
self.saveImage(value.image)
case .success(let imageLoadingResult):
self.saveImage(imageLoadingResult.image)
case .failure:
YHHUD.flash(message: "保存失败")
}
}
// let imageView = UIImageView()
// imageView.kf.setImage(with: URL(string: picUrl)) { result in
// switch result {
// case .success(let value):
// self.saveImage(value.image)
// case .failure:
// YHHUD.flash(message: "保存失败")
// }
// }
}
func saveImage(_ image: UIImage) {
......
......@@ -13,7 +13,7 @@ class YHMakePlanViewController: YHBaseViewController {
let viewModel = YHMakePlanViewModel()
lazy var headView: YHMakePlanHeadView = {
let view = YHMakePlanHeadView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 333.fix + 44))
let view = YHMakePlanHeadView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: 333.fix + 44 + 35))
view.block = { tag in
self.topView.custtomView.updataData(tag)
let indexPath = IndexPath(row: tag, section: 0)
......
......@@ -121,7 +121,7 @@ class YHMakePlanCell: UITableViewCell {
}
var y = 0
for i in 0 ..< (dataSource?.count ?? 0) {
if i != 0 || i != (dataSource?.count ?? 0) - 1 {
if i != 0 {
let line = UIView()
line.backgroundColor = UIColor.separatorColor
mainItemView.addSubview(line)
......@@ -133,7 +133,7 @@ class YHMakePlanCell: UITableViewCell {
}
y += 1
}
var h = 121
let h = 121
let itemView = YHMakePlanCardView()
itemView.actionHandler = { product in
self.actionHandler?(product)
......
......@@ -70,13 +70,6 @@ class YHMakePlanHeadView: UIView {
make.height.equalTo(333.fix)
}
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.height.equalTo(88)
make.bottom.equalTo(centerImageView.snp.bottom).offset(-16)
}
logoImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.height.equalTo(109)
......@@ -84,6 +77,13 @@ class YHMakePlanHeadView: UIView {
make.top.equalTo(96)
}
centerView.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.height.equalTo(133)
make.top.equalTo(logoImageView.snp.bottom).offset(24)
}
custtomView.snp.makeConstraints { make in
make.bottom.left.right.equalToSuperview()
make.height.equalTo(44)
......
......@@ -46,13 +46,24 @@ class YHMakePlanStateHeadView: UIView {
private let progressDescriptionLabel: UILabel = {
let label = UILabel()
label.text = "续签综合通过率"
label.text = "预测续签通过率"
label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = UIColor(hex: 0x8893a2)
label.textAlignment = .center
return label
}()
private let explainLabel: UILabel = {
let label = UILabel()
label.text = "*该概率为预估概率,最终以实际续签结果为准"
label.font = UIFont.PFSC_R(ofSize: 12)
label.textColor = UIColor(hex: 0x8893a2)
label.textAlignment = .center
label.backgroundColor = UIColor(hex: 0xf8f9fb)
label.layer.cornerRadius = kCornerRadius4
return label
}()
// MARK: - Initialization
override init(frame: CGRect) {
super.init(frame: frame)
......@@ -72,6 +83,7 @@ class YHMakePlanStateHeadView: UIView {
addSubview(yearsDescriptionLabel)
addSubview(percentageLabel)
addSubview(progressDescriptionLabel)
addSubview(explainLabel)
}
private func setupConstraints() {
......@@ -98,6 +110,13 @@ class YHMakePlanStateHeadView: UIView {
make.right.equalToSuperview().offset(-16)
make.left.equalTo(self.snp.centerX)
}
explainLabel.snp.makeConstraints { make in
make.bottom.equalTo(-16)
make.right.equalToSuperview().offset(-18)
make.left.equalToSuperview().offset(18)
make.height.equalTo(29)
}
}
// MARK: - Configuration
......
......@@ -17,10 +17,10 @@ class YHMakePlanTopView: UIView {
let year = dataSource?.year ?? 0
let rate = dataSource?.pass_rate ?? ""
let a: ASAttributedString = .init("预计可续期(年) ", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hex: 0x6a7586)))
let b: ASAttributedString = .init("\(year)", .font(UIFont.PFSC_M(ofSize: 24)), .foreground(UIColor.mainTextColor))
let b: ASAttributedString = .init("\(year)", .font(UIFont.PFSC_M(ofSize: 16)), .foreground(UIColor.mainTextColor))
yearsLabel.attributed.text = a + b
let aa: ASAttributedString = .init("续签综合通过率 ", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hex: 0x6a7586)))
let bb: ASAttributedString = .init("\(rate)", .font(UIFont.PFSC_M(ofSize: 24)), .foreground(UIColor.mainTextColor))
let aa: ASAttributedString = .init("预测续签通过率 ", .font(UIFont.PFSC_R(ofSize: 14)), .foreground(UIColor(hex: 0x6a7586)))
let bb: ASAttributedString = .init("\(rate)", .font(UIFont.PFSC_M(ofSize: 16)), .foreground(UIColor.mainTextColor))
// let c: ASAttributedString = .init("%", .font(UIFont.PFSC_M(ofSize: 16)), .foreground(UIColor.mainTextColor))
percentageLabel.attributed.text = aa + bb
}
......@@ -33,6 +33,7 @@ class YHMakePlanTopView: UIView {
private let percentageLabel: UILabel = {
let label = UILabel()
label.textAlignment = .right
return label
}()
......@@ -79,7 +80,7 @@ class YHMakePlanTopView: UIView {
}
percentageLabel.snp.makeConstraints { make in
make.left.equalTo(self.snp.centerX)
make.right.equalTo(-34)
make.height.equalTo(24)
make.top.equalTo(18)
}
......
......@@ -17,7 +17,7 @@ class YHAnalytics {
#if DEBUG
let options = SAConfigOptions.init(serverURL: YhConstant.SensorsAnalytics.urlForTest, launchOptions: launchOptions)
// 开启log
options.enableLog = false
options.enableLog = true
SensorsAnalyticsSDK.sharedInstance()?.set(["evn": "test"])
#elseif TESTENV
let options = SAConfigOptions.init(serverURL: YhConstant.SensorsAnalytics.urlForTest, launchOptions: launchOptions)
......
......@@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
......@@ -127,8 +129,13 @@
</array>
<key>UIFileSharingEnabled</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UILaunchScreen</key>
<dict>
<key>UIColorName</key>
<string>FFFFFF</string>
<key>UIImageName</key>
<string>AppIcon</string>
</dict>
<key>agc_applinking_not_read_pasteboard</key>
<false/>
</dict>
......
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
......@@ -36,6 +36,6 @@
</scene>
</scenes>
<resources>
<image name="launch_screen_image" width="276" height="597.33331298828125"/>
<image name="launch_screen_image" width="375" height="812"/>
</resources>
</document>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment