基于 Apple Human Interface Guidelines (2026),覆盖所有 Apple 平台的设计规范。
平台默认最小iOS/iPadOS17pt11ptmacOS13pt10pttvOS29pt23ptvisionOS17pt12pt
#007AFF (Blue) — iOS/macOS 默认强调色
最小 44×44pt(Apple HIG 规定)
Filled Button → Tinted Button → Gray Button → Borderless Button
#1C1C1E(不是纯黑 #000000)
Monochrome → Hierarchical → Palette → Multicolor
元素边距/间距备注屏幕边缘16ptiOS 标准组件间距8pt8pt 网格列表 Cell 高度44pt触摸目标导航栏高度44pt标准TabBar 高度49ptiPhone
错误做法正确做法❌ Dark Mode 用纯黑 #000000✅ 用 #1C1C1E(Apple HIG 规定)❌ macOS 使用 Dynamic Type✅ macOS 不支持,仅 iOS/iPadOS 支持❌ 用红绿组合传达信息✅ 用蓝色+图标辅助,色盲友好❌ visionOS 使用 3D 文字✅ 用 billboarding + 2D 文字❌ 触摸目标小于 44×44pt✅ 最小 44×44pt❌ 超链接用绿/蓝色组合✅ 用统一蓝色 #007AFF❌ SearchBar 不提供清除按钮✅ 右滑显示 Clear 按钮❌ Toggle 标签用 On/Off✅ 用描述性标签如"深色模式"
平台主要模式iOS多任务 + 手势导航macOS多窗口 + 菜单栏tvOS焦点驱动 + 远程watchOS表盘 + 复杂功能visionOS空间计算 + 手眼协作
用途iOS/macOStvOSwatchOS正文SF ProSF ProSF Pro标题SF Pro DisplaySF Pro DisplaySF Pro Rounded手写SF Pro Text—SF Pro Rounded等宽SF MonoSF MonoSF Mono
级别中文基准英文基准应用xSmall13pt13pt辅助文字Small15pt15pt次要信息Body17pt17pt正文Lead22pt20pt副标题Title28pt22pt标题xTitle34pt28pt大标题xxTitle40pt34pt超大标题
text
主标题 (Title) ————————— 28pt Bold
副标题 (Headline) ————— 17pt Semibold
正文 (Body) ——————————— 17pt Regular
说明 (Caption) ———————— 12pt Regular
辅助 (Footnote) ——————— 13pt Regular
用途iOSmacOS主要文字labellabelColor次要文字secondaryLabelsecondaryLabelColor主色tints/tintColorcontrolAccentColor背景systemBackgroundwindowBackgroundColor分组背景systemGroupedBackgroundcontrolBackgroundColor强调色systemBlue (#007AFF)systemBlue
类别数量示例UI 图标150+chevron, plus, xmark多媒体100+play, pause, speaker通信80+message, phone, mail物体200+book, car, house天气50+sun, cloud, rain
模式效果适用场景Monochrome单一颜色默认图标Hierarchical单色分层透明度visionOS 强调Palette最多 3 色自定义主题Multicolor固有色装饰性图标
功能SF Symbol返回chevron.left关闭xmark菜单line.3.horizontal分享square.and.arrow.up收藏heart / heart.fill设置gear搜索magnifyingglass刷新arrow.clockwise删除trash编辑pencil添加plus相机camera照片photo地图map定位location
text
┌─────────────────────────────────┐
│ Leading Title Trailing │
│ Icon Primary Secondary Image │
│ Subtitle │
└─────────────────────────────────┘
类型样式用途Alert模态重要信息/确认Action Sheet底部弹出多选项Toast自动消失轻量反馈DialogmacOS确认/输入
类型要求VoiceOver所有元素可朗读Dynamic Type支持所有字体级别对比度文字 4.5:1 / 大字 3:1触摸目标最小 44×44ptReduce Motion尊重系统设置
UINavigationController — 分层导航UITabBarController — 底部切换UITableView / UICollectionView — 列表/网格UISegmentedControl — 分段选择UISwitch — 开关控制UIAlertController — 警告框设计原则
原则说明简洁性一屏只做一件事层级清晰信息优先级分明颜色鲜明对比度足够字体足够大远距离可读
字号层级
用途字号说明大标题54pt屏幕标题标题38pt分类标题副标题29pt列表项标题正文24pt描述文字Caption19pt辅助说明
tvOS 独有的交互模型:用户用 Siri Remote 选择元素,焦点自动跟随。
焦点状态
状态视觉变化Unfocused正常大小,100% 透明度Focused放大 1.1x,阴影加深,透明度 100%Highlighted按下时的反馈色
焦点导航规则
规范值屏幕分辨率1920×1080 / 3840×2160安全区域上下左右各 90pt水平边距96pt列表项高度120ptTab Bar 高度96pt
焦点元素通过阴影表达深度:
swift
// 焦点元素阴影
Text("Focused Item")
.shadow(color: .black.opacity(0.5), radius: 20, x: 0, y: 10)
// 未聚焦元素阴影
Text("Unfocused Item")
.shadow(color: .black.opacity(0.3), radius: 8, x: 0, y: 4)
组件tvOS 控件说明导航TabBar底部标签切换列表List水平滚动 Banner/Collection详情Detail大图+描述+操作菜单Menu弹出操作菜单
swift
import SwiftUI
import TVUIKit
struct ContentView: View {
var body: some View {
TabView {
HomeView()
.tabItem { Label("首页", systemImage: "house") }
SearchView()
.tabItem { Label("搜索", systemImage: "magnifyingglass") }
}
}
}
// 焦点状态
struct FocusableCard: View {
@State private var isFocused = false
var body: some View {
VStack {
Image("poster")
.resizable()
.aspectRatio(16/9, contentMode: .fit)
Text("Title")
.font(.title2)
}
.scaleEffect(isFocused ? 1.1 : 1.0)
.animation(.easeInOut(duration: 0.2), value: isFocused)
.focusable()
.onFocusChange { focused in
isFocused = focused
}
}
}
swift
import UIKit
import TVUIKit
class CatalogViewController: UIViewController {
private var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
setupCollectionView()
}
private func setupCollectionView() {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.itemSize = CGSize(width: 400, height: 225)
layout.minimumLineSpacing = 40
collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(CatalogCell.self, forCellWithReuseIdentifier: "Cell")
// 焦点行为
collectionView.remembersFocused = true
}
}
// UICollectionViewDelegateFocus
extension CatalogViewController: UICollectionViewDelegateFocus {
func collectionView(_ collectionView: UICollectionView, didUpdateFocusIn context: UICollectionViewFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
if let indexPath = context.nextFocusedIndexPath {
coordinator.addCoordinatedAnimations {
// 焦点动画
}
}
}
}
错误做法正确做法❌ 小字体✅ 最小 19pt Caption❌ 密集布局✅ 每屏一个主题❌ 触摸交互✅ 远程/语音/手势❌ Hover 效果✅ 焦点自动跟随❌ 复杂导航✅ 最多两层深度❌ 窄边框✅ 安全区域各 90pt
1. 简洁性(Reduce)
2. 上下文感知(Context)
3. 实时性(Timely)
规范要求屏幕尺寸40mm/44mm/45mm/46mm基准字号14pt(Body)最小字号10pt(Caption)触控目标最小 44×44pt边距12pt(水平)Corner Radius约 36pt(贴合屏幕)
text
┌─────────────────────────┐
│ Status Bar │ 18pt
├─────────────────────────┤
│ │
│ 通知内容 │ 主区域
│ (Long-Look) │
│ │
├─────────────────────────┤
│ Quick Actions │ 56pt
└─────────────────────────┘
类型色值用途强调色#FF9500主要操作成功色#34C759健康数据警告色#FF3B30警报背景#000000表盘背景
组件说明WatchFace表盘(Modular/Analog/...)WatchWindow全屏窗口Alert通知展开视图Menu快捷操作菜单Picker滚轮选择器
模式操作反馈Tap点击按钮Haptic ClickSwipe上下滑动Haptic ScrollLong Press长按编辑Haptic TapDigital Crown旋转滚动Haptic TickSide Button侧边按钮Haptic Impact
swift
// 基础页面
struct ContentView: View {
var body: some View {
VStack {
Text("心率")
.font(.caption)
Text("72")
.font(.largeTitle)
.foregroundColor(.green)
}
}
}
// 列表导航
struct ListView: View {
var body: some View {
List {
ForEach(items) { item in
NavigationLink(destination: DetailView(item: item)) {
Text(item.name)
}
}
}
}
}
// Picker 滚轮
Picker("选择", selection: $selected) {
Text("选项1").tag(0)
Text("选项2").tag(1)
}
.pickerStyle(.wheel)
swift
import WatchKit
class InterfaceController: WKInterfaceController {
@IBOutlet weak var label: WKInterfaceLabel!
override func awake(withContext context: Any?) {
super.awake(withContext: context)
label.setText("Hello Apple Watch")
}
@IBAction func buttonTapped() {
WKInterfaceDevice.current().play(.click)
}
}
错误做法正确做法❌ 多列布局✅ 单列垂直滚动❌ 长文本列表✅ 精简内容,异步加载❌ 复杂手势✅ 点击+滚轮即可❌ 忽略续航✅ 减少后台刷新❌ 与手机相同布局✅ 专为小屏重设计
类型用途时长曲线系统动画UI 状态变化250-400mseaseInOut导航动画页面切换350-500msspring手势动画拖拽/缩放实时直接载入动画等待反馈循环linear
swift
// 隐式动画
withAnimation(.easeInOut(duration: 0.3)) {
isExpanded.toggle()
}
// 显式动画
Button("点击") {
withSpring {
offset.y -= 10
}
}
// 过渡动画
Text("Hello")
.transition(.opacity.combined(with: .scale))
swift
// UIView.animate
UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseInOut) {
view.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
}
// UIViewPropertyAnimator
let animator = UIViewPropertyAnimator(duration: 0.3, curve: .easeInOut) {
view.center = newCenter
}
animator.startAnimation()
UIAccessibility.isReduceMotionEnabled用途间距紧凑4pt标准8pt中等16pt宽松24pt超宽32pt+
平台尺寸备注iPhone180×180 (@3x)60×60 (@1x)iPad167×167 (@2x)83.5×83.5 (@1x)App Store1024×1024唯一尺寸
apple.logo)当使用本技能回答用户问题时,遵循以下格式:
iOS 按钮首选 Filled 样式,背景用
#007AFF,文字白色,高度至少 44pt。若要次要操作,用 Tinted 按钮。macOS 避免 Dynamic Type,visionOS 用 Liquid Glass 材质。注意按钮之间至少留 8pt 间距。
来源:Apple Human Interface Guidelines(2026-04-23 访问)
- 主页: https://developer.apple.com/design/human-interface-guidelines/
- Typography: https://developer.apple.com/design/human-interface-guidelines/typography
- Color: https://developer.apple.com/design/human-interface-guidelines/color
- SF Symbols: https://developer.apple.com/design/human-interface-guidelines/sf-symbols
- Components: https://developer.apple.com/design/human-interface-guidelines/components
- Accessibility: https://developer.apple.com/design/human-interface-guidelines/accessibility
更新频率:随系统版本迭代(当前基于 2026)