Commit 95ddf51b authored by pete谢兆麟's avatar pete谢兆麟

Merge branch 'plan' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into plan

# Conflicts:
#	galaxy/galaxy.xcodeproj/project.pbxproj
parents 4636fcc6 203cd5b0
This diff is collapsed.
//
// YHPlanPolicyDetailViewController.swift
// galaxy
//
// Created by Dufet on 2025/3/29.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHPlanPolicyDetailViewController: YHBaseViewController {
var urls: [String] = []
lazy var scrollView: UIScrollView = {
let v = UIScrollView(frame: .zero)
return v
}()
lazy var shareBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .white
btn.setTitle("分享", for: .normal)
btn.setTitleColor(.mainTextColor, for: .normal)
btn.titleLabel?.font = .PFSC_M(ofSize: 16)
btn.layer.cornerRadius = 3.0
btn.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
return btn
}()
override func viewDidLoad() {
super.viewDidLoad()
gk_backImage = UIImage(named: "nav_back_white")
gk_navTitle = "1/24"
gk_navTitleColor = .white
view.backgroundColor = .init(hex: 0x000000, alpha: 1.0)
view.addSubview(scrollView)
view.addSubview(shareBtn)
scrollView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(k_Height_NavigationtBarAndStatuBar+24.0)
make.height.equalTo(520)
}
shareBtn.snp.makeConstraints { make in
make.left.equalTo(20)
make.right.equalTo(-20)
make.height.equalTo(46)
make.top.equalTo(scrollView.snp.bottom).offset(32)
}
}
}
//
// YHPlanShareViewController.swift
// galaxy
//
// Created by Dufet on 2025/3/29.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
enum YHPlanShareBgType: Int {
case link = 1
case pdf = 2
}
class YHPlanShareBgView: UIView, JXSegmentedListContainerViewListDelegate {
let bgWidth = 293.0
let bgHeight = 380.0
var type: YHPlanShareBgType = .link {
didSet {
imgV.image = type == .link ? UIImage(named: "plan_share_link_bg") : UIImage(named: "plan_share_pdf_bg")
imgV.snp.remakeConstraints { make in
make.width.equalTo( type == .link ? bgWidth : 217)
make.height.equalTo(bgHeight)
make.centerX.equalToSuperview()
make.centerY.equalToSuperview()
}
self.setNeedsLayout()
self.layoutIfNeeded()
}
}
lazy var imgV: UIImageView = {
let imgV = UIImageView()
imgV.image = UIImage(named: "plan_share_link_bg")
return imgV
}()
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.addSubview(imgV)
imgV.snp.makeConstraints { make in
make.width.equalTo(bgWidth)
make.height.equalTo(bgHeight)
make.centerX.equalToSuperview()
make.centerY.equalToSuperview()
}
}
func listView() -> UIView {
return self
}
}
class YHPlanShareViewController: YHBaseViewController {
var type: YHPlanShareBgType = .link
let segmentTitles = ["分享链接", "分享PDF"]
let bgWidth = 293.0
let bgHeight = 380.0
lazy var segmentedView: JXSegmentedView = {
let view = JXSegmentedView(frame: CGRect(x: 0, y: k_Height_safeAreaInsetsTop(), width: KScreenWidth, height: 30))
view.backgroundColor = .clear
view.delegate = self
// 配置指示器
let indicator = JXSegmentedIndicatorLineView()
indicator.indicatorWidth = 16
indicator.indicatorHeight = 2
indicator.indicatorCornerRadius = 0.0
indicator.indicatorColor = UIColor.mainTextColor
view.indicators = [indicator]
view.dataSource = segmentedDataSource
view.listContainer = listContainerView
return view
}()
lazy var segmentedDataSource: JXSegmentedTitleDataSource = {
let dataSource = JXSegmentedTitleDataSource()
dataSource.titles = segmentTitles
dataSource.titleNormalFont = UIFont.PFSC_R(ofSize: 16)
dataSource.titleNormalColor = UIColor.init(hex: 0x94A3B8)
dataSource.titleSelectedFont = UIFont.PFSC_M(ofSize: 16)
dataSource.titleSelectedColor = .mainTextColor
dataSource.isItemSpacingAverageEnabled = false
dataSource.itemWidth = 64
dataSource.itemSpacing = 22
return dataSource
}()
lazy var listContainerView: JXSegmentedListContainerView! = {
let view = JXSegmentedListContainerView(dataSource: self, type: .scrollView)
view.backgroundColor = .clear
return view
}()
lazy var bottomShareView: YHPlanShareView = {
let v = YHPlanShareView(frame: .zero)
v.type = .link
return v
}()
lazy var shareLinkBgView: YHPlanShareBgView = {
let v = YHPlanShareBgView()
v.type = .link
return v
}()
lazy var sharePdfBgView: YHPlanShareBgView = {
let v = YHPlanShareBgView()
v.type = .pdf
return v
}()
override func viewDidLoad() {
super.viewDidLoad()
gk_navigationBar.backgroundColor = .clear
view.backgroundColor = .init(hex: 0xF5F6F8)
view.addSubview(segmentedView)
view.addSubview(listContainerView)
view.addSubview(bottomShareView)
segmentedView.snp.makeConstraints { make in
make.top.equalTo(8+k_Height_NavigationtBarAndStatuBar)
make.height.equalTo(34)
make.width.equalTo(64.0*2.0 + 24.0 + 22*2)
make.centerX.equalToSuperview()
}
listContainerView.snp.makeConstraints { make in
make.top.equalTo(segmentedView.snp.bottom).offset(20)
make.centerX.equalToSuperview()
make.width.equalTo(bgWidth)
make.height.equalTo(bgHeight)
}
bottomShareView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(216)
}
}
}
extension YHPlanShareViewController: JXSegmentedViewDelegate {
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
if index == 1 {
self.type = .pdf
} else {
self.type = .link
}
bottomShareView.type = self.type
}
}
extension YHPlanShareViewController: JXSegmentedListContainerViewDataSource {
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
return segmentTitles.count
}
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
if index == 0 {
return shareLinkBgView
}
return sharePdfBgView
}
}
......@@ -48,16 +48,23 @@ class YHPlanViewController: YHBaseViewController {
lazy var whiteBackBtn: UIButton = {
let v = UIButton()
v.setImage(UIImage(named: "back_icon_white"), for: .normal)
v.setImage(UIImage(named: "nav_back_white"), for: .normal)
v.addTarget(self, action: #selector(backItemClick(_:)), for: .touchUpInside)
return v
}()
lazy var shareBtn: UIButton = {
let v = UIButton()
v.setImage(UIImage(named: "plan_nav_share"), for: .normal)
v.addTarget(self, action: #selector(didShareBtnClicked), for: .touchUpInside)
return v
}()
@objc func didShareBtnClicked() {
let vc = YHPlanShareViewController()
self.navigationController?.pushViewController(vc)
}
lazy var headerView: UIView = {
let v = UIView(frame: CGRect(x: 0, y: 0, width: KScreenWidth, height: headerViewHeight))
v.addSubview(titleImgView)
......@@ -245,6 +252,7 @@ class YHPlanViewController: YHBaseViewController {
@objc func didRevalueBtnClicked() {
YHPlanLinkShareView.alertView().show()
}
override func viewDidLoad() {
......@@ -414,6 +422,7 @@ extension YHPlanViewController: UIScrollViewDelegate {
fixedSegmentView.alpha = scrollView.contentOffset.y >= topScrollHeight ? 1.0 : 0.0
gk_navigationBar.alpha = percent
whiteBackBtn.isHidden = percent >= 1.0
shareBtn.isHidden = percent >= 1.0
if scrollView.contentOffset.y > topScrollHeight {
......
//
// YHPlanLinkShareView.swift
// galaxy
//
// Created by Dufet on 2025/3/29.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
enum YHPlanShareItemButtonType: Int {
case wechat = 1
case copyLink = 2
case saveImg = 3
case cancel = 4
}
class YHPlanShareItemButton: UIButton {
lazy var iconImgV: UIImageView = {
let v = UIImageView()
return v
}()
lazy var textLabel: UILabel = {
let lable = UILabel()
lable.textColor = .init(hex: 0x666666)
lable.textAlignment = .center
lable.font = UIFont.PFSC_R(ofSize: 13)
return lable
}()
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.addSubview(iconImgV)
self.addSubview(textLabel)
iconImgV.snp.makeConstraints { make in
make.width.height.equalTo(48)
make.top.equalTo(0)
make.centerX.equalToSuperview()
}
textLabel.snp.makeConstraints { make in
make.top.equalTo(iconImgV.snp.bottom).offset(8)
make.centerX.equalToSuperview()
make.height.equalTo(18)
}
}
}
class YHPlanLinkShareView: UIView {
let wechatBtnTag = 9527
let copyLinkTag = 9528
let saveImgTag = 9529
let cancelTag = 9530
var clickBlock: ((YHPlanShareItemButtonType) -> Void)?
lazy var whiteContentView: UIView = {
let v = UIView()
v.backgroundColor = .white
v.layer.cornerRadius = 12.0
v.clipsToBounds = true
return v
}()
lazy var cancelBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .init(hex: 0xF5F6F8)
btn.setTitle("取消", for: .normal)
btn.setTitleColor(.mainTextColor, for: .normal)
btn.titleLabel?.font = .PFSC_M(ofSize: 16)
btn.layer.cornerRadius = 3.0
btn.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
return btn
}()
lazy var wechatBtn: YHPlanShareItemButton = {
let v = YHPlanShareItemButton()
v.tag = wechatBtnTag
v.textLabel.text = "微信"
v.iconImgV.image = UIImage(named: "plan_share_wechat")
v.addTarget(self, action: #selector(didFunctionBtnClicked(_:)), for: .touchUpInside)
return v
}()
lazy var copyLinkBtn: YHPlanShareItemButton = {
let v = YHPlanShareItemButton()
v.tag = copyLinkTag
v.textLabel.text = "复制链接"
v.iconImgV.image = UIImage(named: "plan_share_copy")
v.addTarget(self, action: #selector(didFunctionBtnClicked(_:)), for: .touchUpInside)
return v
}()
lazy var saveImgBtn: YHPlanShareItemButton = {
let v = YHPlanShareItemButton()
v.tag = saveImgTag
v.textLabel.text = "保存图片"
v.iconImgV.image = UIImage(named: "plan_share_save")
v.addTarget(self, action: #selector(didFunctionBtnClicked(_:)), for: .touchUpInside)
return v
}()
static func alertView() -> YHPlanLinkShareView {
let v = YHPlanLinkShareView(frame: UIScreen.main.bounds)
return v
}
@objc func didFunctionBtnClicked(_ sender: UIButton) {
if sender.tag == wechatBtnTag {
clickBlock?(.wechat)
} else if sender.tag == copyLinkTag {
clickBlock?(.copyLink)
} else if sender.tag == saveImgTag {
clickBlock?(.saveImg)
} else if sender.tag == cancelTag {
dismiss()
}
}
@objc func show() {
UIApplication.shared.yhKeyWindow()?.addSubview(self)
}
@objc func dismiss() {
DispatchQueue.main.async {
self.removeFromSuperview()
}
}
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.backgroundColor = .init(hex: 0x000000, alpha: 0.7)
self.addSubview(whiteContentView)
whiteContentView.addSubview(wechatBtn)
whiteContentView.addSubview(copyLinkBtn)
whiteContentView.addSubview(saveImgBtn)
whiteContentView.addSubview(cancelBtn)
whiteContentView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.height.equalTo(216)
}
copyLinkBtn.snp.makeConstraints { make in
make.width.equalTo(64)
make.height.equalTo(74)
make.top.equalTo(20)
make.centerX.equalToSuperview()
}
wechatBtn.snp.makeConstraints { make in
make.width.equalTo(64)
make.height.equalTo(74)
make.top.equalTo(20)
make.right.equalTo(copyLinkBtn.snp.left).offset(-70)
}
saveImgBtn.snp.makeConstraints { make in
make.width.equalTo(64)
make.height.equalTo(74)
make.top.equalTo(20)
make.left.equalTo(copyLinkBtn.snp.right).offset(70)
}
cancelBtn.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.height.equalTo(46)
make.top.equalTo(copyLinkBtn.snp.bottom).offset(24)
}
}
}
......@@ -87,6 +87,7 @@ class YHPlanScoreLevelTextView: UIView {
let btn = UIButton()
btn.setImage(UIImage(named: "plan_score_level_close"), for: .normal)
btn.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
btn.YH_clickEdgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
return btn
}()
......@@ -166,7 +167,7 @@ class YHPlanScoreLevelTextView: UIView {
}
closeBtn.snp.makeConstraints { make in
make.width.height.equalTo(16)
make.width.height.equalTo(24)
make.centerY.equalTo(titleLabel)
make.right.equalTo(-20)
}
......
//
// YHPlanShareView.swift
// galaxy
//
// Created by Dufet on 2025/3/29.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
class YHPlanShareView: UIView {
let wechatBtnTag = 9527
let copyLinkTag = 9528
let saveImgTag = 9529
let cancelTag = 9530
var type: YHPlanShareBgType = .link {
didSet {
if type == .link {
copyLinkBtn.iconImgV.image = UIImage(named: "plan_share_copy")
copyLinkBtn.textLabel.text = "复制链接"
} else if type == .pdf {
copyLinkBtn.iconImgV.image = UIImage(named: "plan_share_save")
copyLinkBtn.textLabel.text = "保存PDF"
}
}
}
var clickBlock: ((YHPlanShareItemButtonType) -> Void)?
lazy var whiteContentView: UIView = {
let v = UIView()
v.backgroundColor = .white
v.layer.cornerRadius = 12.0
v.clipsToBounds = true
return v
}()
lazy var cancelBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .init(hex: 0xF5F6F8)
btn.setTitle("取消", for: .normal)
btn.setTitleColor(.mainTextColor, for: .normal)
btn.titleLabel?.font = .PFSC_M(ofSize: 16)
btn.layer.cornerRadius = 3.0
btn.addTarget(self, action: #selector(didFunctionBtnClicked(_:)), for: .touchUpInside)
return btn
}()
lazy var wechatBtn: YHPlanShareItemButton = {
let v = YHPlanShareItemButton()
v.tag = wechatBtnTag
v.textLabel.text = "微信"
v.iconImgV.image = UIImage(named: "plan_share_wechat")
v.addTarget(self, action: #selector(didFunctionBtnClicked(_:)), for: .touchUpInside)
return v
}()
lazy var copyLinkBtn: YHPlanShareItemButton = {
let v = YHPlanShareItemButton()
v.tag = copyLinkTag
v.textLabel.text = "复制链接"
v.iconImgV.image = UIImage(named: "plan_share_copy")
v.addTarget(self, action: #selector(didFunctionBtnClicked(_:)), for: .touchUpInside)
return v
}()
@objc func didFunctionBtnClicked(_ sender: UIButton) {
if sender.tag == wechatBtnTag {
clickBlock?(.wechat)
} else if sender.tag == copyLinkTag {
clickBlock?(.copyLink)
} else if sender.tag == saveImgTag {
clickBlock?(.saveImg)
} else if sender.tag == cancelTag {
}
}
override init(frame: CGRect) {
super.init(frame: frame)
createUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createUI() {
self.addSubview(whiteContentView)
whiteContentView.addSubview(wechatBtn)
whiteContentView.addSubview(copyLinkBtn)
whiteContentView.addSubview(cancelBtn)
whiteContentView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
copyLinkBtn.snp.makeConstraints { make in
make.width.equalTo(64)
make.height.equalTo(74)
make.top.equalTo(20)
make.left.equalTo(self.snp.centerX).offset(35)
}
wechatBtn.snp.makeConstraints { make in
make.width.equalTo(64)
make.height.equalTo(74)
make.top.equalTo(20)
make.right.equalTo(self.snp.centerX).offset(-35)
}
cancelBtn.snp.makeConstraints { make in
make.left.equalTo(16)
make.right.equalTo(-16)
make.height.equalTo(46)
make.top.equalTo(copyLinkBtn.snp.bottom).offset(20)
}
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "24pt导航栏@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "24pt导航栏@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "复制链接@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "复制链接@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "分享链接@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "分享链接@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "分享PDF@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "分享PDF@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "保存图片@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "保存图片@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ic_wxhy@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ic_wxhy@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
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