swiftui 为我们提供了各种梯度选项,所有这些选项都可以通过多种方式使用。
gradient 渐变器
a color gradient represented as an array of color stops, each having a parametric location value.
gradient是一组颜色的合集,每个颜色都忽略位置参数
lineargradient 线性渐变器
线性渐变器拥有沿轴进行渐变函数,我们可以自定义设置颜色空间、起点和终点。
下面我们看看lineargradient效果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import swiftui struct lineview: view { var gradient: gradient { let stops: [gradient.stop] = [ .init(color: .red, location: 0.5), .init(color: .yellow, location: 0.5) ] return gradient(stops: stops) } var body: some view { zstack { lineargradient(gradient: gradient, startpoint: .top, endpoint: .trailing) .edgesignoringsafearea(.all) image( "1" ) .resizable() .aspectratio(contentmode: .fit) .clipshape(circle()) .overlay(circle() .stroke(linewidth: 8) .foregroundcolor(.white)) .frame(width: 250) text( "洛神赋图" ) .padding() .foregroundcolor(.white) .cornerradius(8) .background(lineargradient(gradient: gradient(colors: [.white, .black]), startpoint: .top, endpoint: .bottom)) .offset(y:-280) } } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import swiftui struct linegradient3color: view { var body: some view { zstack { lineargradient(gradient: gradient( colors: [.blue, .white, .pink]), startpoint: .topleading, endpoint: .bottomtrailing) .edgesignoringsafearea(.all) image( "2" ) .resizable() .aspectratio(contentmode: .fit) .clipshape(circle()) .overlay(circle() .stroke(linewidth: 8) .foregroundcolor(.white)) .frame(width: 250) text( "清明上河图" ) .padding() .foregroundcolor(.white) .cornerradius(8) .background(lineargradient(gradient: gradient( colors: [.yellow, .red]), startpoint: .topleading, endpoint: .bottomtrailing)) .offset(y:-180) } } } |
radial gradient 径向渐变
在径向渐变中,我们必须指定起始半径点,端半径点与中心点,从径向渐变开变.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import swiftui struct radialview: view { var body: some view { zstack { radialgradient(gradient: gradient( colors: [.blue, .black]), center: .center, startradius: 2, endradius: 650) .edgesignoringsafearea(.all) image( "3" ) .resizable() .aspectratio(contentmode: .fit) .clipshape(circle()) .overlay(circle() .stroke(linewidth: 8) .foregroundcolor(.white)) .frame(width: 250) text( "富春山居图" ) .padding() .foregroundcolor(.white) .cornerradius(8) .background( radialgradient(gradient: gradient( colors: [.yellow, .red]), center: .center, startradius: 2, endradius: 60)) .offset(y:-180) } } } |
angular gradient
在角渐变中,我们只需要通过中心点。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import swiftui struct angularview: view { var body: some view { zstack { angulargradient(gradient: gradient( colors: [.green, .blue, .black, .green, .blue, .black, .green]), center: .center) .edgesignoringsafearea(.all) image( "4" ) .resizable() .aspectratio(contentmode: .fit) .clipshape(circle()) .overlay(circle() .stroke(linewidth: 8) .foregroundcolor(.white)) .frame(width: 250) text( "汉宫春晓图" ) .padding() .foregroundcolor(.white) .cornerradius(8) .background( radialgradient(gradient: gradient( colors: [.yellow, .red]), center: .center, startradius: 2, endradius: 60)) .offset(y:-180) } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000021780657