Commit ca1cc7ac authored by David黄金龙's avatar David黄金龙

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

* 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  // 权限设置
  // 搜索
  加载更多
  // 搜索
  // 搜索
  提交事件
  // 搜索
  banner跳转逻辑
  获取文章详情接口调试
parents b45d62a9 25b309d9
......@@ -13,6 +13,7 @@ class YHFourKingViewController: YHBaseViewController {
var tableFootView: YHServiceTableFootView!
var sectionView: YHServiceSectionView!
var id = 3
var classId: Int = 0
var dataSouce: [YHHomeListModel?] = [] {
didSet {
......@@ -55,7 +56,8 @@ extension YHFourKingViewController {
gk_navTitle = model.name
self.sectionView.items = model.children
let classifyID = model.children.first?.id ?? 0
self.homeViewModel.getList(classifyID) {[weak self] success, error in
self.classId = classifyID
self.homeViewModel.getList(true, classifyID) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
}
......@@ -71,9 +73,13 @@ extension YHFourKingViewController {
let view = YHServiceSectionView()
view.block = {[weak self] model in
guard let self = self else { return }
self.homeViewModel.getList(model.id) {[weak self] success, error in
self.classId = model.id
self.homeViewModel.getList(true, model.id) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false {
self.homeTableView.es.noticeNoMoreData()
}
}
}
return view
......@@ -87,6 +93,18 @@ extension YHFourKingViewController {
}
homeTableView.delegate = self
homeTableView.dataSource = self
homeTableView.es.addInfiniteScrolling {[weak self] in
guard let self = self else { return }
self.homeViewModel.getList(false, self.classId) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
self.homeTableView.es.stopLoadingMore()
if self.homeViewModel.hasMoreForHomeNews == false {
self.homeTableView.es.noticeNoMoreData()
}
}
}
}
}
......
......@@ -10,25 +10,46 @@ import UIKit
class YHSearchInfomationVC: YHBaseViewController {
static let searchInfoHistoryKey = "searchInfoHistoryKey"
static let searchHistoryMaxCount = 10
var items:[YHHomeListModel] = []
lazy var viewModel : YHHomePageViewModel = {
lazy var viewModel: YHHomePageViewModel = {
let viewModel = YHHomePageViewModel()
return viewModel
}()
lazy var navBar:UIView = {
let bar = UIView()
let backBtn = UIButton()
backBtn.setImage(UIImage(named: "back_icon"), for: .normal)
backBtn.addTarget(self, action: #selector(didBackBtnClicked), for: .touchUpInside)
backBtn.YH_clickEdgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
bar.addSubview(backBtn)
backBtn.snp.makeConstraints { make in
make.width.height.equalTo(21)
make.centerY.equalToSuperview()
make.left.equalToSuperview().offset(16)
}
return bar
}()
lazy var searchBar: YHSearchInfoBar = {
let bar = YHSearchInfoBar(frame: CGRect(x: 20, y: k_Height_NavigationtBarAndStatuBar+8.0, width: KScreenWidth-40, height: 36.0))
bar.searchBlock = {
[weak self] text in
guard let self = self else { return }
searchText(self.searchBar.textField.text ?? "")
if let searchText = self.searchBar.textField.text, searchText.count > 0 {
self.saveSearchHistory(searchText)
}
}
bar.textChange = {
[weak self] text in
guard let self = self else { return }
if isEmptyString(text) {
searchHistoryView.isHidden = false
searchHistoryView.updateDataSource(self.getSearchHistoryList())
items.removeAll()
self.tableView.reloadData()
}
......@@ -57,12 +78,14 @@ class YHSearchInfomationVC: YHBaseViewController {
lazy var searchHistoryView: YHSearchInfoHistoryView = {
let view = YHSearchInfoHistoryView(frame: CGRect(x: 0, y: searchBar.frame.maxY+8, width: KScreenWidth, height: KScreenHeight-searchBar.frame.maxY-8))
view.updateDataSource(self.getSearchHistoryList())
view.selectBlock = {
[weak self] text in
guard let self = self else { return }
self.searchHistoryView.isHidden = true
self.searchBar.textField.text = text
searchText(text)
self.saveSearchHistory(text)
}
return view
}()
......@@ -97,12 +120,25 @@ class YHSearchInfomationVC: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.setupUI()
}
func setupUI() {
gk_navigationBar.isHidden = true
view.backgroundColor = .white
view.addSubview(navBar)
view.addSubview(searchBar)
view.addSubview(tableView)
view.addSubview(searchHistoryView)
searchBar.textField.becomeFirstResponder()
navBar.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(k_Height_statusBar())
make.height.equalTo(k_Height_NavContentBar)
}
searchBar.snp.makeConstraints { make in
make.left.equalToSuperview().offset(20)
make.right.equalToSuperview().offset(-20)
......@@ -138,6 +174,46 @@ class YHSearchInfomationVC: YHBaseViewController {
self.tableView.reloadData()
}
}
func getSearchHistoryList() -> [String] {
if let arr = UserDefaults.standard.array(forKey: Self.searchInfoHistoryKey) as? [String] {
return arr
}
return []
}
func saveSearchHistory(_ text: String) {
if isEmptyString(text) { return }
var arr = getSearchHistoryList()
// 查找历史记录中是否有相同记录
var targetIndex = -1
for (index, history) in arr.enumerated() {
if history == text {
targetIndex = index
break
}
}
// 去除相同记录
if 0 <= targetIndex && targetIndex < arr.count {
arr.remove(at: targetIndex)
}
// 将最近记录放在第一位
if arr.count < Self.searchHistoryMaxCount {
arr.insert(text, at: 0)
} else {
arr.insert(text, at: 0)
arr.removeLast()
}
UserDefaults.standard.set(arr, forKey: Self.searchInfoHistoryKey)
UserDefaults.standard.synchronize()
}
@objc func didBackBtnClicked() {
self.navigationController?.popViewController(animated: true)
}
}
extension YHSearchInfomationVC: UITableViewDelegate, UITableViewDataSource {
......@@ -157,6 +233,7 @@ extension YHSearchInfomationVC: UITableViewDelegate, UITableViewDataSource {
if 0 <= indexPath.section && indexPath.section < items.count {
let item = items[indexPath.section]
cell.updateModel(item)
cell.renderHighLightText(self.searchBar.textField.text ?? "")
}
return cell
}
......
......@@ -12,7 +12,7 @@ import Kingfisher
class YHSearchInfoCell: UITableViewCell {
static let cellReuseIdentifier = "YHSearchInfoCell"
var model: YHHomeListModel = YHHomeListModel()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI()
......@@ -48,6 +48,7 @@ class YHSearchInfoCell: UITableViewCell {
}()
func updateModel(_ model: YHHomeListModel) {
self.model = model
titleLabel.text = model.title
videoPlayImgView.isHidden = (model.type != 1)
if let url = URL(string: model.img_url) {
......@@ -80,24 +81,38 @@ class YHSearchInfoCell: UITableViewCell {
}
}
func highlightText(in text: String, highlightString: String, highlightColor: UIColor) -> NSAttributedString {
let attributedString = NSMutableAttributedString(string: text)
func renderHighLightText(_ text: String) {
var attributedString = NSMutableAttributedString(string:self.model.title, attributes: [
.foregroundColor: UIColor(hex: 0x121A26)
])
if isEmptyString(text) {
self.titleLabel.attributedText = attributedString
return
}
// 创建一个属性字典,用于设置高亮样式
// 设置高亮样式
let highlightAttributes: [NSAttributedString.Key: Any] = [
.backgroundColor: highlightColor
.foregroundColor: UIColor(hex: 0x3570DC)
]
// 查找并应用高亮样式到指定文字
let range = (text as NSString).range(of: highlightString)
attributedString.addAttributes(highlightAttributes, range: range)
return attributedString
let ranges = findOccurrencesOfString(text, inString:self.model.title)
for range in ranges {
let changeRange = NSRange(range, in: self.model.title)
attributedString.addAttributes(highlightAttributes, range: changeRange)
}
self.titleLabel.attributedText = attributedString
}
func hopeless() {
func findOccurrencesOfString(_ searchString: String, inString string: String) -> [Range<String.Index>] {
var occurrences: [Range<String.Index>] = []
var searchStartIndex = string.startIndex
while let range = string.range(of: searchString, options: [], range: searchStartIndex..<string.endIndex) {
occurrences.append(range)
searchStartIndex = range.upperBound
}
return occurrences
}
}
......@@ -10,7 +10,7 @@ import UIKit
class YHSearchInfoHistoryView: UIView {
var historyItems:[String] = ["阿法守法发生懂法守法阿法守法发生懂法守法阿法守法发生懂法守法阿法守法发生懂法守法", "几天萨法", "阿德", "守法", "几天萨法", "德", "阿法守法发生懂法守法", "阿德", "几天", "阿德", "守法", "几天萨法"]
var historyItems:[String] = []
// var historyItems:[String] = ["几天2345", "阿", "萨法", "阿德"]
var selectBlock:((String)->())?
......@@ -70,6 +70,13 @@ class YHSearchInfoHistoryView: UIView {
}
}
func updateDataSource(_ arr:[String]) {
historyItems.removeAll()
historyItems.append(contentsOf: arr)
self.collectionView.reloadData()
titleLabel.isHidden = arr.count <= 0
}
// 计算文字宽度大小
func getwith(font: UIFont, height: CGFloat, string: String) -> CGSize {
let size = CGSize.init(width: CGFloat(MAXFLOAT), height: height)
......
......@@ -20,6 +20,7 @@ class YHSearchItemLayout: UICollectionViewFlowLayout {
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let arrCell = super.layoutAttributesForElements(in: rect)
if arrCell == nil { return nil }
if arrCell!.count <= 1 { return arrCell }
for i in 1 ..< arrCell!.count {
//当前 UICollectionViewLayoutAttributes
let currentLayout = arrCell![i]
......
......@@ -147,14 +147,23 @@ extension YHHomePageViewModel {
}
}
func getList(_ classifyID: Int, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let params: [String : Any] = ["page": 1,
"page_size": 10,
"classify_id": classifyID]
func getList(_ firstPageFlag : Bool, _ classifyID: Int, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
var params: [String : Any] = ["page": curPageIndex,
"page_size": page_Size,
"classify_id[0]": classifyID]
if firstPageFlag {
curPageIndex = 1
params = ["page": curPageIndex,
"page_size": page_Size,
"classify_id[0]": classifyID]
} else {
params = ["page": curPageIndex + 1,
"page_size": page_Size,
"classify_id[0]": classifyID]
}
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.article
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
guard let self = self else { return }
//1. json字符串 转 对象
if json.code == 200 {
let dic = json.data
guard let result = YHHomeListTotalModel.deserialize(from: dic as? Dictionary) else {
......@@ -166,14 +175,29 @@ extension YHHomePageViewModel {
for item in result.data {
item.calHeightParam()
}
if firstPageFlag {
self.totalCount = result.total
self.arrHomeNewsData = result.data
} else {
self.arrHomeNewsData?.append(contentsOf: result.data)
}
if let count = self.arrHomeNewsData?.count {
if count == self.totalCount {
self.hasMoreForHomeNews = false
} else {
self.hasMoreForHomeNews = true
}
}
callBackBlock(true, nil)
} else {
self.arrHomeNewsData = []
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
} failBlock: { err in
callBackBlock(false,err)
}
}
......@@ -207,7 +231,7 @@ extension YHHomePageViewModel {
"page_size": 10,
"title": title]
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.article
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
guard let self = self else { return }
//1. json字符串 转 对象
if json.code == 200 {
......
......@@ -14,7 +14,7 @@ class YHServerHKLifeViewController: YHBaseViewController {
var tableHeadView: YHServerTableHeadView!
var tableFootView: YHServiceTableFootView!
var sectionView: YHServiceSectionView!
var classId: Int = 0
var dataSouce: [YHHomeListModel?] = [] {
didSet {
self.homeTableView.reloadData()
......@@ -61,9 +61,13 @@ extension YHServerHKLifeViewController {
if model.id == 2 {
self.sectionView.items = model.children
let classifyID = model.children.first?.id ?? 0
self.homeViewModel.getList(classifyID) {[weak self] success, error in
self.classId = classifyID
self.homeViewModel.getList(true, classifyID) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false {
self.homeTableView.es.noticeNoMoreData()
}
}
}
}
......@@ -78,9 +82,13 @@ extension YHServerHKLifeViewController {
let view = YHServiceSectionView()
view.block = {[weak self] model in
guard let self = self else { return }
self.homeViewModel.getList(model.id) {[weak self] success, error in
self.classId = model.id
self.homeViewModel.getList(true, model.id) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false {
self.homeTableView.es.noticeNoMoreData()
}
}
}
return view
......@@ -88,8 +96,6 @@ extension YHServerHKLifeViewController {
tableHeadView = YHServerTableHeadView()
tableHeadView.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: 365)
// tableFootView = YHServiceTableFootView()
// tableFootView.frame = CGRect(x: 0, y: 0, width: KScreenWidth, height: KScreenHeight)
view.addSubview(homeTableView)
homeTableView.tableHeaderView = tableHeadView
homeTableView.tableFooterView = tableFootView
......@@ -99,6 +105,17 @@ extension YHServerHKLifeViewController {
}
homeTableView.delegate = self
homeTableView.dataSource = self
homeTableView.es.addInfiniteScrolling {[weak self] in
guard let self = self else { return }
self.homeTableView.es.stopLoadingMore()
self.homeViewModel.getList(false, self.classId) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false {
self.homeTableView.es.noticeNoMoreData()
}
}
}
}
}
......
......@@ -16,7 +16,7 @@ class YHServiceListViewController: YHBaseViewController {
var orderListView: YHOrderListView!
var normalView: YHServerNoOrderView!
var classId: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
......@@ -45,9 +45,13 @@ extension YHServiceListViewController {
if model.id == 1 {
self.normalView.sectionView.items = model.children
let classifyID = model.children.first?.id ?? 0
self.homeViewModel.getList(classifyID) {[weak self] success, error in
self.classId = classifyID
self.homeViewModel.getList(true, classifyID) {[weak self] success, error in
guard let self = self else { return }
self.normalView.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false {
self.normalView.homeTableView.es.noticeNoMoreData()
}
}
}
}
......@@ -87,9 +91,23 @@ extension YHServiceListViewController {
let view = YHServerNoOrderView()
view.sectionBlock = {[weak self] model in
guard let self = self else { return }
self.homeViewModel.getList(model.id) {[weak self] success, error in
self.classId = model.id
self.homeViewModel.getList(true, model.id) {[weak self] success, error in
guard let self = self else { return }
self.normalView.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false {
self.normalView.homeTableView.es.noticeNoMoreData()
}
}
}
view.loadMoreBlock = {[weak self] model in
guard let self = self else { return }
self.homeViewModel.getList(false, self.classId) {[weak self] success, error in
guard let self = self else { return }
self.normalView.dataSouce = self.homeViewModel.arrHomeNewsData ?? []
if self.homeViewModel.hasMoreForHomeNews == false {
self.normalView.homeTableView.es.noticeNoMoreData()
}
}
}
return view
......
......@@ -11,6 +11,7 @@ import UIKit
class YHServerNoOrderView: UIView {
typealias SectionBlock = (YHClassifyModel) -> ()
var sectionBlock: SectionBlock?
var loadMoreBlock: SectionBlock?
var tableHeadView: YHServerTableHeadView!
var sectionView: YHServiceSectionView!
......@@ -66,6 +67,14 @@ class YHServerNoOrderView: UIView {
}
homeTableView.delegate = self
homeTableView.dataSource = self
homeTableView.es.addInfiniteScrolling {[weak self] in
guard let self = self else { return }
self.homeTableView.es.stopLoadingMore()
if let block = self.loadMoreBlock {
block(YHClassifyModel())
}
}
}
}
......
......@@ -31,6 +31,8 @@ class YHServerTableHeadView: UIView {
func setUpView() {
search = {
let view = YHHomeSearchView()
let tap = UITapGestureRecognizer(target: self, action: #selector(didSearchBarClicked))
view.addGestureRecognizer(tap)
return view
}()
addSubview(search)
......@@ -76,4 +78,9 @@ class YHServerTableHeadView: UIView {
@objc func goNext() {
UIViewController.current?.navigationController?.pushViewController(YHScoreDetailViewController())
}
@objc func didSearchBarClicked() {
let vc = YHSearchInfomationVC()
UIViewController.current?.navigationController?.pushViewController(vc)
}
}
......@@ -77,6 +77,27 @@ private extension YHServiceBannerView {
self.pageControl.interitemSpacing = 3
}
func goAppTab(tabBarName : String) {
if !tabBarName.isEmpty {
if tabBarName.contains("tabBarHome",caseSensitive: false) {
//首页
goTabBarBy(tabType: .home)
} else if tabBarName.contains("tabBarService",caseSensitive: false) {
//服务中心
goTabBarBy(tabType: .service)
} else if tabBarName.contains("tabBarMsg",caseSensitive: false) {
//消息
goTabBarBy(tabType: .message)
} else if tabBarName.contains("tabBarMine",caseSensitive: false) {
//我的
goTabBarBy(tabType: .mine)
} else {
}
}
}
}
extension YHServiceBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
......@@ -94,7 +115,7 @@ extension YHServiceBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
if let url = URL(string: model.img_url) {
cell.imageView?.kf.setImage(with: url)
}
cell.textLabel?.text = model.name
// cell.textLabel?.text = model.name
}
cell.imageView?.contentMode = .scaleAspectFill
cell.backgroundColor = .contentBkgColor
......@@ -112,20 +133,27 @@ extension YHServiceBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
return
}
let model = dataArr[index]
switch model.type {
case 10: //跳转H5
// let vc = BsWebViewController()
// vc.urlString = model.link_url
// UIViewController.navTopViewController?.navigationController?.pushViewController(vc, animated: true)
break
case 20: //跳转原生页面
if let vc = UIViewController.classFromString(model.skip_url) {
UIViewController.navTopViewController?.navigationController?.pushViewController(vc, animated: true)
}
break
if model.skip_url.isEmpty == false {
switch model.skip_type {
case 1: //跳转H5
let vc = YHHomeWebViewController()
vc.url = model.skip_url
self.parentViewController?.navigationController?.pushViewController(vc)
case 2: //跳转APP内Tab
goAppTab(tabBarName:model.skip_url)
case 3://3-跳转资讯页
let vc = YHHomeWebViewController()
vc.url = model.skip_url
self.parentViewController?.navigationController?.pushViewController(vc)
case 0://0 不需要跳转
printLog("0 不需要跳转")
default:
YHHUD.flash(message: "不需要处理的类型")
break
}
} else {
YHHUD.flash(message: "error:skip_url不能为空")
}
}
func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {
......
......@@ -9,6 +9,8 @@
import UIKit
class YHServiceTableFootView: UIView {
typealias LoadBlock = () -> ()
var moreBlock: LoadBlock?
var items:[YHHomeListModel?] = [] {
didSet {
......@@ -49,6 +51,13 @@ class YHServiceTableFootView: UIView {
myCollectView.snp.makeConstraints { make in
make.top.left.right.bottom.equalToSuperview()
}
myCollectView.es.addInfiniteScrolling {[weak self] in
guard let self = self else { return }
if let block = moreBlock {
block ()
}
}
}
}
......
......@@ -42,14 +42,20 @@ class YHMyLikeViewController: YHBaseViewController {
extension YHMyLikeViewController {
func loadData() {
if id == 1 || id == 2 {
self.viewModel.getList(id) {[weak self] success, error in
self.viewModel.getList(true ,id) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.viewModel.arrHomeNewsData ?? []
if self.viewModel.hasMoreForHomeNews == false {
self.tableFootView.myCollectView.es.noticeNoMoreData()
}
}
} else {
self.viewModel.getList(callBackBlock: {[weak self] success, error in
self.viewModel.getList(true, callBackBlock: {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.viewModel.arrHomeNewsData ?? []
if self.viewModel.hasMoreForHomeNews == false {
self.tableFootView.myCollectView.es.noticeNoMoreData()
}
})
}
}
......@@ -59,6 +65,28 @@ extension YHMyLikeViewController {
tableFootView = {
let view = YHServiceTableFootView()
view.moreBlock = {[weak self] in
guard let self = self else { return }
if id == 1 || id == 2 {
self.tableFootView.myCollectView.es.stopLoadingMore()
self.viewModel.getList(false ,id) {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.viewModel.arrHomeNewsData ?? []
if self.viewModel.hasMoreForHomeNews == false {
self.tableFootView.myCollectView.es.noticeNoMoreData()
}
}
} else {
self.tableFootView.myCollectView.es.stopLoadingMore()
self.viewModel.getList(false, callBackBlock: {[weak self] success, error in
guard let self = self else { return }
self.dataSouce = self.viewModel.arrHomeNewsData ?? []
if self.viewModel.hasMoreForHomeNews == false {
self.tableFootView.myCollectView.es.noticeNoMoreData()
}
})
}
}
return view
}()
......
......@@ -7,6 +7,7 @@
//
import UIKit
import Photos
enum YHPermissionType: Int {
case none = 0
......@@ -31,11 +32,9 @@ class YHPermissionItem {
class YHMyPermissionSettingVC: YHBaseViewController {
var items:[YHPermissionItem] = [YHPermissionItem(title: "网络".local, type:.network, enableStatus: true),
YHPermissionItem(title: "照片".local, type:.photo, enableStatus: true),
YHPermissionItem(title: "相机".local, type:.camera, enableStatus: false),
YHPermissionItem(title: "位置".local, type:.location, enableStatus: true),
YHPermissionItem(title: "文件".local, type:.file, enableStatus: false)]
let items:[YHPermissionItem] = [YHPermissionItem(title: "网络".local, type:.network, enableStatus: YHNetworkStatusManager.shared.isNetWorkOK),
YHPermissionItem(title: "照片".local, type:.photo, enableStatus: false),
YHPermissionItem(title: "相机".local, type:.camera, enableStatus: false)]
lazy var tableView: UITableView = {
let tableView = UITableView(frame:.zero, style:.grouped)
......@@ -64,6 +63,72 @@ class YHMyPermissionSettingVC: YHBaseViewController {
make.top.equalToSuperview().offset(k_Height_NavigationtBarAndStatuBar)
make.bottom.equalToSuperview().offset(-k_Height_TabBar)
}
// 获取相册权限
requestPhotoLibraryPermission {
[weak self] grant in
guard let self = self else { return }
for item in items {
if item.type == .photo {
item.enableStatus = grant
self.tableView.reloadData()
}
}
}
// 获取相机权限
requestCameraPermission {
[weak self] grant in
guard let self = self else { return }
for item in items {
if item.type == .camera {
item.enableStatus = grant
self.tableView.reloadData()
}
}
}
}
func requestPhotoLibraryPermission(completion: @escaping (Bool) -> Void) {
let status = PHPhotoLibrary.authorizationStatus()
switch status {
case .authorized:
// 已经授权
completion(true)
case .denied, .restricted, .limited:
// 拒绝或受限制,需要提示用户去设置中授权
completion(false)
case .notDetermined:
// 尚未确定,请求授权
completion(false)
@unknown default:
completion(false)
}
}
func requestCameraPermission(completion: @escaping (Bool) -> Void) {
let status = AVCaptureDevice.authorizationStatus(for: .video)
switch status {
case .authorized:
// 已经授权
completion(true)
case .denied, .restricted:
// 拒绝或受限制,需要提示用户去设置中授权
completion(false)
case .notDetermined:
// 尚未确定,请求授权
completion(false)
@unknown default:
completion(false)
}
}
}
......@@ -88,28 +153,13 @@ extension YHMyPermissionSettingVC: UITableViewDelegate, UITableViewDataSource {
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if 0 <= indexPath.row && indexPath.row < items.count {
let item = items[indexPath.row]
if item.type == .photo || item.type == .camera {
let url = URL(string: UIApplication.openSettingsURLString)
if let url = url, UIApplication .shared.canOpenURL(url) {
UIApplication .shared.open(url, options: [:], completionHandler: {
(success) in
})
}
return
}
if item.type == .location {
if let url = URL(string: "App-prefs:Photos") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
} else if item.type == .file {
}
}
}
private func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> CGFloat {
......
......@@ -10,16 +10,31 @@ import UIKit
class YHMyLikeViewModel: YHBaseViewModel {
var arrHomeNewsData: [YHHomeListModel]?
private var curPageIndex : Int = 1
private var page_Size : Int = 10
private var totalCount : Int = 0
var hasMoreForHomeNews : Bool = true
}
extension YHMyLikeViewModel {
// 1点赞 2收藏
func getList(_ type: Int, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let params: [String : Any] = ["page": 1,
"page_size": 10,
func getList(_ firstPageFlag : Bool, _ type: Int, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
var params: [String : Any] = ["page": curPageIndex,
"page_size": page_Size,
"operate_type": type]
if firstPageFlag {
curPageIndex = 1
params = ["page": curPageIndex,
"page_size": page_Size,
"operate_type": type]
} else {
params = ["page": curPageIndex + 1,
"page_size": page_Size,
"operate_type": type]
}
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.user
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
guard let self = self else { return }
//1. json字符串 转 对象
if json.code == 200 {
......@@ -33,9 +48,25 @@ extension YHMyLikeViewModel {
for item in result.data {
item.calHeightParam()
}
if firstPageFlag {
self.totalCount = result.total
self.arrHomeNewsData = result.data
} else {
self.arrHomeNewsData?.append(contentsOf: result.data)
}
if let count = self.arrHomeNewsData?.count {
if count == self.totalCount {
self.hasMoreForHomeNews = false
} else {
self.hasMoreForHomeNews = true
}
}
callBackBlock(true, nil)
} else {
self.arrHomeNewsData = []
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
......@@ -45,11 +76,19 @@ extension YHMyLikeViewModel {
}
//最近浏览
func getList(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let params: [String : Any] = ["page": 1,
"page_size": 10]
func getList(_ firstPageFlag : Bool, callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
var params: [String : Any] = ["page": curPageIndex,
"page_size": page_Size]
if firstPageFlag {
curPageIndex = 1
params = ["page": curPageIndex,
"page_size": page_Size]
} else {
params = ["page": curPageIndex + 1,
"page_size": page_Size]
}
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.userLook
let _ = YHNetRequest.getRequest(url: strUrl) { [weak self] json, code in
let _ = YHNetRequest.getRequest(url: strUrl, params: params) { [weak self] json, code in
guard let self = self else { return }
//1. json字符串 转 对象
if json.code == 200 {
......@@ -63,9 +102,25 @@ extension YHMyLikeViewModel {
for item in result.data {
item.calHeightParam()
}
if firstPageFlag {
self.totalCount = result.total
self.arrHomeNewsData = result.data
} else {
self.arrHomeNewsData?.append(contentsOf: result.data)
}
if let count = self.arrHomeNewsData?.count {
if count == self.totalCount {
self.hasMoreForHomeNews = false
} else {
self.hasMoreForHomeNews = true
}
}
callBackBlock(true, nil)
} else {
self.arrHomeNewsData = []
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(false, error)
}
......
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