PieCharts icon indicating copy to clipboard operation
PieCharts copied to clipboard

labelGenerator creating Multiple labels for each Part

Open ChanakyaHirpara opened this issue 4 years ago • 0 comments

var colors:[UIColor] = [ UIColor(hexString: "#F69300"), UIColor(hexString: "#93D460"), UIColor(hexString: "#5D86EF"), UIColor(hexString: "#F16051"), UIColor(hexString: "#FFFFFF")] var texts:[String] = [ "Lorem", "Ipsum", "Correct", "Wrong", "Correct"] var percentages:[CGFloat] = [15,12,18,25,30] var textLayers:[PieLineTextLayer] = [] var sliceModels:[PieSliceModel] = []

for index in stride(from: 0, to: texts.count, by: 1) {
        
        sliceModels.append(PieSliceModel(value: Double(percentages[index]), color: colors[index]))
        
        let textLayerSettings = PieLineTextLayerSettings()
        textLayerSettings.label.font = Fonts.bold(size: 17)
        textLayerSettings.label.textColor = UIColor(hexString: "#F69300")

        let formatter = NumberFormatter()
        formatter.maximumFractionDigits = 1
        
        let textToSet = "\(percentages[index])% \(texts[index])"
        
        textLayerSettings.label.labelGenerator = { slice in
            
            let lbl = UILabel(frame: CGRect.zero)
            lbl.sizeToFit()
            lbl.text = textToSet
            lbl.textColor = self.colors[index]
            lbl.font = Fonts.bold(size: 18)
            
            lbl.setfont(text: textToSet, words: [self.texts[index]], firstFont: Fonts.bold(size: 18), secondFont: Fonts.medium(size: 14), wordColor: UIColor.white)
            return lbl
        }
        
        textLayerSettings.label.textGenerator = {slice in
            return textToSet
        }

        let textLayer = PieLineTextLayer()
        textLayer.settings = textLayerSettings
        
        textLayers.append(textLayer)
        
    }
    
    pieChart.models = sliceModels
    
    pieChart.layers = textLayers

ChanakyaHirpara avatar May 04 '21 13:05 ChanakyaHirpara