【发布时间】:2015-07-04 15:15:25
【问题描述】:
我正在编写一个生成随机渐变并使用自定义UIView 类将它们显示在屏幕上的应用。因为我对应用程序有更多的计划功能,所以我选择为渐变提供自己的类。生成渐变的代码在这里:
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()
}
}
显示渐变的渐变查看器类如下:
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)
}
}
渐变生成有什么问题,还是我没有正确访问渐变?
【问题讨论】:
-
你遇到了什么问题?
-
我生成的渐变不会显示在视图中。这只是一个白屏。
-
看来我需要一个从 0 到 1 而不是从 0 到 255 的随机 CGFloat。我会试试的。
-
我很高兴你把它整理好了。您应该将其添加为答案,以便您接受它。
标签: ios swift core-graphics gradient