изодиаграмма BarChart с закругленными углами

Есть ли в BarChartView параметр, позволяющий закруглять углы столбцов?

Я хочу добиться эффекта, аналогичного этой другой библиотеке iosbarchart введите здесь описание изображения


person user2471214    schedule 24.07.2015    source источник


Ответы (2)


я сделал форк ios-charts, чтобы примерно выполнить это: https://github.com/mcconkiee/ios-charts

var yVals: [BarChartDataEntry] = []
                var xVals: [String] = []
                var dataCount = sections.count
                for i in 0...(dataCount - 1) {
                    var dataObjectInstance = sections[i] as SomeCustomDataObject
                    var entry = BarChartDataEntry(value: dataObjectInstance.numeric!, xIndex: i)
                    entry.rounded = true //make the end caps round!
                    if let tintClr = dataObjectInstance.tint as String?{
                        if let clr = UIColor(hexString: tintClr) as UIColor?{
                            entry.tint = clr
                        }
                    }
                    yVals.append(entry)
                    var time = i % 12
                    if(time == 0) {
                        time = 12
                    }
                    if let objVal = dataObjectInstance.objectValue as String?{
                        xVals.append(objVal)
                    }

                }
person Eric McConkie    schedule 11.08.2015
comment
Круто сейчас тестирую. - person user2471214; 14.08.2015

Это пример округленной гистограммы с использованием UIView в Swift. В файле .swift добавьте следующий код.

@IBOutlet weak var barView: UIView! 
var BAR_WIDTH_CONSTANT: CGFloat = 9
var BAR_DISTANCE: CGFloat = 14 // distance between your bars
var BAR_MAX_HEIGHT: CGFloat = 50 // maximum height of a bar
let MAX_VALUE: CGFloat = 10 //maximum value of a bar
let MIN_VALUE: CGFloat = 0 // minimum value of a bar

Затем добавьте следующий код в ваш viewDidLoad().

 var xPos: CGFloat = 0
 var yPos: CGFloat = 0
 let values: [Int] = [1, 2, 3, 4, 5, 6, 7] //values of a Bar chart
 for i in 0..< values.count {
     // draw bar
     let barHeight = getBarHeight(height: CGFloat(values[i]), maxHeight: BAR_MAX_HEIGHT, maxValue: MAX_VALUE, minValue: MIN_VALUE)
     yPos = BAR_MAX_HEIGHT - barHeight
     let frame = CGRect(x: xPos, y: yPos, width: BAR_WIDTH_CONSTANT, height: barHeight)
     let bar = UIView(frame: frame)

     bar.layer.cornerRadius = BAR_WIDTH_CONSTANT < barHeight ? BAR_WIDTH_CONSTANT / 2 : barHeight / 2
     bar.layer.masksToBounds = true
     self.barView.addSubview(bar)

     xPos = xPos + BAR_WIDTH_CONSTANT + BAR_DISTANCE
     // bar drawing complete
}


func getBarHeight(height: CGFloat, maxHeight: CGFloat, maxValue: CGFloat, minValue: CGFloat) -> CGFloat {
        let barHeight = (maxHeight * height ) / (maxValue - minValue)
        return barHeight
}

Надеюсь, это поможет.

person Rubaiyat Jahan Mumu    schedule 22.02.2019