iOS 界面字体回退系统原生 + iPad 适配 + 登录列宽
- 移除自定义 UI 字体,界面统一系统原生:删 BrandFonts.swift(Orbit/Maple woff2 运行期 CTFontManager 注册 + UIKit 外观代理)+ AppDelegate 的 register 调用 + CDropApp 全局 .environment(\.font, .oBody);9 视图 .font(.o语义) → .font(.语义) 系统语义(日志 LogView 消息行本就 .caption.monospaced() 原生等宽);删 Sources/Fonts/(Orbit/Maple woff2 ~20MB)。仅留品牌字标 Fredoka(logo Wordmark),Justfile ios-fonts 改 Fredoka-only、.gitignore 收窄、新增 Shared/Fonts/README.md - iPad 适配:RootView TabView 加 .tabViewStyle(.sidebarAdaptable)(iPad 常规宽度侧边栏 / iPhone 底部标签栏)+ ConversationView 消息线程 maxWidth 680 居中;project.yml 补方向键 UISupportedInterfaceOrientations(iPhone 竖 + 横)/ ~ipad(全 4 向),消除 iPad 多任务方向构建告警 - 登录页内容约束 maxWidth 420 居中,避免 iPad 宽屏主登录按钮 / 二维码区横向拉满(iPhone 不受影响) - 文档:ios/PLAN.md §11.2 改系统原生字体 + 新增 §13 iPad;ios/PARITY.md 字体分叉条目回退 + 导航条目加 iPad + 2026-07-07 漂移行 - 已装 iPhone 15 Pro C + iPad Pro 13" M4 双端、用户确认
This commit is contained in:
@@ -69,16 +69,16 @@ struct MessagesView: View
|
||||
HStack(spacing: 12)
|
||||
{
|
||||
Image(systemName: deviceSymbol(convo.deviceType))
|
||||
.font(.oTitle3)
|
||||
.font(.title3)
|
||||
.foregroundStyle(convo.online ? Color.green : Color.secondary)
|
||||
.frame(width: 28)
|
||||
VStack(alignment: .leading, spacing: 3)
|
||||
{
|
||||
Text(convo.peerName)
|
||||
.font(.oBody)
|
||||
.font(.body)
|
||||
.lineLimit(1)
|
||||
Text(previewText(convo))
|
||||
.font(.oCaption)
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
.lineLimit(1)
|
||||
}
|
||||
@@ -88,7 +88,7 @@ struct MessagesView: View
|
||||
if convo.lastAt > 0
|
||||
{
|
||||
Text(relativeTime(convo.lastAt))
|
||||
.font(.oCaption2)
|
||||
.font(.caption2)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
// 该设备未读红点(社交软件式逐设备计数);消息 tab 徽标=各设备未读总和(engine.unreadMessages)。
|
||||
@@ -96,7 +96,7 @@ struct MessagesView: View
|
||||
if unread > 0
|
||||
{
|
||||
Text("\(unread)")
|
||||
.font(.oCaption2)
|
||||
.font(.caption2)
|
||||
.fontWeight(.bold)
|
||||
.foregroundStyle(.white)
|
||||
.padding(.horizontal, 7)
|
||||
@@ -159,6 +159,9 @@ struct ConversationView: View
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
// iPad:把气泡列约束到可读宽度并居中,避免在宽内容区里横向拉满(呼应 iMessage)。
|
||||
.frame(maxWidth: 680)
|
||||
.frame(maxWidth: .infinity)
|
||||
}
|
||||
.onChange(of: thread.count) { scrollToLast(proxy) }
|
||||
.onAppear { scrollToLast(proxy) }
|
||||
@@ -213,7 +216,7 @@ struct ConversationView: View
|
||||
.submitLabel(.send)
|
||||
.onSubmit { send() }
|
||||
Button { send() }
|
||||
label: { Image(systemName: "paperplane.fill").font(.oTitle3) }
|
||||
label: { Image(systemName: "paperplane.fill").font(.title3) }
|
||||
.disabled(draft.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty)
|
||||
}
|
||||
.padding()
|
||||
@@ -222,7 +225,7 @@ struct ConversationView: View
|
||||
else
|
||||
{
|
||||
Text(t("ios.messages.viewOnly"))
|
||||
.font(.oCaption)
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding()
|
||||
|
||||
Reference in New Issue
Block a user