Swift3で描画処理の勉強をしています。
実現したい事はViewにグラデーションをつけたいという事です。
カスタムビューを作りグラデーションをつけようと思ったのですがうまく行きません。
実装途中ですが、今考えているコードを貼り付けます。
customview.swift
1 2import UIKit 3 4class CustomView: UIView { 5 6 var graphWidth :CGFloat 7 var graphHeight :CGFloat 8 9 override func draw(_ rect: CGRect) { 10 let context = UIGraphicsGetCurrentContext() 11 12 let startColor = UIColor.black //始点の色 13 let endColor = UIColor.darkGray //終点の色 14 let colors = [startColor,endColor] 15 let locations:[CGFloat] = [0.0 , 1.0] 16 let space = CGColorSpaceCreateDeviceRGB() 17 18 let gradient = CGGradient(colorsSpace: space, colors: colors as CFArray, locations: locations) 19 20 let startPoint = CGPoint.zero 21 let endPoints = CGPoint(x:0,y:self.bounds.height) 22 context?.drawLinearGradient(gradient!, start: startPoint, end: endPoints, options: .drawsBeforeStartLocation) 23 } 24} 25
ネットで検索したら、このような流れなのではないかと思うのですが、うまく行きません。
グラデーションの実装方法はどうやったらいいのでしょうか?
デバッグの情報を追記します。
エラーメッセージとして
「fatal error: unexpectedly found nil while unwrapping an Optional value」
が出ており、
context?.drawLinearGradient(gradient!, start: startPoint, end: endPoints, options: .drawsBeforeStartLocation)
の部分で入れているgradientがnilなのが原因のようです。
そもそも、こういうコーディングでいいのか?という部分もありますので
ご存知の方教えていただければと思います
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/15 08:52