Ariver
2026-05-18 24d94e230985f815c02dd808319fd3b00bc26864
Center tag settings layout
4 files modified
56 ■■■■ changed files
Apptag/Info.plist 4 ●●●● patch | view | raw | blame | history
Apptag/PreferencesView.swift 1 ●●●● patch | view | raw | blame | history
Apptag/TagEditorView.swift 45 ●●●● patch | view | raw | blame | history
CHANGELOG.md 6 ●●●●● patch | view | raw | blame | history
Apptag/Info.plist
@@ -19,9 +19,9 @@
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>7.3.1</string>
    <string>7.3.2</string>
    <key>CFBundleVersion</key>
    <string>740</string>
    <string>741</string>
    <key>LSMinimumSystemVersion</key>
    <string>15.0</string>
    <key>NSHighResolutionCapable</key>
Apptag/PreferencesView.swift
@@ -484,7 +484,6 @@
                    onRefresh: { scanApps() }
                )
            }
            .padding(.leading, 16)
            .tabItem { Label(tr("settings.tags"), systemImage: "tag.fill") }
            .onAppear { scanApps() }
Apptag/TagEditorView.swift
@@ -15,6 +15,9 @@
    @State private var newTagNameText = ""
    @State private var newTagColorIndex = 0
    private let contentMaxWidth: CGFloat = 980
    private let contentHorizontalPadding: CGFloat = 34
    private var sortedTagNames: [String] {
        let order = TagEditor.orderedTagNames()
        let filtered = tagColors.keys.filter { !excludedTagNames.contains($0) }
@@ -38,9 +41,14 @@
                }
                .buttonStyle(.bordered)
            }
            .padding(.horizontal, 16).padding(.vertical, 8)
            .frame(maxWidth: contentMaxWidth)
            .padding(.horizontal, contentHorizontalPadding)
            .padding(.vertical, 8)
            Divider().opacity(0.3)
            Divider()
                .opacity(0.3)
                .frame(maxWidth: contentMaxWidth)
                .padding(.horizontal, contentHorizontalPadding)
            ScrollView {
                VStack(spacing: 0) {
@@ -52,15 +60,25 @@
                    }
                    if addingNewTag {
                        newTagRow()
                        Divider().opacity(0.15).padding(.leading, 16)
                        rowDivider
                    }
                    ForEach(sortedTagNames, id: \.self) { tagName in
                        tagEditRow(tagName)
                        Divider().opacity(0.15).padding(.leading, 16)
                        rowDivider
                    }
                }
                .frame(maxWidth: contentMaxWidth)
                .padding(.horizontal, contentHorizontalPadding)
                .frame(maxWidth: .infinity, alignment: .center)
            }
        }
        .frame(maxWidth: .infinity, alignment: .center)
    }
    private var rowDivider: some View {
        Divider()
            .opacity(0.15)
            .frame(maxWidth: contentMaxWidth)
    }
    // MARK: - Tag Row
@@ -84,13 +102,18 @@
                    placeholder: tr("tag.name"),
                    onSubmit: { commitTagRename(tagName) }
                )
                .frame(width: 160, height: 24)
                .frame(minWidth: 220, maxWidth: .infinity, minHeight: 24, maxHeight: 24)
                Button(tr("tag.save")) { commitTagRename(tagName) }
                    .buttonStyle(.borderedProminent).controlSize(.small)
                Button(tr("tag.cancel")) { editingTagName = nil }
                    .buttonStyle(.plain).foregroundStyle(.secondary)
            } else {
                Text(tagName).font(.system(size: 14)).frame(width: 160, alignment: .leading)
                Text(tagName)
                    .font(.system(size: 14))
                    .lineLimit(1)
                    .truncationMode(.middle)
                    .frame(minWidth: 220, maxWidth: .infinity, alignment: .leading)
                    .help(tagName)
                Button { startRename(tagName) } label: {
                    Image(systemName: "pencil").font(.system(size: 11))
                }
@@ -100,9 +123,9 @@
                }
                .buttonStyle(.plain).foregroundStyle(.red)
            }
            Spacer()
        }
        .padding(.horizontal, 20).padding(.vertical, 10)
        .frame(maxWidth: .infinity, alignment: .leading)
        .padding(.vertical, 10)
    }
    // MARK: - New Tag Row
@@ -121,14 +144,14 @@
                placeholder: tr("tag.newName"),
                onSubmit: { addNewTag() }
            )
            .frame(width: 160, height: 24)
            .frame(minWidth: 220, maxWidth: .infinity, minHeight: 24, maxHeight: 24)
            Button(tr("tag.add")) { addNewTag() }
                .buttonStyle(.borderedProminent).controlSize(.small)
            Button(tr("tag.cancel")) { addingNewTag = false; newTagNameText = "" }
                .buttonStyle(.plain).foregroundStyle(.secondary)
            Spacer()
        }
        .padding(.horizontal, 20).padding(.vertical, 10)
        .frame(maxWidth: .infinity, alignment: .leading)
        .padding(.vertical, 10)
    }
    // MARK: - Actions
CHANGELOG.md
@@ -1,5 +1,11 @@
# Apptag Changelog
## [7.3.2] — 2026-05-18
- 优化设置页「标签」界面布局,将标签列表内容区整体居中,避免左侧拥挤、右侧大面积留白
- 标签名称区域改为自适应占用剩余空间,长标签名使用中间截断并保留悬停提示,兼顾不同语言长度
- 版本号更新为 `7.3.2`,Build 更新为 `741`
## [7.3.1] — 2026-05-18
- 将拖动 App 到「未分类」时的确认提示从系统弹窗改为应用列表内部浮层,视觉样式与现有确认反馈保持一致