导入 XuXuCheck 工程(iOS 干化学尿液试纸分析 App)

从桌面工程复制而来,作为本仓库的 Xuxucheck/ 子目录。

为控制仓库体积做了两处删减:
- 移除 Frameworks/opencv2.xcframework 下的两个 visionOS 切片
  (xros-arm64、xros-arm64-simulator,合计约 106 MB),并同步删掉该
  xcframework 内 Info.plist 里对应的两条 AvailableLibraries 记录,
  只保留 ios-arm64 与 ios-arm64_x86_64-simulator。
- 移除全部 .DS_Store 与 xcuserdata/。

已用 xcodebuild 从本目录完整编译验证:BUILD SUCCEEDED,
ProcessXCFramework 以 --platform ios 成功选中框架,产物含 3699 个 cv:: 符号
(OpenCV 确实链入),嵌入 framework 3 个,与移除无用 pod 之后的状态一致。

仓库约 206 MB,其中 OpenCV 203 MB、其余源码与依赖约 3 MB。
This commit is contained in:
2026-09-23 14:17:31 +08:00
commit d6aeede2bc
901 changed files with 327267 additions and 0 deletions
@@ -0,0 +1,31 @@
//
// AnimatableText.swift
// qlick
//
// Created by Brian Mwangi on 08/07/2022.
//
import SwiftUI
struct AnimatableFontModifier: AnimatableModifier {
var size: Double
var weight: Font.Weight = .regular
var design: Font.Design = .default
var animatableData: Double {
get { size }
set { size = newValue }
}
func body(content: Content) -> some View {
content
.font(.system(size: size, weight: weight, design: design))
}
}
extension View {
func animatableFont(size: Double, weight: Font.Weight = .regular, design: Font.Design = .default) -> some View {
self.modifier(AnimatableFontModifier(size: size, weight: weight, design: design))
}
}
@@ -0,0 +1,13 @@
//
// Animations.swift
// qlick
//
// Created by Brian Mwangi on 08/07/2022.
//
import SwiftUI
extension Animation {
static let openCard = Animation.spring(response: 0.5, dampingFraction: 0.7)
static let closeCard = Animation.spring(response: 0.6, dampingFraction: 0.9)
}
+41
View File
@@ -0,0 +1,41 @@
//
// Styles.swift
// XuXuCheck
//
// Created by henseycai on 2025/6/11.
//
import SwiftUI
struct MyStrokeStyle: ViewModifier {
var cornerRadius: CGFloat
@Environment(\.colorScheme) var colorScheme
func body(content: Content) -> some View {
content
.overlay(
RoundedRectangle(
cornerRadius: cornerRadius,
style: .continuous
)
.stroke(
.linearGradient(
colors: [
.white.opacity(colorScheme == .dark ? 0.3 : 0.3),
.black.opacity(colorScheme == .dark ? 0.3 : 0.1)
],
startPoint: .top,
endPoint: .bottom
)
)
.blendMode(.overlay)
)
}
}
extension View {
func strokeStyle(cornerRadius: CGFloat = 30) -> some View {
modifier(MyStrokeStyle(cornerRadius: cornerRadius))
}
}