BASReport
BASReport
需求
BASReport
支持 iOS 8.0+。它依赖于以下 Apple 框架,这些框架通常已包含在大多数 Xcode 模板中
- Foundation.framework
- UIKit.framework
安装
CocoaPods
CocoaPods 是将BASReport添加到项目的推荐方式。
- 在Podfile中为BASReport添加pod条目
pod 'BASReport'
- 通过运行
pod install
安装pod(s) - 在需要的地方使用
import BASReport"
包含BASReport。
概述
项目中新添加4个示例
入门
Storyboard
- 转到 main.storyboard 并添加一个 空白UIView
- 打开 Identity Inspector 并在 'class' 字段中输入 'BASCustomReport'
- 确保 'Module' 字段中已选择 'BASReport'
代码
import BASReport
class BASReportExample: UIViewController {
//Outlets
@IBOutlet weak var basReport: BASCustomReport!
override func viewDidLoad() {
super.viewDidLoad()
self.basReport.delegate = self
initialSetup()
}
func initialSetup() {
/* Set Header as! OrderedDictionary
1) Object , Distance , Running etc set as Header
2) Boolian value -> true if you want to set image , false if not set image
and then pass it to BASReport
*/
var HeaderDict = OrderedDictionary<String, Bool>()
HeaderDict["Object"] = false ;
HeaderDict["Distance"] = false ;
HeaderDict["Running"] = false ;
HeaderDict["Idle"] = false ;
HeaderDict["Max Temperature"] = false;
HeaderDict["Min Temperature"] = false;
HeaderDict["No Of Times Above Ideal"] = false
self.basReport.arrGHeader = HeaderDict
//*--------------------------------------------------------*//
setData()
}
//Webservice Call to get Data
func setData() {
if let path = Bundle.main.path(forResource: "Example", ofType: "json") {
do {
let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
let tempData = try JSONDecoder().decode(RootClass.self, from: data )
//Store Data in Global Array
self.sampleData = tempData.data!
/*Send Dictionary keys to BASReport
1) Key received from JSON 2) Allignment of Text 3) Custom size for cell 4) Color of Cell or Text
*/
self.basReport.arrGKeys = [("object",.left,nil , nil) ,
("distance",.center,100.0 , nil) ,
("running",.center,nil , nil) ,
("idle",.center,80.0 , nil) ,
("max_temperature",.center,nil , nil) ,
("min_temperature",.center,nil , nil) ,
("no_below_ideal",.center,nil , nil) ]
//Send your Data to BASReport in Dictionary form
if basReport.arrGHeader.count == basReport.arrGKeys.count{
self.basReport.arrReportSummaryDict = arryToDict(array: self.sampleData)
}
} catch {
// handle error
}
}
}
extension BASReportExample : BASReportDelegate {
func didSelectCellAt(indexPath: IndexPath, tableHint: String, basReport: BASCustomReport?) {
//When userTapped on particular cell
}
}
自定义
自定义Header的自定义 数据源
//Refer example 4. BASReport with CustomCell
///This datasource is used to Display customCells for Header in **TableViewData**
weak public var basReportHeaderDatasource: BASReportHeaderDatasource?
/// Need to specify index on which **COLUMN** you need custom cell for Header
public var arrCustomHeaderSectionForColumn : [Int] = []
自定义Cell的自定义数据源
//Refer example 4. BASReport with CustomCell
///This datasource is used to Display customCells in **TableViewData**
weak public var basReportDatasource: BASReportDatasource?
/// Need to specify index on which **COLUMN** you need custom cell
public var arrCustomIndexPathForColumn : [Int] = []
与UI相关的自定义
//PrimaryHeader
/// PrimaryHeader(First Tableview) BackGround Color Default is OffWhite "F8F8F8"
public var PRIMARYHEADER_BACKGROUNDCOLOR : UIColor = UIColor(hexString: "F8F8F8")
/// PrimaryHeader Text Color Default is Black
public var PRIMARYHEADER_TEXTCOLOR = UIColor.black
/// PrimaryHeader Font Default is System with Size 12.0
public var PRIMARYHEADER_FONT = UIFont.systemFont(ofSize: 12.0)
/// PrimaryHeader SelectedFont Default is SystemBold with Size 12.0
public var PRIMARYHEADERSELECTED_FONT = UIFont.boldSystemFont(ofSize: 12.0)
/// PrimaryHeader Seperator Color Default is UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
public var PRIMARYHEADER_SEPERATORCOLOR = UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
/// PrimaryHeader Allignment **Default is .left**
public var PRIMARYHEADER_TEXTALLIGNMENT:NSTextAlignment = .left
//SecondaryHeader
/// SecondaryHeader(FromSecond Tableview) BackGround Color Default is OffWhite "F8F8F8"
public var SECONDARYHEADER_BACKGROUNDCOLOR = UIColor(hexString: "F8F8F8")
/// SecondaryHeader Text Color Default is Black
public var SECONDARYHEADER_TEXTCOLOR = UIColor.black
/// SecondaryHeader Font Default is System with Size 12.0
public var SECONDARYHEADER_FONT = UIFont.systemFont(ofSize: 12.0)
/// SecondaryHeader SelectedFont Default is SystemBold with Size 12.0
public var SECONDARYHEADERSELECTED_FONT = UIFont.boldSystemFont(ofSize: 12.0)
/// SecondaryHeader Seperator Color Default is UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
public var SECONDARYHEADER_SEPERATORCOLOR = UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
/// SecondaryHeader Allignment **Default is .left**
public var SECONDARYHEADER_TEXTALLIGNMENT:NSTextAlignment = .center
//PrimaryREPORTDATA
/// Primary(1st) ReportData BackGround Color Default is OffWhite "F8F8F8"
public var PRIMARYREPORTDATA_BACKGROUNDCOLOR : UIColor = UIColor(hexString: "F8F8F8")
/// Primary(1st) ReportData TextColor Default is Black.
public var PRIMARYREPORTDATA_TEXTCOLOR = UIColor.black
/// Primary(1st) ReportData Font Default is System with Size 12.0
public var PRIMARYREPORTDATA_FONT = UIFont.systemFont(ofSize: 12.0)
/// Primary(1st) ReportData Seperator Color Default is UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
public var PRIMARYREPORTDATA_SEPERATORCOLOR = UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
/// Primary(1st) ReportData Verticle Seperator Color Default is UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
public var PRIMARYREPORTDATA_SEPERATORCOLOR_VERTICLE = UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
/// Primary(1st) ReportData Image Height and Width **Default is 15.0**
public var PRIMARYREPORTDATA_IMAGE_HEIGHTWIDTH:CGSize = CGSize(width: 15.0, height: 15.0)
/// Primary(1st) ReportData Allignment **Default is .left**
public var PRIMARYREPORTDATA_TEXTALLIGNMENT:NSTextAlignment = .left
/// Primary(1st) ReportData Image **Default is .Center**
public var PRIMARYREPORTDATA_IMAGEALLIGNMENT:NSTextAlignment = .center
//SecondaryREPORTDATA
/// Secondary ReportData BackGround Color Default is White "UIColor.white".
public var SECONDARYREPORTDATA_BACKGROUNDCOLOR : UIColor = UIColor.white
/// Secondary ReportData TextColor Default is Black.
public var SECONDARYREPORTDATA_TEXTCOLOR = UIColor.black
/// Secondary ReportData Font Default is System with Size 12.0
public var SECONDARYREPORTDATA_FONT = UIFont.systemFont(ofSize: 12.0)
/// Secondary ReportData Seperator Color Default is UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
public var SECONDARYREPORTDATA_SEPERATORCOLOR = UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
/// Secondary ReportData Verticle Seperator Color Default is UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
public var SECONDARYREPORTDATA_SEPERATORCOLOR_VERTICLE = UIColor(red: 217.0/255.0, green: 217.0/255.0, blue: 217.0/255.0, alpha: 1.0)
/// Secondary ReportData Image Height and Width **Default is 15.0**
public var SECONDARYREPORTDATA_IMAGE_HEIGHTWIDTH:CGSize = CGSize(width: 15.0, height: 15.0)
/// Secondary ReportData Allignment **Default is .left**
public var SECONDARYREPORTDATA_TEXTALLIGNMENT:NSTextAlignment = .left
//Size VARIABLES
/// Set Report HeaderSize Default is 44.0
public var HEADER_SIZE:CGFloat = 44.0
/// Set ReportData Cell Size Default is 44.0
public var CELL_SIZE:CGFloat = 44.0
//PrimaryHeader Seperator Size
/// set Header Horizontal Seperator Size Default is 1.0
public var HEADERHORIZONTAL_SEPERATORSIZE:CGFloat = 1.0
/// set ReportData Horizontal Seperator Size Default is 1.0
public var REPORTDATAHORIZONTAL_SEPERATORSIZE:CGFloat = 1.0
//
/// Set Header Vertical SeperatorSize = 1.0
public var HEADERVERTICAL_SEPERATORSIZE:CGFloat = 1.0
/// Set ReportData Vertical SeperatorSize Default is 1.0
public var REPORTDATAVERTICAL_SEPERATORSIZE:CGFloat = 1.0
/// Set Ascending Order Image
public var ASCENDING_IMAGE:UIImage = UIImage(named: "ASCImage.png", in: BASREPORT_BUNDLE, compatibleWith: nil)!
/// Set Descending Order Image
public var DESCENDING_IMAGE:UIImage = UIImage(named: "DSCImage.png", in: BASREPORT_BUNDLE, compatibleWith: nil)!
/// Set NORecord Found Font
public var NODATA_FONT = UIFont.systemFont(ofSize: 12.0)
/// Set No record Found TextColor
public var NODATA_TEXTCOLOR = UIColor.black
///Change All Seperator Size
public func setAllSeperatorWithSize(size:CGFloat) {
self.HEADERHORIZONTAL_SEPERATORSIZE = size
self.REPORTDATAHORIZONTAL_SEPERATORSIZE = size
self.HEADERVERTICAL_SEPERATORSIZE = size
self.REPORTDATAVERTICAL_SEPERATORSIZE = size
}
///Set All Font (Header and Data Both)
public func setAllFontWithSize(font:UIFont) {
PRIMARYHEADER_FONT = font
SECONDARYHEADER_FONT = font
PRIMARYREPORTDATA_FONT = font
SECONDARYREPORTDATA_FONT = font
}
///Change All Header Default TextColor
public func setAllHeaderTextColor(headerTextColor:UIColor) {
PRIMARYHEADER_TEXTCOLOR = headerTextColor
SECONDARYHEADER_TEXTCOLOR = headerTextColor
}
///Change All Header Background Color
public func setAllHeaderBackgroundColor(headerBGColor:UIColor) {
PRIMARYHEADER_BACKGROUNDCOLOR = headerBGColor
SECONDARYHEADER_BACKGROUNDCOLOR = headerBGColor
}
///Change All Headers Font Only
public func setAllHeaderFont(font:UIFont) {
PRIMARYHEADER_FONT = font
SECONDARYHEADER_FONT = font
}
///Change All Data's Font Only
public func setAllDataFont(font:UIFont) {
PRIMARYREPORTDATA_FONT = font
SECONDARYREPORTDATA_FONT = font
}
///By Default cell Contain Image. So, with this you can Change ImageSize
public func setAllDataImageSize(imageSize:CGSize) {
PRIMARYREPORTDATA_IMAGE_HEIGHTWIDTH = imageSize
SECONDARYREPORTDATA_IMAGE_HEIGHTWIDTH = imageSize
}
public func setAllPrimaryAllignment(allignment:NSTextAlignment) {
self.PRIMARYREPORTDATA_TEXTALLIGNMENT = allignment
}
协作
我尝试创建了一种简单的方法来创建自定义报告或电子表格,同时足够灵活以适应多种变体,但我相信有改进和添加更多功能的方法,所以请随时就想法、问题以及/或拉取请求进行协作。
作者
BADAL SHAH, [email protected]
许可证
BASReport 基于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。