Commit 78a2dcda authored by Steven杜宇's avatar Steven杜宇

// 截图

parent 58744d89
...@@ -89,6 +89,8 @@ target 'galaxy' do ...@@ -89,6 +89,8 @@ target 'galaxy' do
pod 'YYImage', '1.0.4' pod 'YYImage', '1.0.4'
#滑动卡片 #滑动卡片
pod 'DragCardContainer', '1.2.0' pod 'DragCardContainer', '1.2.0'
#列表截图
pod 'TYSnapshotScroll', '0.4.0'
end end
......
...@@ -74,12 +74,15 @@ class YHMyFileListViewController: YHBaseViewController { ...@@ -74,12 +74,15 @@ class YHMyFileListViewController: YHBaseViewController {
return label return label
}() }()
let originHeaderHeight: CGFloat = 274.0-(88-k_Height_NavigationtBarAndStatuBar)
lazy var headerView:UIView = { lazy var headerView:UIView = {
// 是否为刘海屏 // 是否为刘海屏
let isNotchScreen = GKDevice.isNotchedScreen let isNotchScreen = GKDevice.isNotchedScreen
let top = isNotchScreen ? 0.0 : 24.0 let top = 88-k_Height_NavigationtBarAndStatuBar
let myView = UIView(frame: CGRectMake(0, 0, KScreenWidth, 274.0-top)) let myView = UIView(frame: CGRectMake(0, 0, KScreenWidth, originHeaderHeight))
myView.clipsToBounds = true
bgImgView.frame = CGRectMake(0, -top, KScreenWidth, 264) bgImgView.frame = CGRectMake(0, -top, KScreenWidth, 264)
myView.addSubview(bgImgView) myView.addSubview(bgImgView)
...@@ -228,9 +231,23 @@ class YHMyFileListViewController: YHBaseViewController { ...@@ -228,9 +231,23 @@ class YHMyFileListViewController: YHBaseViewController {
func scrollToSection(_ section:Int) { func scrollToSection(_ section:Int) {
if 0 <= section && section < self.items.count { if 0 <= section && section < self.items.count {
var sectionRect = self.tableView.rectForHeader(inSection: section) self.tableView.scrollToRow(at: IndexPath(row: 0, section: section), at: .top, animated: true)
sectionRect.origin.y = sectionRect.origin.y-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight DispatchQueue.main.asyncAfter(deadline: .now() + 0.3, execute: {
self.tableView.setContentOffset(CGPointMake(0, sectionRect.origin.y+4), animated: true) var gap = 0.0
// 此处处理内容总长度不够滚到相应tab的差距
let sectionRect = self.tableView.rectForHeader(inSection: section)
if self.tableView.contentOffset.y >= 0.0, sectionRect.origin.y > self.tableView.contentOffset.y {
gap = sectionRect.origin.y - self.tableView.contentOffset.y
}
let offsetY = self.tableView.contentOffset.y-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight+gap
let maxOffSetY = self.tableView.contentSize.height-self.tableView.frame.size.height
if abs(offsetY) <= maxOffSetY {
// 此处+2是弥补section结合处偏差与tab显示
self.tableView.setContentOffset(CGPointMake(0, offsetY+4), animated: false)
} else {
self.tableView.setContentOffset(CGPointMake(0, maxOffSetY-1), animated: false)
}
})
} }
} }
} }
...@@ -315,6 +332,7 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc ...@@ -315,6 +332,7 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = YHMyFileListHeaderView(frame: .zero) let view = YHMyFileListHeaderView(frame: .zero)
view.headerView.isHidden = true view.headerView.isHidden = true
view.isShowCorner = items.count <= 1
if 0 <= section && section < items.count { if 0 <= section && section < items.count {
let model = items[section] let model = items[section]
view.titleLabel.text = model.ApplicantName view.titleLabel.text = model.ApplicantName
...@@ -361,7 +379,6 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc ...@@ -361,7 +379,6 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc
func scrollViewDidScroll(_ scrollView: UIScrollView) { func scrollViewDidScroll(_ scrollView: UIScrollView) {
printLog("offset: \(scrollView.contentOffset.y)") printLog("offset: \(scrollView.contentOffset.y)")
let gap = self.consentInsetTop-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight let gap = self.consentInsetTop-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight
self.navStatusBar.backgroundColor = scrollView.contentOffset.y > gap ? UIColor.white : UIColor.clear self.navStatusBar.backgroundColor = scrollView.contentOffset.y > gap ? UIColor.white : UIColor.clear
self.topSegmentView.backgroundColor = scrollView.contentOffset.y > gap ? UIColor.white : UIColor.clear self.topSegmentView.backgroundColor = scrollView.contentOffset.y > gap ? UIColor.white : UIColor.clear
...@@ -397,59 +414,21 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc ...@@ -397,59 +414,21 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc
extension YHMyFileListViewController { extension YHMyFileListViewController {
@objc func clickSaveBtn() { @objc func clickSaveBtn() {
YHHUD.show(.progress(message: "正在生成图片")) YHHUD.show(.progress(message: "正在生成图片"))
if let image = self.gerateImage() { TYSnapshotScroll.screenSnapshot(self.tableView) {
YHHUD.hide() [weak self] image in
self.saveImage(image)
} else {
YHHUD.hide() YHHUD.hide()
YHHUD.flash(message: "生成图片失败") guard let self = self else { return }
if let img = image {
self.saveImage(img)
} else {
YHHUD.flash(message: "生成图片失败")
}
} }
} }
// func gerateImage()-> UIImage? {
//
// UIGraphicsBeginImageContextWithOptions(self.tableView.contentSize, false, UIScreen.main.scale)
// //先保存原来frame 和 偏移量
// let savedContentOffset = self.tableView.contentOffset
// let savedFrame = self.tableView.frame
// let contentSize = self.tableView.contentSize
// let oldBounds = self.tableView.layer.bounds
// if #available(iOS 13.0, *) {
// self.tableView.layer.bounds = CGRectMake(oldBounds.origin.x, oldBounds.origin.y, contentSize.width, contentSize.height)
// }
// //偏移量归零
// self.tableView.contentOffset = CGPointMake(0, -self.consentInsetTop)
// self.tableView.frame = CGRect(x: 0, y: 0, width: self.tableView.contentSize.width, height: self.tableView.contentSize.height)
// self.tableView.layer.render(in: UIGraphicsGetCurrentContext()!)
// if #available(iOS 13.0, *) {
// self.tableView.layer.bounds = oldBounds
// }
// let image = UIGraphicsGetImageFromCurrentImageContext()
// UIGraphicsEndImageContext();
// //还原frame 和 偏移量
// self.tableView.contentOffset = savedContentOffset
// self.tableView.frame = savedFrame
// return image
// }
func gerateImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(self.tableView.contentSize, false, UIScreen.main.scale)
let savedContentOffset = self.tableView.contentOffset
let savedFrame = self.tableView.frame
self.tableView.contentOffset = CGPointMake(0, -self.consentInsetTop)
self.tableView.frame = CGRect(x: 0, y: 0, width: self.tableView.contentSize.width, height: self.tableView.contentSize.height)
self.tableView.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
self.tableView.contentOffset = savedContentOffset
self.tableView.frame = savedFrame
UIGraphicsEndImageContext()
return image
}
func saveImage(_ image: UIImage) { func saveImage(_ image: UIImage) {
// 确保应用有权访问相册 // 确保应用有权访问相册
PHPhotoLibrary.requestAuthorization { status in PHPhotoLibrary.requestAuthorization { status in
...@@ -487,8 +466,9 @@ extension YHMyFileListViewController { ...@@ -487,8 +466,9 @@ extension YHMyFileListViewController {
viewModel.getCertificateFileListData(params: param) { success, error in viewModel.getCertificateFileListData(params: param) { success, error in
self.items.removeAll() self.items.removeAll()
self.titles.removeAll() self.titles.removeAll()
var isHaveData = false
self.tableView.isHidden = true
if success == true { if success == true {
var isHaveData = false
for (_, item) in self.viewModel.arrFileListData.enumerated() { for (_, item) in self.viewModel.arrFileListData.enumerated() {
let arr = item?.supplement_list.filter { (item) -> Bool in let arr = item?.supplement_list.filter { (item) -> Bool in
return item.checkStatus == 2 || item.checkStatus == 3 return item.checkStatus == 2 || item.checkStatus == 3
...@@ -498,27 +478,36 @@ extension YHMyFileListViewController { ...@@ -498,27 +478,36 @@ extension YHMyFileListViewController {
} }
} }
for model in self.viewModel.arrFileListData { for (index, model) in self.viewModel.arrFileListData.enumerated() {
if let model = model { if let model = model {
self.items.append(model) self.items.append(model)
self.titles.append(model.ApplicantName) self.titles.append(model.ApplicantName)
} }
} }
self.tableView.isHidden = !isHaveData
self.topSegmentView.items = self.titles self.topSegmentView.items = self.titles
self.segmentView.items = self.titles self.segmentView.items = self.titles
self.showEmptyView(!isHaveData)
self.saveBtn.isUserInteractionEnabled = true self.saveBtn.isUserInteractionEnabled = true
self.saveBtn.layer.opacity = 1.0 self.saveBtn.layer.opacity = 1.0
self.showEmptyView(!isHaveData)
} else { } else {
self.saveBtn.isUserInteractionEnabled = false self.saveBtn.isUserInteractionEnabled = false
self.saveBtn.layer.opacity = 0.3 self.saveBtn.layer.opacity = 0.3
YHHUD.flash(message: error?.errorMsg ?? "请求出错") YHHUD.flash(message: error?.errorMsg ?? "请求出错")
} }
self.segmentView.isHidden = self.items.count <= 1
self.headerView.height = self.items.count > 1 ? self.originHeaderHeight : self.originHeaderHeight-self.topSegmentHeight
self.tableView.reloadData() self.tableView.reloadData()
self.tableView.scrollToBottom() DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: {
self.tableView.scrollToTop() if self.items.count > 0 {
let model = self.items[self.items.count-1]
let lastRow = model.supplement_list.count > 0 ? model.supplement_list.count-1 : 0
// 此处因为tableView.contentSize计算不准
self.tableView.scrollToRow(at: IndexPath(row: lastRow, section: self.items.count-1), at: .top, animated: true)
}
self.tableView.scrollToTop()
self.tableView.isHidden = false
})
} }
} }
......
...@@ -10,7 +10,12 @@ import UIKit ...@@ -10,7 +10,12 @@ import UIKit
class YHMyFileListHeaderView: UIView { class YHMyFileListHeaderView: UIView {
var isShowCorner: Bool = false {
didSet {
self.whiteCornerView.isHidden = !isShowCorner
self.whiteContentView.backgroundColor = isShowCorner ? UIColor.clear : UIColor.white
}
}
lazy var columnView:UIView = { lazy var columnView:UIView = {
let view = UIView() let view = UIView()
...@@ -70,6 +75,15 @@ class YHMyFileListHeaderView: UIView { ...@@ -70,6 +75,15 @@ class YHMyFileListHeaderView: UIView {
lazy var whiteContentView:UIView = { lazy var whiteContentView:UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = .white view.backgroundColor = .white
view.clipsToBounds = true
return view
}()
lazy var whiteCornerView:UIView = {
let view = UIView()
view.backgroundColor = .white
view.layer.cornerRadius = 6.0
view.isHidden = true
return view return view
}() }()
...@@ -99,6 +113,7 @@ class YHMyFileListHeaderView: UIView { ...@@ -99,6 +113,7 @@ class YHMyFileListHeaderView: UIView {
func setupUI() { func setupUI() {
self.clipsToBounds = true self.clipsToBounds = true
self.addSubview(self.whiteCornerView)
self.addSubview(self.whiteContentView) self.addSubview(self.whiteContentView)
self.whiteContentView.addSubview(self.titleBgImgView) self.whiteContentView.addSubview(self.titleBgImgView)
self.whiteContentView.addSubview(self.titleLabel) self.whiteContentView.addSubview(self.titleLabel)
...@@ -109,6 +124,10 @@ class YHMyFileListHeaderView: UIView { ...@@ -109,6 +124,10 @@ class YHMyFileListHeaderView: UIView {
self.headerView.addSubview(lineView) self.headerView.addSubview(lineView)
self.grayView.addSubview(self.columnView) self.grayView.addSubview(self.columnView)
self.whiteCornerView.snp.makeConstraints { make in
make.left.right.top.equalTo(whiteContentView)
make.bottom.equalToSuperview().offset(7)
}
self.titleLabel.snp.makeConstraints { make in self.titleLabel.snp.makeConstraints { make in
make.top.equalTo(20) make.top.equalTo(20)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
......
...@@ -62,6 +62,7 @@ class YHSegmentItemView: UIView { ...@@ -62,6 +62,7 @@ class YHSegmentItemView: UIView {
class YHSegmentView: UIView { class YHSegmentView: UIView {
var selectIndex = 0
let itemBaseTag = 9527 let itemBaseTag = 9527
var selectBlock:((Int)->())? var selectBlock:((Int)->())?
...@@ -98,12 +99,14 @@ class YHSegmentView: UIView { ...@@ -98,12 +99,14 @@ class YHSegmentView: UIView {
@objc func didClickItem(_ gesture:UIGestureRecognizer) { @objc func didClickItem(_ gesture:UIGestureRecognizer) {
if let view = gesture.view as? YHSegmentItemView { if let view = gesture.view as? YHSegmentItemView {
let selectIndex = view.tag-self.itemBaseTag let selectIndex = view.tag-self.itemBaseTag
self.selectIndex = selectIndex
self.selectBlock?(selectIndex) self.selectBlock?(selectIndex)
updateSelectIndex(selectIndex) updateSelectIndex(selectIndex)
} }
} }
func updateSelectIndex(_ index: Int) { func updateSelectIndex(_ index: Int) {
self.selectIndex = index
for subView in self.subviews { for subView in self.subviews {
if subView is YHSegmentItemView { if subView is YHSegmentItemView {
let subItemView = subView as! YHSegmentItemView let subItemView = subView as! YHSegmentItemView
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
// iOS10注册APNs所需头文件 // iOS10注册APNs所需头文件
#ifdef NSFoundationVersionNumber_iOS_9_x_Max #ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h> #import <UserNotifications/UserNotifications.h>
// 列表截图
#import "TYSnapshotScroll.h"
#endif #endif
......
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