首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机生成的CGGradient不会显示

随机生成的CGGradient不会显示
EN

Stack Overflow用户
提问于 2015-07-04 15:15:25
回答 1查看 103关注 0票数 0

我正在编写一个应用程序,它生成随机梯度并使用自定义的UIView类在屏幕上显示它们。因为我对这个应用程序有更多的计划函数,所以我选择了给梯度它自己的类。生成梯度的代码如下:

代码语言:javascript
复制
import UIKit

class Gradient {

var topColor = UIColor()
var bottomColor = UIColor()
var gradient: CGGradientRef?

func generateGradient() -> CGGradientRef {

    var red = CGFloat(arc4random_uniform(256))
    var green = CGFloat(arc4random_uniform(256))
    var blue = CGFloat(arc4random_uniform(256))

    topColor = UIColor(red: red, green: green, blue: blue, alpha: 1.0)

    red = CGFloat(arc4random_uniform(256))
    green = CGFloat(arc4random_uniform(256))
    blue = CGFloat(arc4random_uniform(256))

    bottomColor = UIColor(red: red, green: green, blue: blue, alpha: 1.0)

    let gradientColors = [topColor.CGColor, bottomColor.CGColor]
    let gradientStops:[CGFloat] = [0, 1.0]
    let colorSpace = CGColorSpaceCreateDeviceRGB()

    let generatedGradient = CGGradientCreateWithColors(colorSpace, gradientColors, gradientStops)

    return generatedGradient

}

init() {
    gradient = self.generateGradient()
}

}

显示梯度的渐变查看器类读取:

代码语言:javascript
复制
import UIKit

@IBDesignable class Gradient_Viewer: UIView {

override func drawRect(rect: CGRect) {

    let background = Gradient()
    let context = UIGraphicsGetCurrentContext()
    let startPoint = CGPoint.zeroPoint
    let endPoint = CGPoint(x: 0, y: self.bounds.height)

    CGContextDrawLinearGradient(context, background.gradient, startPoint, endPoint, 0)

}

}

梯度生成是否有问题,还是我没有正确地访问梯度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-04 18:15:17

代码语言:javascript
复制
@IBDesignable class Gradient_Viewer: UIView {
    var random8bit: CGFloat {
        return CGFloat(arc4random_uniform(256))/255.0
    }
    var gradient: CGGradientRef {
        return CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [UIColor(red: random8bit, green: random8bit, blue: random8bit, alpha: 1.0).CGColor, UIColor(red: random8bit, green: random8bit, blue: random8bit, alpha: 1.0).CGColor], [0, 1.0])
    }
    override func drawRect(rect: CGRect) {
        CGContextDrawLinearGradient(UIGraphicsGetCurrentContext(), gradient, CGPoint.zeroPoint, CGPoint(x: 0, y: self.bounds.height), 0)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31222174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档