web-dev-qa-db-ja.com

グラデーションの入力Swift for iOS-Charts

Ios-chartsページのデモに見られるように、素敵なグラデーションの塗りつぶしを作成しようとしています。ただし、これをSwift vsobj-cで理解することはできません。obj-cコードは次のとおりです。

NSArray *gradientColors = @[
                    (id)[ChartColorTemplates colorFromString:@"#00ff0000"].CGColor,
                    (id)[ChartColorTemplates colorFromString:@"#ffff0000"].CGColor
                    ];
CGGradientRef gradient = CGGradientCreateWithColors(nil, (CFArrayRef)gradientColors, nil);

set1.fillAlpha = 1.f;
set1.fill = [ChartFill fillWithLinearGradient:gradient angle:90.f];

これがSwiftでの私のバージョンです:

    let gradColors = [UIColor.cyanColor().CGColor, UIColor.init(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)]
    let colorLocations:[CGFloat] = [0.0, 1.0]
    let gradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), gradColors, colorLocations)

私が見逃しているのは:チャート塗りつぶしfillWithLinearGradient

ポッドのどこにもfillWithLinearGradientが見つからないので、少し混乱しています。

助けてくれてありがとう!ロブ

10
throb

これは完全に機能します(Swift3.1およびios-charts3.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

結果

enter image description here

36
Michael

これがあなたが探しているコードだと思います。 Swiftで同じChartFillクラスを使用して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)
}
4
Stephen

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)
1
Hardik Thakkar

必ず最新バージョンのios-chartsを使用してください。 CocoaPodsを使用してios-chartsをインストールする場合は、次のように変更します。

pod 'Charts'

これに

pod 'Charts', '~> 2.2'
0
cronenberg