├── .DS_Store
├── .gitattributes
├── AlipayDemo
├── Assets.xcassets
│ ├── Contents.json
│ ├── AlipayICON
│ │ ├── Contents.json
│ │ ├── q.imageset
│ │ │ ├── Frame 6.png
│ │ │ └── Contents.json
│ │ ├── aa.imageset
│ │ │ ├── Frame 4.png
│ │ │ └── Contents.json
│ │ ├── tag.imageset
│ │ │ ├── Frame 3.png
│ │ │ └── Contents.json
│ │ ├── phone.imageset
│ │ │ ├── Frame 1.png
│ │ │ └── Contents.json
│ │ ├── message.imageset
│ │ │ ├── Frame 5.png
│ │ │ └── Contents.json
│ │ ├── ali_search.imageset
│ │ │ ├── Frame 2.png
│ │ │ └── Contents.json
│ │ └── AlipayDemoTopImage.imageset
│ │ │ ├── AlipayDemoTopImage.png
│ │ │ └── Contents.json
│ ├── Chunxiang.imageset
│ │ ├── IMG_4445.jpeg
│ │ └── Contents.json
│ ├── WechatBottomBar.imageset
│ │ ├── WechatBottomBar.png
│ │ └── Contents.json
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── AlifontBlack.colorset
│ │ └── Contents.json
│ ├── AlipayBlue.colorset
│ │ └── Contents.json
│ ├── AlipayGray.colorset
│ │ └── Contents.json
│ └── AlipayToggle.colorset
│ │ └── Contents.json
├── Font
│ └── Alibaba Sans Medium.otf
├── Preview Content
│ └── Preview Assets.xcassets
│ │ └── Contents.json
├── AlipayDemoApp.swift
├── Info.plist
├── SystemUIView.swift
├── Test
│ ├── ImageDemo.swift
│ └── AnimationTest.swift
├── ContentView.swift
├── Ex.swift
├── WechatDemo.swift
└── AlipayDemoView.swift
├── AlipayDemo.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcuserdata
│ │ └── zhaoxiangyu.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
├── xcuserdata
│ └── zhaoxiangyu.xcuserdatad
│ │ ├── xcschemes
│ │ └── xcschememanagement.plist
│ │ └── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
└── project.pbxproj
├── InputView.swift
└── Code.swift
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/.DS_Store
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/AlipayDemo/Font/Alibaba Sans Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Font/Alibaba Sans Medium.otf
--------------------------------------------------------------------------------
/AlipayDemo/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/q.imageset/Frame 6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/AlipayICON/q.imageset/Frame 6.png
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/Chunxiang.imageset/IMG_4445.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/Chunxiang.imageset/IMG_4445.jpeg
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/aa.imageset/Frame 4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/AlipayICON/aa.imageset/Frame 4.png
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/tag.imageset/Frame 3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/AlipayICON/tag.imageset/Frame 3.png
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/phone.imageset/Frame 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/AlipayICON/phone.imageset/Frame 1.png
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/message.imageset/Frame 5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/AlipayICON/message.imageset/Frame 5.png
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/ali_search.imageset/Frame 2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/AlipayICON/ali_search.imageset/Frame 2.png
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/WechatBottomBar.imageset/WechatBottomBar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/WechatBottomBar.imageset/WechatBottomBar.png
--------------------------------------------------------------------------------
/AlipayDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/AlipayDemoTopImage.imageset/AlipayDemoTopImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo/Assets.xcassets/AlipayICON/AlipayDemoTopImage.imageset/AlipayDemoTopImage.png
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/AlipayDemo.xcodeproj/project.xcworkspace/xcuserdata/zhaoxiangyu.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liseami/ChunxiangClassCode/HEAD/AlipayDemo.xcodeproj/project.xcworkspace/xcuserdata/zhaoxiangyu.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/AlipayDemo/AlipayDemoApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AlipayDemoApp.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/11.
6 | //
7 |
8 | import SwiftUI
9 |
10 | @main
11 | struct AlipayDemoApp: App {
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/AlipayDemo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIAppFonts
6 |
7 | Alibaba Sans Medium.otf
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/q.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Frame 6.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/Chunxiang.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "IMG_4445.jpeg",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/aa.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Frame 4.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/phone.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Frame 1.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/tag.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Frame 3.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/ali_search.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Frame 2.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/message.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Frame 5.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/WechatBottomBar.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "WechatBottomBar.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayICON/AlipayDemoTopImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "AlipayDemoTopImage.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/AlipayDemo.xcodeproj/xcuserdata/zhaoxiangyu.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | AlipayDemo.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/AlipayDemo.xcodeproj/xcuserdata/zhaoxiangyu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
9 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "idiom" : "universal",
16 | "platform" : "ios",
17 | "size" : "1024x1024"
18 | },
19 | {
20 | "appearances" : [
21 | {
22 | "appearance" : "luminosity",
23 | "value" : "tinted"
24 | }
25 | ],
26 | "idiom" : "universal",
27 | "platform" : "ios",
28 | "size" : "1024x1024"
29 | }
30 | ],
31 | "info" : {
32 | "author" : "xcode",
33 | "version" : 1
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/AlipayDemo/SystemUIView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SystemUIView.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct SystemUIView: View {
11 | var body: some View {
12 | VStack(alignment: .center, spacing: 12) {
13 | Text("Text")
14 | Text("Text")
15 |
16 | Text("Image")
17 | Image("")
18 |
19 | Text("Divider")
20 | Divider()
21 |
22 | Text("Toggle")
23 | Toggle(isOn: .constant(true)) {
24 |
25 | }
26 |
27 | Text("ColorPicker")
28 | ColorPicker("颜色选择器", selection: .constant(.red))
29 | }
30 | }
31 | }
32 |
33 | #Preview {
34 | SystemUIView()
35 | }
36 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlifontBlack.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.200",
9 | "green" : "0.200",
10 | "red" : "0.200"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "1.000",
27 | "green" : "1.000",
28 | "red" : "1.000"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayBlue.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.498",
9 | "green" : "0.235",
10 | "red" : "0.043"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "1.000",
27 | "green" : "1.000",
28 | "red" : "1.000"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayGray.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.961",
9 | "green" : "0.961",
10 | "red" : "0.961"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "1.000",
27 | "green" : "1.000",
28 | "red" : "1.000"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/AlipayDemo/Assets.xcassets/AlipayToggle.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.984",
9 | "green" : "0.463",
10 | "red" : "0.086"
11 | }
12 | },
13 | "idiom" : "universal"
14 | },
15 | {
16 | "appearances" : [
17 | {
18 | "appearance" : "luminosity",
19 | "value" : "dark"
20 | }
21 | ],
22 | "color" : {
23 | "color-space" : "srgb",
24 | "components" : {
25 | "alpha" : "1.000",
26 | "blue" : "1.000",
27 | "green" : "1.000",
28 | "red" : "1.000"
29 | }
30 | },
31 | "idiom" : "universal"
32 | }
33 | ],
34 | "info" : {
35 | "author" : "xcode",
36 | "version" : 1
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/AlipayDemo/Test/ImageDemo.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ImageDemo.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/13.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ImageDemo: View {
11 | var body: some View {
12 |
13 | VStack(alignment: .center, spacing: 80) {
14 | Image("Chunxiang")
15 | // 基础图片调整
16 | .resizable()
17 | .scaledToFill()
18 | .frame(width: 250, height: 250, alignment: .center)
19 | .clipped()
20 | // 形状与边框效果
21 | .clipShape(Circle())
22 | Image(systemName: "bolt.heart.fill")
23 | // 基础图片调整
24 | .resizable()
25 | .scaledToFit()
26 | .frame(width: 24, height: 24, alignment: .center)
27 | .clipped()
28 |
29 | }
30 |
31 |
32 | }
33 | }
34 |
35 | #Preview {
36 | ImageDemo()
37 | }
38 |
--------------------------------------------------------------------------------
/AlipayDemo/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/11.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct ContentView: View {
11 |
12 |
13 | var body: some View{
14 | NavigationView {
15 | VStack(alignment: .center, spacing: 24) {
16 | Text("纯想百宝箱")
17 | .font(.largeTitle)
18 | NavigationLink("系统控件一览") {
19 | SystemUIView()
20 | .navigationBarBackButtonHidden()
21 | }
22 | NavigationLink("支付宝付款记录生成器") {
23 | AlipayDemoView()
24 | .navigationBarBackButtonHidden()
25 | }
26 | NavigationLink("微信聊天记录生成器") {
27 | WechatDemo()
28 | .navigationBarBackButtonHidden()
29 | }
30 | }
31 | }
32 | }
33 |
34 | }
35 |
36 | #Preview {
37 | ContentView()
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/AlipayDemo/Ex.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Ex.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | extension Date {
11 | var dateString: String {
12 | let formatter = DateFormatter()
13 | formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
14 | return formatter.string(from: self)
15 | }
16 | }
17 |
18 | extension Color {
19 | /// 使用十六进制字符串初始化 Color
20 | /// - Parameter hex: 十六进制颜色字符串,支持 "FFFFFF" 或 "#FFFFFF" 格式
21 | init(hex: String) {
22 | let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
23 | var int: UInt64 = 0
24 |
25 | Scanner(string: hex).scanHexInt64(&int)
26 | let r, g, b: Double
27 |
28 | switch hex.count {
29 | case 3: // RGB (12-bit)
30 | r = Double((int >> 8) & 0xF) / 15.0
31 | g = Double((int >> 4) & 0xF) / 15.0
32 | b = Double(int & 0xF) / 15.0
33 | case 6: // RGB (24-bit)
34 | r = Double((int >> 16) & 0xFF) / 255.0
35 | g = Double((int >> 8) & 0xFF) / 255.0
36 | b = Double(int & 0xFF) / 255.0
37 | default:
38 | r = 0
39 | g = 0
40 | b = 0
41 | }
42 |
43 | self.init(red: r, green: g, blue: b)
44 | }
45 |
46 | // 常用颜色静态属性
47 | static let background = Color(hex: "EDEDED")
48 | static let customGray = Color(hex: "#EDEDED") // 带 # 也可以
49 | }
50 |
--------------------------------------------------------------------------------
/InputView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AmontInputView.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/13.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct InputView: View {
11 |
12 | @Binding var amountIntput : String
13 | @Binding var nameInput : String
14 | @Binding var isOpenSheet : Bool
15 | @Binding var date : Date
16 | var body: some View {
17 | VStack(alignment: .leading, spacing: 12) {
18 | Text("请输入你想要的金额")
19 | TextField("输入金额", text: $amountIntput)
20 | .multilineTextAlignment(.center)
21 | .font(.title2)
22 | .textFieldStyle(.roundedBorder)
23 | Text("请输入你想要的名字")
24 | TextField("输入名字", text: $nameInput)
25 | .multilineTextAlignment(.center)
26 | .font(.title2)
27 | .textFieldStyle(.roundedBorder)
28 |
29 | DatePicker("日期选择", selection: $date, displayedComponents: .date)
30 | DatePicker("日期选择", selection: $date, displayedComponents: .hourAndMinute)
31 | .datePickerStyle(.wheel)
32 | Spacer()
33 | Button {
34 | // 关闭这个sheet
35 | isOpenSheet = false
36 | } label: {
37 | Text("确认")
38 | }
39 | .buttonStyle(.bordered)
40 |
41 | }
42 | .padding()
43 |
44 |
45 |
46 | }
47 | }
48 |
49 | #Preview {
50 | InputView(amountIntput: .constant("1000.00"), nameInput: .constant("金巧巧"), isOpenSheet: .constant(true),date: .constant(.now))
51 | }
52 |
--------------------------------------------------------------------------------
/Code.swift:
--------------------------------------------------------------------------------
1 | //// 原始 SwiftUI 代码
2 | //struct ContentView: View {
3 | // var body: some View {
4 | // Text("Hello")
5 | // }
6 | //}
7 | //
8 | //// 编译后的ARM64机器码示例(十六进制表示)
9 | //// 注意:这是简化的示例,实际机器码会更复杂
10 | //
11 | //0x0000: FF 83 00 D1 // SUB SP, SP, #0x30 ; 调整栈指针
12 | //0x0004: FD 7B 01 A9 // STP x29, x30, [SP, #16] ; 保存帧指针和返回地址
13 | //0x0008: FD 43 00 91 // ADD x29, SP, #16 ; 设置新的帧指针
14 | //0x000C: BF C3 1F B8 // STUR wzr, [x29, #-4] ; 初始化局部变量
15 | //0x0010: A0 83 1F F8 // STUR x0, [x29, #-8] ; 存储self参数
16 | //0x0014: E1 0F 00 94 // BL _swift_allocObject ; 分配View对象内存
17 | //0x0018: E0 03 00 AA // MOV x0, x0 ; 移动对象引用
18 | //0x001C: 21 00 80 52 // MOV w1, #1 ; 设置参数
19 | //0x0020: 02 01 80 52 // MOV w2, #8 ; 设置参数
20 | //0x0024: E3 03 00 AA // MOV x3, x0 ; 准备方法调用
21 | //0x0028: E4 03 40 F9 // LDR x4, [sp, #0] ; 加载字符串地址
22 | //0x002C: 00 00 00 94 // BL _setText ; 调用setText方法
23 | //0x0030: FD 7B 41 A9 // LDP x29, x30, [SP, #16] ; 恢复帧指针和返回地址
24 | //0x0034: FF 83 00 91 // ADD SP, SP, #0x30 ; 恢复栈指针
25 | //0x0038: C0 03 5F D6 // RET ; 返回
26 | //
27 | //// 数据段
28 | //0x1000: 48 65 6C 6C // "Hell" ; Text字符串的ASCII码
29 | //0x1004: 6F 00 00 00 // "o\0" ; 字符串结束符
30 |
31 |
32 | //0x0000: 11110111 10000011 00000000 11010001 (FF 83 00 D1) // SUB SP, SP, #0x30 ; 调整栈指针
33 | // [操作码] [目标寄存器] [源寄存器] [立即数]
34 | //
35 | //0x0004: 11111101 01111011 00000001 10101001 (FD 7B 01 A9) // STP x29, x30, [SP, #16] ; 保存帧指针和返回地址
36 | // [操作码] [寄存器对] [基址寄存器] [偏移量]
37 | //
38 | //0x0008: 11111101 01000011 00000000 10010001 (FD 43 00 91) // ADD x29, SP, #16 ; 设置新的帧指针
39 | // [操作码] [目标寄存器] [源寄存器] [立即数]
40 | //
41 | //0x000C: 10111111 11000011 00011111 10111000 (BF C3 1F B8) // STUR wzr, [x29, #-4] ; 初始化局部变量
42 | // [操作码] [源寄存器] [基址寄存器] [偏移量]
43 |
--------------------------------------------------------------------------------
/AlipayDemo/Test/AnimationTest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AnimationTest.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/14.
6 | //
7 |
8 | import SwiftUI
9 |
10 | // Bool ? 参数 :参数
11 |
12 | struct AnimationTest: View {
13 | @State var doIt : Bool = false
14 | var body: some View {
15 | VStack(alignment: .center, spacing: 29) {
16 | Spacer()
17 | Circle()
18 | .foregroundColor(doIt ? .yellow : .orange)
19 | .frame(width: doIt ? 100 : 80, height: doIt ? 100 : 80)
20 | .scaleEffect(doIt ? 4 : 1)
21 | .rotationEffect(.degrees(doIt ? 360 : 0))
22 | .shadow(
23 | color: doIt ? .red.opacity(0.8) : .clear,
24 | radius: doIt ? 24 : 0,
25 | x: doIt ? 10 : 0,
26 | y: doIt ? 10 : 0
27 | )
28 | .blur(radius: doIt ? 120 : 0)
29 | .offset(
30 | x: doIt ? CGFloat.random(in: -100...100) : 0,
31 | y: doIt ? -200 : 0
32 | )
33 | .opacity(doIt ? 0.8 : 1)
34 | .brightness(doIt ? 0.2 : 0)
35 | .animation(
36 | .spring(
37 | response: doIt ? 0.8 : 0.4,
38 | dampingFraction: doIt ? 0.6 : 0.8,
39 | blendDuration: 0.5
40 | ),
41 | value: doIt
42 | )
43 | .transition(
44 | .asymmetric(
45 | insertion: .scale(scale: doIt ? 4 : 1)
46 | .combined(with: .opacity)
47 | .combined(with: .slide),
48 | removal: .scale(scale: doIt ? 0.1 : 1)
49 | .combined(with: .opacity)
50 | )
51 | )
52 | Spacer()
53 | Button("动一下") {
54 | withAnimation {
55 | if doIt {
56 | doIt = false
57 | }else {
58 | doIt = true
59 | }
60 | }
61 | }
62 | .buttonStyle(.borderedProminent)
63 | }
64 | }
65 | }
66 |
67 | #Preview {
68 | AnimationTest()
69 | }
70 |
--------------------------------------------------------------------------------
/AlipayDemo/WechatDemo.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WechatDemo.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct WechatDemo: View {
11 | @Environment(\.dismiss) var dismiss
12 |
13 | struct Message {
14 | var text: String
15 | var isMine: Bool
16 | var isTrans: Bool = false
17 | var amount : Double = 299
18 | var isTime : Bool = false
19 | var timeStr : String = ""
20 | }
21 |
22 | var messages: [Message] = [Message(text: "咱们现在周末还有课吗?", isMine: false),
23 | Message(text: "有的", isMine: true),
24 | Message(text: "好的,299是吧,直接转给你么", isMine: false),
25 | Message(text: "是的", isMine: true),
26 | Message(text: "转账299", isMine: false, isTrans: true),
27 | Message(text: "收款299", isMine: true, isTrans: true),
28 | Message(text: "怎么看回放?", isMine: false),
29 | Message(text: "入帐后发你", isMine: true)]
30 | var body: some View {
31 | VStack(alignment: .center, spacing: 0) {
32 | navigationBar
33 |
34 | ScrollView {
35 | VStack(alignment: .center, spacing: 24) {
36 | ForEach(messages, id: \.text) { message in
37 | text(message)
38 | }
39 | }
40 | .padding()
41 | }
42 |
43 | Spacer()
44 | Image("WechatBottomBar")
45 | .resizable()
46 | .scaledToFit()
47 | .frame(maxWidth: UIScreen.main.bounds.width)
48 | // .frame(height: 53)
49 | }
50 | .ignoresSafeArea(.all, edges: .bottom)
51 | .background(Color(hex: "EDEDED"))
52 | }
53 |
54 | func text(_ message : Message) -> some View {
55 | HStack(alignment: .top,spacing:16){
56 | if message.isMine{
57 | Spacer()
58 | }else{
59 | RoundedRectangle(cornerRadius: 8)
60 | .foregroundColor(.gray.opacity(0.6))
61 | .frame(width: 44, height: 44, alignment: .center)
62 | }
63 | if message.isTrans{
64 | transMessage(message)
65 | }else{
66 | Text(message.text)
67 | .padding(.horizontal)
68 | .padding(.vertical,13)
69 | .background(message.isMine ? Color(hex: "95EC69") : .white)
70 | .clipShape(RoundedRectangle(cornerRadius: 6))
71 | .overlay(alignment: message.isMine ? .trailing : .leading) {
72 | RoundedRectangle(cornerRadius: 3)
73 | .frame(width: 10, height: 10, alignment: .center)
74 | .foregroundColor(message.isMine ? Color(hex: "95EC69") : .white)
75 | .rotationEffect(.degrees(45))
76 | .offset(x: message.isMine ? 5 : -5)
77 | }
78 | }
79 |
80 | if message.isMine{
81 | RoundedRectangle(cornerRadius: 8)
82 | .foregroundColor(.gray.opacity(0.6))
83 | .frame(width: 44, height: 44, alignment: .center)
84 | }else{
85 | Spacer()
86 |
87 | }
88 | }
89 | }
90 |
91 | func transMessage(_ message : Message) -> some View {
92 |
93 | VStack(alignment: .leading){
94 | Spacer()
95 | HStack{
96 | Image(systemName: "checkmark.circle")
97 | .font(.largeTitle)
98 | VStack(alignment: .leading,spacing: 4){
99 | Text("¥\(String.init(format: "%.2f", message.amount))")
100 | .font(.subheadline)
101 | .bold()
102 | Text(message.isMine ? "已收款" : "已被接受")
103 | .font(.caption2)
104 | .bold()
105 | }
106 | Spacer()
107 | }
108 | Rectangle().frame( height: 0.5, alignment: .center)
109 | .foregroundColor(.white)
110 | .opacity(0.3)
111 | Text("微信转账")
112 | .font(.caption2)
113 | }
114 | .padding(.bottom,6)
115 | .foregroundColor(.white)
116 | .padding(.horizontal)
117 | .frame(width: 234, height: 80, alignment: .center)
118 | .background(RoundedRectangle(cornerRadius: 4)
119 | .foregroundColor(.init(hex: "FA9D3B")))
120 | .overlay(alignment: message.isMine ? .topTrailing : .topLeading) {
121 | RoundedRectangle(cornerRadius: 3)
122 | .frame(width: 10, height: 10, alignment: .center)
123 | .foregroundColor(Color(hex: "FA9D3B"))
124 | .rotationEffect(.degrees(45))
125 | .offset(x: message.isMine ? 5 : -5)
126 | .padding(.top,13)
127 | }
128 |
129 |
130 |
131 | }
132 |
133 | var navigationBar: some View {
134 | VStack(alignment: .center, spacing: 12) {
135 | HStack {
136 | Image(systemName: "chevron.down")
137 | .font(.title2)
138 | .foregroundStyle(.black)
139 | .rotationEffect(.init(degrees: 90))
140 | .onTapGesture {
141 | dismiss()
142 | }
143 | Spacer()
144 | Image(systemName: "ellipsis")
145 | .font(.title2)
146 | .foregroundStyle(.black)
147 | .onTapGesture {
148 | dismiss()
149 | }
150 | }
151 | .padding(.horizontal)
152 | .overlay {
153 | Text("某某某")
154 | .font(Font.title3)
155 | .bold()
156 | }
157 | Rectangle()
158 | .foregroundColor(Color(hex: "D5D5D5"))
159 | .frame(height: 1)
160 | }
161 | .padding(.top, 12)
162 | }
163 | }
164 |
165 | #Preview {
166 | WechatDemo()
167 | }
168 |
--------------------------------------------------------------------------------
/AlipayDemo/AlipayDemoView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AlipayDemoView.swift
3 | // AlipayDemo
4 | //
5 | // Created by 赵翔宇 on 2024/11/15.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct AlipayDemoView: View {
11 |
12 | @Environment(\.dismiss) var dismiss
13 | @State var amount : Float = 0.0
14 | @State var amountIntput : String = "1000.00"
15 | @State var nameInput : String = "**巧(个人)"
16 | @State var toggleBool : Bool = true
17 | @State var isOpenSheet : Bool = false
18 | @State var date : Date = .now
19 | @State var showMore = false
20 |
21 | var body: some View {
22 |
23 | ZStack {
24 | // 背景色
25 | backGroundColor()
26 | VStack {
27 | // 标题栏
28 | navigationBar
29 | .padding(.bottom)
30 | Group{
31 | // 卡片1
32 | card_1
33 | // 当我点击卡片时
34 | .onTapGesture {
35 | amount = amount + 100
36 | }
37 | // 卡片2
38 | card_2
39 |
40 | }
41 | .offset(y:24)
42 | }
43 | .padding()
44 | }
45 | .fullScreenCover(isPresented: $isOpenSheet) {
46 | InputView(amountIntput: $amountIntput, nameInput: $nameInput, isOpenSheet: $isOpenSheet, date: $date)
47 | }
48 | }
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | // 金额Text
58 | var amontText : some View {
59 |
60 | Text(String(format: "%.2f", Float(amountIntput) ?? 0.3))
61 | .font(.custom("Alibaba Sans Medium", size: 44))
62 | .bold()
63 | .foregroundColor(Color("AlifontBlack"))
64 | .onTapGesture {
65 | isOpenSheet = true
66 | }
67 | }
68 |
69 |
70 | func backGroundColor() -> some View {
71 | Color(String("AlipayGray"))
72 | .ignoresSafeArea()
73 | }
74 |
75 | var navigationBar: some View {
76 | HStack {
77 | Image(systemName: "chevron.down")
78 | .font(.title2)
79 | .foregroundStyle(.black)
80 | .rotationEffect(.init(degrees: 90))
81 | .onTapGesture {
82 | dismiss()
83 | }
84 | Spacer()
85 | Text("全部账单")
86 | }
87 | .overlay {
88 | Text("账单详情")
89 | .font(Font.title3)
90 | .bold()
91 | }
92 | }
93 |
94 | var card_1: some View {
95 | let title1 = "支付时间"
96 | let title2 = "付款方式"
97 |
98 | return VStack(alignment: .center, spacing: CGFloat(32)) {
99 | VStack(alignment: .center, spacing: -2) {
100 | // - 1
101 | Text("笑")
102 | // 金额
103 | amontText
104 | Text("交易成功")
105 | .foregroundColor(Color("AlifontBlack"))
106 | }
107 |
108 | // **************************
109 | VStack(alignment: .center, spacing: 20) {
110 | HStack {
111 | Text(title1)
112 | .foregroundStyle(.secondary)
113 | .frame(width: 100, alignment: Alignment.leading)
114 | Text(date.dateString)
115 | Spacer()
116 | }
117 | HStack {
118 | Text(title2)
119 | .foregroundStyle(.secondary)
120 | .frame(width: 100, alignment: Alignment.leading)
121 | Text("余额宝")
122 | Spacer()
123 | }
124 |
125 | HStack {
126 | Text("商品说明")
127 | .foregroundStyle(.secondary)
128 | .frame(width: 100, alignment: Alignment.leading)
129 | Text("收钱码收款")
130 | Spacer()
131 | }
132 | HStack {
133 | Text("收款方全称")
134 | .foregroundStyle(.secondary)
135 | .frame(width: 100, alignment: Alignment.leading)
136 | TextField("输入收款方全称", text: $nameInput)
137 | Spacer()
138 | }
139 |
140 | if showMore {
141 | Circle()
142 | .foregroundColor(.yellow)
143 | .frame(width: 80, height: 80, alignment: .center)
144 | .transition(.scale(scale: 3).combined(with: .opacity))
145 | }
146 |
147 | Button {
148 | withAnimation {
149 | showMore.toggle()
150 | }
151 | } label: {
152 | HStack {
153 | Text(showMore ? "收起" : "更多")
154 | .font(.subheadline)
155 | .foregroundStyle(.secondary)
156 |
157 | Image(systemName: "chevron.down")
158 | .font(.caption2)
159 | .foregroundStyle(.secondary)
160 | .rotationEffect(.degrees( showMore ? -180 : 0))
161 | }
162 | }
163 |
164 |
165 | }
166 | .foregroundColor(Color("AlifontBlack"))
167 |
168 | // **************************
169 | }
170 | .padding()
171 | .padding(.top)
172 | .background(Color.white)
173 | .cornerRadius(12)
174 | .overlay(alignment: .top) {
175 | Image("AlipayDemoTopImage")
176 | .resizable()
177 | .frame(width: 40, height: 40, alignment: .center)
178 | .offset(x: 0, y: -20)
179 | }
180 | }
181 |
182 | var card_2: some View {
183 | VStack(alignment: .center, spacing: 20) {
184 | HStack {
185 | Text("账单管理")
186 | .bold()
187 | .font(.title3)
188 | Spacer()
189 | }
190 |
191 | HStack {
192 | Text("账单分类")
193 | Spacer()
194 | Text("生活服务")
195 | .foregroundStyle(.secondary)
196 | Image(systemName: "chevron.down")
197 | .font(.caption2)
198 | .foregroundStyle(.secondary)
199 | .rotationEffect(.init(degrees: -90))
200 | }
201 | HStack {
202 | Text("标签和备注")
203 | Spacer()
204 | Text("添加")
205 | .foregroundStyle(.secondary)
206 | Image(systemName: "chevron.down")
207 | .font(.caption2)
208 | .foregroundStyle(.secondary)
209 | .rotationEffect(.init(degrees: -90))
210 | }
211 | HStack {
212 | Text("计入收支")
213 | Toggle(isOn:$toggleBool) {}
214 | .tint(Color("AlipayToggle"))
215 | .scaleEffect(0.733, anchor: .trailing)
216 | }
217 |
218 | Divider()
219 | // **************************
220 |
221 | VStack(alignment: .center, spacing: 20) {
222 | HStack {
223 | blueRow(iamgeName: "phone", text: "联系收款方")
224 | Spacer()
225 | blueRow(iamgeName: "ali_search", text: "查看往来记录")
226 |
227 | Spacer()
228 | }
229 |
230 | HStack {
231 | blueRow(iamgeName: "aa", text: "AA收款")
232 |
233 | Spacer()
234 | blueRow(iamgeName: "tag", text: "往来流水证明")
235 |
236 | Spacer()
237 | }
238 | HStack {
239 | blueRow(iamgeName: "message", text: "申请电子回单")
240 |
241 | Spacer()
242 | blueRow(iamgeName: "q", text: "对此订单有疑问")
243 |
244 | Spacer()
245 | }
246 | }
247 | .foregroundColor(Color("AlipayBlue"))
248 | }
249 | .foregroundColor(Color("AlifontBlack"))
250 | .padding()
251 | .background(Color.white)
252 | .cornerRadius(8)
253 | }
254 |
255 | func blueRow(iamgeName : String,text:String) -> some View {
256 | HStack(alignment: .center, spacing: 8) {
257 | Image(iamgeName)
258 | .resizable()
259 | .frame(width: 22, height: 22, alignment: .center)
260 | Text(text)
261 | }
262 | .frame(width:UIScreen.main.bounds.width / 2 - 48,alignment: .leading)
263 | }
264 |
265 | }
266 |
267 | #Preview {
268 | AlipayDemoView()
269 | }
270 |
--------------------------------------------------------------------------------
/AlipayDemo.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 77;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | A2B0331A2CE2217D00A06994 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A2B033142CE2217D00A06994 /* Preview Assets.xcassets */; };
11 | A2B0331B2CE2217D00A06994 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A2B033172CE2217D00A06994 /* Assets.xcassets */; };
12 | A2B0331C2CE2217D00A06994 /* AlipayDemoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033162CE2217D00A06994 /* AlipayDemoApp.swift */; };
13 | A2B0331D2CE2217D00A06994 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033182CE2217D00A06994 /* ContentView.swift */; };
14 | A2B0331F2CE2FED700A06994 /* Alibaba Sans Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = A2B0331E2CE2FED700A06994 /* Alibaba Sans Medium.otf */; };
15 | A2B033242CE476E000A06994 /* ImageDemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033232CE476E000A06994 /* ImageDemo.swift */; };
16 | A2B033262CE4A4BC00A06994 /* InputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033252CE4A4BC00A06994 /* InputView.swift */; };
17 | A2B0339B2CE5A97A00A06994 /* Code.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B0339A2CE5A97A00A06994 /* Code.swift */; };
18 | A2B0339F2CE5BE1400A06994 /* AnimationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B0339E2CE5BE1400A06994 /* AnimationTest.swift */; };
19 | A2B033F82CE6F12800A06994 /* AlipayDemoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033F72CE6F12800A06994 /* AlipayDemoView.swift */; };
20 | A2B033FA2CE6F15400A06994 /* Ex.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033F92CE6F15400A06994 /* Ex.swift */; };
21 | A2B033FC2CE6F38B00A06994 /* SystemUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033FB2CE6F38B00A06994 /* SystemUIView.swift */; };
22 | A2B033FE2CE6F41200A06994 /* WechatDemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B033FD2CE6F41200A06994 /* WechatDemo.swift */; };
23 | /* End PBXBuildFile section */
24 |
25 | /* Begin PBXFileReference section */
26 | A2B033032CE2217400A06994 /* AlipayDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AlipayDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
27 | A2B033142CE2217D00A06994 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
28 | A2B033162CE2217D00A06994 /* AlipayDemoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlipayDemoApp.swift; sourceTree = ""; };
29 | A2B033172CE2217D00A06994 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
30 | A2B033182CE2217D00A06994 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
31 | A2B0331E2CE2FED700A06994 /* Alibaba Sans Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Alibaba Sans Medium.otf"; sourceTree = ""; };
32 | A2B033202CE2FEF000A06994 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
33 | A2B033232CE476E000A06994 /* ImageDemo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageDemo.swift; sourceTree = ""; };
34 | A2B033252CE4A4BC00A06994 /* InputView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputView.swift; sourceTree = ""; };
35 | A2B0339A2CE5A97A00A06994 /* Code.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Code.swift; sourceTree = ""; };
36 | A2B0339E2CE5BE1400A06994 /* AnimationTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationTest.swift; sourceTree = ""; };
37 | A2B033F72CE6F12800A06994 /* AlipayDemoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlipayDemoView.swift; sourceTree = ""; };
38 | A2B033F92CE6F15400A06994 /* Ex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Ex.swift; sourceTree = ""; };
39 | A2B033FB2CE6F38B00A06994 /* SystemUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemUIView.swift; sourceTree = ""; };
40 | A2B033FD2CE6F41200A06994 /* WechatDemo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WechatDemo.swift; sourceTree = ""; };
41 | /* End PBXFileReference section */
42 |
43 | /* Begin PBXFrameworksBuildPhase section */
44 | A2B033002CE2217400A06994 /* Frameworks */ = {
45 | isa = PBXFrameworksBuildPhase;
46 | buildActionMask = 2147483647;
47 | files = (
48 | );
49 | runOnlyForDeploymentPostprocessing = 0;
50 | };
51 | /* End PBXFrameworksBuildPhase section */
52 |
53 | /* Begin PBXGroup section */
54 | A2B032FA2CE2217400A06994 = {
55 | isa = PBXGroup;
56 | children = (
57 | A2B0339A2CE5A97A00A06994 /* Code.swift */,
58 | A2B033252CE4A4BC00A06994 /* InputView.swift */,
59 | A2B033192CE2217D00A06994 /* AlipayDemo */,
60 | A2B033042CE2217400A06994 /* Products */,
61 | );
62 | sourceTree = "";
63 | };
64 | A2B033042CE2217400A06994 /* Products */ = {
65 | isa = PBXGroup;
66 | children = (
67 | A2B033032CE2217400A06994 /* AlipayDemo.app */,
68 | );
69 | name = Products;
70 | sourceTree = "";
71 | };
72 | A2B033152CE2217D00A06994 /* Preview Content */ = {
73 | isa = PBXGroup;
74 | children = (
75 | A2B033142CE2217D00A06994 /* Preview Assets.xcassets */,
76 | );
77 | path = "Preview Content";
78 | sourceTree = "";
79 | };
80 | A2B033192CE2217D00A06994 /* AlipayDemo */ = {
81 | isa = PBXGroup;
82 | children = (
83 | A2B033202CE2FEF000A06994 /* Info.plist */,
84 | A2B033162CE2217D00A06994 /* AlipayDemoApp.swift */,
85 | A2B033172CE2217D00A06994 /* Assets.xcassets */,
86 | A2B033182CE2217D00A06994 /* ContentView.swift */,
87 | A2B033FD2CE6F41200A06994 /* WechatDemo.swift */,
88 | A2B033FB2CE6F38B00A06994 /* SystemUIView.swift */,
89 | A2B033F72CE6F12800A06994 /* AlipayDemoView.swift */,
90 | A2B033F92CE6F15400A06994 /* Ex.swift */,
91 | A2B033F62CE6F0FD00A06994 /* Test */,
92 | A2B033F52CE6F0E900A06994 /* Font */,
93 | A2B033152CE2217D00A06994 /* Preview Content */,
94 | );
95 | path = AlipayDemo;
96 | sourceTree = "";
97 | };
98 | A2B033F52CE6F0E900A06994 /* Font */ = {
99 | isa = PBXGroup;
100 | children = (
101 | A2B0331E2CE2FED700A06994 /* Alibaba Sans Medium.otf */,
102 | );
103 | path = Font;
104 | sourceTree = "";
105 | };
106 | A2B033F62CE6F0FD00A06994 /* Test */ = {
107 | isa = PBXGroup;
108 | children = (
109 | A2B0339E2CE5BE1400A06994 /* AnimationTest.swift */,
110 | A2B033232CE476E000A06994 /* ImageDemo.swift */,
111 | );
112 | path = Test;
113 | sourceTree = "";
114 | };
115 | /* End PBXGroup section */
116 |
117 | /* Begin PBXNativeTarget section */
118 | A2B033022CE2217400A06994 /* AlipayDemo */ = {
119 | isa = PBXNativeTarget;
120 | buildConfigurationList = A2B033112CE2217500A06994 /* Build configuration list for PBXNativeTarget "AlipayDemo" */;
121 | buildPhases = (
122 | A2B032FF2CE2217400A06994 /* Sources */,
123 | A2B033002CE2217400A06994 /* Frameworks */,
124 | A2B033012CE2217400A06994 /* Resources */,
125 | );
126 | buildRules = (
127 | );
128 | dependencies = (
129 | );
130 | name = AlipayDemo;
131 | packageProductDependencies = (
132 | );
133 | productName = AlipayDemo;
134 | productReference = A2B033032CE2217400A06994 /* AlipayDemo.app */;
135 | productType = "com.apple.product-type.application";
136 | };
137 | /* End PBXNativeTarget section */
138 |
139 | /* Begin PBXProject section */
140 | A2B032FB2CE2217400A06994 /* Project object */ = {
141 | isa = PBXProject;
142 | attributes = {
143 | BuildIndependentTargetsInParallel = 1;
144 | LastSwiftUpdateCheck = 1600;
145 | LastUpgradeCheck = 1600;
146 | TargetAttributes = {
147 | A2B033022CE2217400A06994 = {
148 | CreatedOnToolsVersion = 16.0;
149 | };
150 | };
151 | };
152 | buildConfigurationList = A2B032FE2CE2217400A06994 /* Build configuration list for PBXProject "AlipayDemo" */;
153 | developmentRegion = en;
154 | hasScannedForEncodings = 0;
155 | knownRegions = (
156 | en,
157 | Base,
158 | );
159 | mainGroup = A2B032FA2CE2217400A06994;
160 | minimizedProjectReferenceProxies = 1;
161 | preferredProjectObjectVersion = 77;
162 | productRefGroup = A2B033042CE2217400A06994 /* Products */;
163 | projectDirPath = "";
164 | projectRoot = "";
165 | targets = (
166 | A2B033022CE2217400A06994 /* AlipayDemo */,
167 | );
168 | };
169 | /* End PBXProject section */
170 |
171 | /* Begin PBXResourcesBuildPhase section */
172 | A2B033012CE2217400A06994 /* Resources */ = {
173 | isa = PBXResourcesBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | A2B0331A2CE2217D00A06994 /* Preview Assets.xcassets in Resources */,
177 | A2B0331B2CE2217D00A06994 /* Assets.xcassets in Resources */,
178 | A2B0331F2CE2FED700A06994 /* Alibaba Sans Medium.otf in Resources */,
179 | );
180 | runOnlyForDeploymentPostprocessing = 0;
181 | };
182 | /* End PBXResourcesBuildPhase section */
183 |
184 | /* Begin PBXSourcesBuildPhase section */
185 | A2B032FF2CE2217400A06994 /* Sources */ = {
186 | isa = PBXSourcesBuildPhase;
187 | buildActionMask = 2147483647;
188 | files = (
189 | A2B033FC2CE6F38B00A06994 /* SystemUIView.swift in Sources */,
190 | A2B033FA2CE6F15400A06994 /* Ex.swift in Sources */,
191 | A2B033FE2CE6F41200A06994 /* WechatDemo.swift in Sources */,
192 | A2B0331C2CE2217D00A06994 /* AlipayDemoApp.swift in Sources */,
193 | A2B033262CE4A4BC00A06994 /* InputView.swift in Sources */,
194 | A2B0339F2CE5BE1400A06994 /* AnimationTest.swift in Sources */,
195 | A2B0331D2CE2217D00A06994 /* ContentView.swift in Sources */,
196 | A2B033242CE476E000A06994 /* ImageDemo.swift in Sources */,
197 | A2B0339B2CE5A97A00A06994 /* Code.swift in Sources */,
198 | A2B033F82CE6F12800A06994 /* AlipayDemoView.swift in Sources */,
199 | );
200 | runOnlyForDeploymentPostprocessing = 0;
201 | };
202 | /* End PBXSourcesBuildPhase section */
203 |
204 | /* Begin XCBuildConfiguration section */
205 | A2B0330F2CE2217500A06994 /* Debug */ = {
206 | isa = XCBuildConfiguration;
207 | buildSettings = {
208 | ALWAYS_SEARCH_USER_PATHS = NO;
209 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
210 | CLANG_ANALYZER_NONNULL = YES;
211 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
212 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
213 | CLANG_ENABLE_MODULES = YES;
214 | CLANG_ENABLE_OBJC_ARC = YES;
215 | CLANG_ENABLE_OBJC_WEAK = YES;
216 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
217 | CLANG_WARN_BOOL_CONVERSION = YES;
218 | CLANG_WARN_COMMA = YES;
219 | CLANG_WARN_CONSTANT_CONVERSION = YES;
220 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
221 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
222 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
223 | CLANG_WARN_EMPTY_BODY = YES;
224 | CLANG_WARN_ENUM_CONVERSION = YES;
225 | CLANG_WARN_INFINITE_RECURSION = YES;
226 | CLANG_WARN_INT_CONVERSION = YES;
227 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
228 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
229 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
230 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
231 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
232 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
233 | CLANG_WARN_STRICT_PROTOTYPES = YES;
234 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
235 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
236 | CLANG_WARN_UNREACHABLE_CODE = YES;
237 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
238 | COPY_PHASE_STRIP = NO;
239 | DEBUG_INFORMATION_FORMAT = dwarf;
240 | ENABLE_STRICT_OBJC_MSGSEND = YES;
241 | ENABLE_TESTABILITY = YES;
242 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
243 | GCC_C_LANGUAGE_STANDARD = gnu17;
244 | GCC_DYNAMIC_NO_PIC = NO;
245 | GCC_NO_COMMON_BLOCKS = YES;
246 | GCC_OPTIMIZATION_LEVEL = 0;
247 | GCC_PREPROCESSOR_DEFINITIONS = (
248 | "DEBUG=1",
249 | "$(inherited)",
250 | );
251 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
252 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
253 | GCC_WARN_UNDECLARED_SELECTOR = YES;
254 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
255 | GCC_WARN_UNUSED_FUNCTION = YES;
256 | GCC_WARN_UNUSED_VARIABLE = YES;
257 | IPHONEOS_DEPLOYMENT_TARGET = 18.0;
258 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
259 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
260 | MTL_FAST_MATH = YES;
261 | ONLY_ACTIVE_ARCH = YES;
262 | SDKROOT = iphoneos;
263 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
264 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
265 | };
266 | name = Debug;
267 | };
268 | A2B033102CE2217500A06994 /* Release */ = {
269 | isa = XCBuildConfiguration;
270 | buildSettings = {
271 | ALWAYS_SEARCH_USER_PATHS = NO;
272 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
273 | CLANG_ANALYZER_NONNULL = YES;
274 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
275 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
276 | CLANG_ENABLE_MODULES = YES;
277 | CLANG_ENABLE_OBJC_ARC = YES;
278 | CLANG_ENABLE_OBJC_WEAK = YES;
279 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
280 | CLANG_WARN_BOOL_CONVERSION = YES;
281 | CLANG_WARN_COMMA = YES;
282 | CLANG_WARN_CONSTANT_CONVERSION = YES;
283 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
284 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
285 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
286 | CLANG_WARN_EMPTY_BODY = YES;
287 | CLANG_WARN_ENUM_CONVERSION = YES;
288 | CLANG_WARN_INFINITE_RECURSION = YES;
289 | CLANG_WARN_INT_CONVERSION = YES;
290 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
291 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
292 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
293 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
294 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
295 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
296 | CLANG_WARN_STRICT_PROTOTYPES = YES;
297 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
298 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
299 | CLANG_WARN_UNREACHABLE_CODE = YES;
300 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
301 | COPY_PHASE_STRIP = NO;
302 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
303 | ENABLE_NS_ASSERTIONS = NO;
304 | ENABLE_STRICT_OBJC_MSGSEND = YES;
305 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
306 | GCC_C_LANGUAGE_STANDARD = gnu17;
307 | GCC_NO_COMMON_BLOCKS = YES;
308 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
309 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
310 | GCC_WARN_UNDECLARED_SELECTOR = YES;
311 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
312 | GCC_WARN_UNUSED_FUNCTION = YES;
313 | GCC_WARN_UNUSED_VARIABLE = YES;
314 | IPHONEOS_DEPLOYMENT_TARGET = 18.0;
315 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
316 | MTL_ENABLE_DEBUG_INFO = NO;
317 | MTL_FAST_MATH = YES;
318 | SDKROOT = iphoneos;
319 | SWIFT_COMPILATION_MODE = wholemodule;
320 | VALIDATE_PRODUCT = YES;
321 | };
322 | name = Release;
323 | };
324 | A2B033122CE2217500A06994 /* Debug */ = {
325 | isa = XCBuildConfiguration;
326 | buildSettings = {
327 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
328 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
329 | CODE_SIGN_STYLE = Automatic;
330 | CURRENT_PROJECT_VERSION = 1;
331 | DEVELOPMENT_ASSET_PATHS = "\"AlipayDemo/Preview Content\"";
332 | DEVELOPMENT_TEAM = 6UB6WM6VQR;
333 | ENABLE_PREVIEWS = YES;
334 | GENERATE_INFOPLIST_FILE = YES;
335 | INFOPLIST_FILE = AlipayDemo/Info.plist;
336 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
337 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
338 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
339 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
340 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
341 | LD_RUNPATH_SEARCH_PATHS = (
342 | "$(inherited)",
343 | "@executable_path/Frameworks",
344 | );
345 | MARKETING_VERSION = 1.0;
346 | PRODUCT_BUNDLE_IDENTIFIER = com.fantasy.AlipayDemo;
347 | PRODUCT_NAME = "$(TARGET_NAME)";
348 | SWIFT_EMIT_LOC_STRINGS = YES;
349 | SWIFT_VERSION = 5.0;
350 | TARGETED_DEVICE_FAMILY = "1,2";
351 | };
352 | name = Debug;
353 | };
354 | A2B033132CE2217500A06994 /* Release */ = {
355 | isa = XCBuildConfiguration;
356 | buildSettings = {
357 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
358 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
359 | CODE_SIGN_STYLE = Automatic;
360 | CURRENT_PROJECT_VERSION = 1;
361 | DEVELOPMENT_ASSET_PATHS = "\"AlipayDemo/Preview Content\"";
362 | DEVELOPMENT_TEAM = 6UB6WM6VQR;
363 | ENABLE_PREVIEWS = YES;
364 | GENERATE_INFOPLIST_FILE = YES;
365 | INFOPLIST_FILE = AlipayDemo/Info.plist;
366 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
367 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
368 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
369 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
370 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
371 | LD_RUNPATH_SEARCH_PATHS = (
372 | "$(inherited)",
373 | "@executable_path/Frameworks",
374 | );
375 | MARKETING_VERSION = 1.0;
376 | PRODUCT_BUNDLE_IDENTIFIER = com.fantasy.AlipayDemo;
377 | PRODUCT_NAME = "$(TARGET_NAME)";
378 | SWIFT_EMIT_LOC_STRINGS = YES;
379 | SWIFT_VERSION = 5.0;
380 | TARGETED_DEVICE_FAMILY = "1,2";
381 | };
382 | name = Release;
383 | };
384 | /* End XCBuildConfiguration section */
385 |
386 | /* Begin XCConfigurationList section */
387 | A2B032FE2CE2217400A06994 /* Build configuration list for PBXProject "AlipayDemo" */ = {
388 | isa = XCConfigurationList;
389 | buildConfigurations = (
390 | A2B0330F2CE2217500A06994 /* Debug */,
391 | A2B033102CE2217500A06994 /* Release */,
392 | );
393 | defaultConfigurationIsVisible = 0;
394 | defaultConfigurationName = Release;
395 | };
396 | A2B033112CE2217500A06994 /* Build configuration list for PBXNativeTarget "AlipayDemo" */ = {
397 | isa = XCConfigurationList;
398 | buildConfigurations = (
399 | A2B033122CE2217500A06994 /* Debug */,
400 | A2B033132CE2217500A06994 /* Release */,
401 | );
402 | defaultConfigurationIsVisible = 0;
403 | defaultConfigurationName = Release;
404 | };
405 | /* End XCConfigurationList section */
406 | };
407 | rootObject = A2B032FB2CE2217400A06994 /* Project object */;
408 | }
409 |
--------------------------------------------------------------------------------