├── .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 | --------------------------------------------------------------------------------