teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記

2016/11/15 08:40

投稿

Robokun
Robokun

スコア53

title CHANGED
File without changes
body CHANGED
@@ -33,4 +33,14 @@
33
33
  ```
34
34
 
35
35
  ネットで検索したら、このような流れなのではないかと思うのですが、うまく行きません。
36
- グラデーションの実装方法はどうやったらいいのでしょうか?
36
+ グラデーションの実装方法はどうやったらいいのでしょうか?
37
+
38
+ デバッグの情報を追記します。
39
+ エラーメッセージとして
40
+ 「fatal error: unexpectedly found nil while unwrapping an Optional value」
41
+ が出ており、
42
+ context?.drawLinearGradient(gradient!, start: startPoint, end: endPoints, options: .drawsBeforeStartLocation)
43
+ の部分で入れているgradientがnilなのが原因のようです。
44
+
45
+ そもそも、こういうコーディングでいいのか?という部分もありますので
46
+ ご存知の方教えていただければと思います

1

コードの修正

2016/11/15 08:40

投稿

Robokun
Robokun

スコア53

title CHANGED
File without changes
body CHANGED
@@ -14,20 +14,19 @@
14
14
  var graphHeight :CGFloat
15
15
 
16
16
  override func draw(_ rect: CGRect) {
17
- //描画領域を取得
18
- graphWidth = rect.width
19
- graphHeight = rect.height
20
-
21
17
  let context = UIGraphicsGetCurrentContext()
22
18
 
23
19
  let startColor = UIColor.black //始点の色
24
20
  let endColor = UIColor.darkGray //終点の色
25
21
  let colors = [startColor,endColor]
26
- let locations = [0.0 , 1.0]
22
+ let locations:[CGFloat] = [0.0 , 1.0]
27
23
  let space = CGColorSpaceCreateDeviceRGB()
24
+
28
25
  let gradient = CGGradient(colorsSpace: space, colors: colors as CFArray, locations: locations)
29
26
 
27
+ let startPoint = CGPoint.zero
28
+ let endPoints = CGPoint(x:0,y:self.bounds.height)
30
- context?.drawLinearGradient(gradient:gradient, start: <#T##CGPoint#>, end: <#T##CGPoint#>, options: <#T##CGGradientDrawingOptions#>)
29
+ context?.drawLinearGradient(gradient!, start: startPoint, end: endPoints, options: .drawsBeforeStartLocation)
31
30
  }
32
31
  }
33
32