Gradient Fill in Swift for iOS-Charts

后端 未结 5 1866
醉梦人生
醉梦人生 2020-12-15 10:28

I am trying to create a nice gradient fill as seen in the demos on the ios-charts page. However, I cannot figure this out in swift vs obj-c. Here is the obj-c code:

相关标签:
5条回答
  • 2020-12-15 10:45

    I believe this is the code that you are looking for. You should be able to use the same ChartFill class in Swift to set set1.fill.

    let gradColors = [UIColor.cyanColor().CGColor, UIColor.clearColor.CGColor]
    let colorLocations:[CGFloat] = [0.0, 1.0]
    if let gradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), gradColors, colorLocations) {
        set1.fill = ChartFill(linearGradient: gradient, angle: 90.0)
    }
    
    0 讨论(0)
  • 2020-12-15 10:48

    Make sure to use the latest version of ios-charts. If you use CocoaPods to install ios-charts change this:

    pod 'Charts'

    to this

    pod 'Charts', '~> 2.2'
    
    0 讨论(0)
  • 2020-12-15 10:55

    For swift4

    let colorTop =  UIColor(red: 255.0/255.0, green: 149.0/255.0, blue: 0.0/255.0, alpha: 1.0).cgColor
    let colorBottom = UIColor(red: 255.0/255.0, green: 94.0/255.0, blue: 58.0/255.0, alpha: 1.0).cgColor
    
    let gradientColors = [colorTop, colorBottom] as CFArray
    let colorLocations:[CGFloat] = [0.0, 1.0]
    let gradient = CGGradient.init(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors: gradientColors, locations: colorLocations) // Gradient Object
    yourDataSetName.fill = Fill.fillWithLinearGradient(gradient!, angle: 90.0)
    
    0 讨论(0)
  • 2020-12-15 10:58

    For Swift 5 use the following:

    yourDataSetName.fill = LinearGradientFill(....
    or
    yourDataSetName.fill = ColorFill(...
    

    More details you can read here: Charts

    0 讨论(0)
  • 2020-12-15 11:04

    This works perfectly (Swift 3.1 and ios-charts 3.0.1)


    let gradientColors = [UIColor.cyan.cgColor, UIColor.clear.cgColor] as CFArray // Colors of the gradient
    let colorLocations:[CGFloat] = [1.0, 0.0] // Positioning of the gradient
    let gradient = CGGradient.init(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors: gradientColors, locations: colorLocations) // Gradient Object
    yourDataSetName.fill = Fill.fillWithLinearGradient(gradient!, angle: 90.0) // Set the Gradient
    set.drawFilledEnabled = true // Draw the Gradient
    

    Result

    0 讨论(0)
提交回复
热议问题