Тип 'UIImage' не имеет члена 'radialGradientImage' - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь использовать градиент цвета для фона сцены в моей игре Sprite Kit.Вот так это выглядит примерно так:

введите описание изображения здесь

Мне нужна помощь в устранении следующей ошибки:

Тип 'UIImage'не имеет члена 'radialGradientImage'

код:

import UIKit
import SpriteKit
import StoreKit
import GameKit
import AVFoundation
import SpriteKit.SKTexture

class Start: SKScene {
    let color1 = UIColor(red: 255/255, green: 153/255, blue: 102/255, alpha: 1)
    let color2 = UIColor(red: 255/255, green: 204/255, blue: 153/255, alpha: 1)

    //Error ->
    let backgroundImg = UIImage.radialGradientImage(size: frame.size, outerColor: color1, innerColor: color2)

    //

    let backgroundTexture = SKTexture(image: backgroundImg)
    let background = SKSpriteNode(texture: backgroundTexture)

    override func didMove(to view: SKView) {
        //Background
        background.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
        addChild(background)
    }

    static func radialGradientImage(size: CGSize, outerColor: UIColor, innerColor: UIColor) -> UIImage
    {
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let gradient = CGGradient(colorsSpace: colorSpace, colors: [outerColor.cgColor, innerColor.cgColor] as CFArray, locations: [1.0, 0.0])
        let center = CGPoint(x: size.width / 2.0, y: size.height / 2.0)

        UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.main.scale)
        let imageContext = UIGraphicsGetCurrentContext()

        imageContext!.drawRadialGradient(gradient!, startCenter: center, startRadius: 0.0, endCenter: center, endRadius: size.width / 2.0, options: CGGradientDrawingOptions.drawsAfterEndLocation)

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return image!
    }
}

1 Ответ

0 голосов
/ 25 ноября 2018

radialGradientImage - это статический метод вашего Start класса, а не UIImage класса.

Вы хотите:

let backgroundImg = Start.radialGradientImage(size: frame.size, outerColor: color1, innerColor: color2)

Но это потерпит неудачу с болееошибки, потому что вы не можете получить доступ к frame, color1 или color2.

Вам необходимо изменить let на lazy var:

lazy var backgroundImg = Start.radialGradientImage(size: frame.size, outerColor: color1, innerColor: color2)
...