Files
ios/Xuxucheck/XuXuCheck/navigation/NavigationBar.swift
T
admin d6aeede2bc 导入 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。
2026-09-23 14:17:31 +08:00

87 lines
3.0 KiB
Swift

//
// NavigationBar.swift
// qlick
//
// Created by Brian Mwangi on 08/07/2022.
//
import SwiftUI
struct NavigationBar: View {
var title: String = ""
@Binding var hasScrolled: Bool
@Environment(LoginStatus.self) var loginStatus
@State var isLoginModalPresented = false
var body: some View {
ZStack {
Color.clear
.background(.ultraThinMaterial)
.blur(radius: 10)
.opacity(hasScrolled ? 0 : 1)
if(loginStatus.isLogin){
Text(Storage.shared.member_name)
.animatableFont(size: hasScrolled ? 22: 34, weight: .bold)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.leading, 20)
.padding(.top, 20)
HStack {
//AsyncImage
CachedAsyncImage(url: URL(string: API.imageUrl + Storage.shared.member_avatar)) { image in
image
.resizable()
.frame(width: 26, height: 26)
.cornerRadius(10)
.padding(8)
.background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 18, style: .continuous))
.strokeStyle(cornerRadius: 18)
} placeholder: {
ZStack {
Color.secondary.opacity(0.25)
Image(systemName: "person")
.imageScale(.large)
.blendMode(.overlay)
}
}
.clipped()
}
.frame(maxWidth: .infinity, alignment: .trailing)
.padding(.trailing, 20)
.padding(.top, 20)
.offset(y: hasScrolled ? -4 : 0)
}else{
Text("Sign In")
.animatableFont(size: hasScrolled ? 22: 34, weight: .bold)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.leading, 20)
.padding(.top, 20)
.onTapGesture {
if(!loginStatus.isLogin){
isLoginModalPresented = true
}
}
.fullScreenCover(isPresented: $isLoginModalPresented){//sheet
if(!loginStatus.isLogin){
LoginView()
}
}
}
}
.frame(height: hasScrolled ? 44 : 70)
.frame(maxHeight: .infinity, alignment: .top)
}
}
struct NavigationBar_Previews: PreviewProvider {
static var previews: some View {
NavigationBar(title: "Featured", hasScrolled: .constant(false))
}
}