Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
wshobson avatar

Mobile Ios Design

  • 19.3k installs
  • 38.3k repo stars
  • Updated July 22, 2026
  • wshobson/agents

mobile-ios-design is an iOS design skill covering SwiftUI layouts, Apple HIG principles, and native iOS interaction patterns.

About

Master iOS design with SwiftUI components and Apple Human Interface Guidelines. Covers navigation patterns, responsive layouts, typography, colors, SF Symbols, accessibility, and design for iPhone, iPad, and visionOS.

  • SwiftUI layout patterns with VStack, HStack, LazyVGrid for responsive iOS design
  • iOS 16+ navigation, dynamic type support, SF Symbols, and accessibility best practices

Mobile Ios Design by the numbers

  • 19,276 all-time installs (skills.sh)
  • +394 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #41 of 1,896 Design & UI/UX skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

mobile-ios-design capabilities & compatibility

Capabilities
layout design · navigation patterns · accessibility · responsive design
Platforms
macOS
npx skills add https://github.com/wshobson/agents --skill mobile-ios-design

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs19.3k
repo stars38.3k
Security audit3 / 3 scanners passed
Last updatedJuly 22, 2026
Repositorywshobson/agents

How do you implement Apple HIG spacing in SwiftUI?

ui-design

Who is it for?

Developers building native iOS and iPad apps with SwiftUI, needing to follow Apple design guidelines

Skip if: Android Compose work, UIKit-only legacy screens, or teams not targeting native SwiftUI interfaces.

When should I use this skill?

Designing iOS interfaces, building SwiftUI views, or implementing iOS navigation patterns

What you get

SwiftUI views with HIG-aligned EdgeInsets, margin constants, and safe-area-aware ScrollView layouts.

  • SwiftUI views with HIG spacing
  • EdgeInsets and safe-area layout code

By the numbers

  • Covers iOS 16+ NavigationStack and iOS 18+ TabView patterns
  • 3 core HIG principles: Clarity, Deference, Depth

Files

SKILL.mdMarkdownGitHub ↗

iOS Mobile Design

Master iOS Human Interface Guidelines (HIG) and SwiftUI patterns to build polished, native iOS applications that feel at home on Apple platforms.

When to Use This Skill

  • Designing iOS app interfaces following Apple HIG
  • Building SwiftUI views and layouts
  • Implementing iOS navigation patterns (NavigationStack, TabView, sheets)
  • Creating adaptive layouts for iPhone and iPad
  • Using SF Symbols and system typography
  • Building accessible iOS interfaces
  • Implementing iOS-specific gestures and interactions
  • Designing for Dynamic Type and Dark Mode

Core Concepts

1. Human Interface Guidelines Principles

Clarity: Content is legible, icons are precise, adornments are subtle Deference: UI helps users understand content without competing with it Depth: Visual layers and motion convey hierarchy and enable navigation

Platform Considerations:

  • iOS: Touch-first, compact displays, portrait orientation
  • iPadOS: Larger canvas, multitasking, pointer support
  • visionOS: Spatial computing, eye/hand input

2. SwiftUI Layout System

Stack-Based Layouts:

// Vertical stack with alignment
VStack(alignment: .leading, spacing: 12) {
    Text("Title")
        .font(.headline)
    Text("Subtitle")
        .font(.subheadline)
        .foregroundStyle(.secondary)
}

// Horizontal stack with flexible spacing
HStack {
    Image(systemName: "star.fill")
    Text("Featured")
    Spacer()
    Text("View All")
        .foregroundStyle(.blue)
}

Grid Layouts:

// Adaptive grid that fills available width
LazyVGrid(columns: [
    GridItem(.adaptive(minimum: 150, maximum: 200))
], spacing: 16) {
    ForEach(items) { item in
        ItemCard(item: item)
    }
}

// Fixed column grid
LazyVGrid(columns: [
    GridItem(.flexible()),
    GridItem(.flexible()),
    GridItem(.flexible())
], spacing: 12) {
    ForEach(items) { item in
        ItemThumbnail(item: item)
    }
}

3. Navigation Patterns

NavigationStack (iOS 16+):

struct ContentView: View {
    @State private var path = NavigationPath()

    var body: some View {
        NavigationStack(path: $path) {
            List(items) { item in
                NavigationLink(value: item) {
                    ItemRow(item: item)
                }
            }
            .navigationTitle("Items")
            .navigationDestination(for: Item.self) { item in
                ItemDetailView(item: item)
            }
        }
    }
}

TabView (iOS 18+):

struct MainTabView: View {
    @State private var selectedTab = 0

    var body: some View {
        TabView(selection: $selectedTab) {
            Tab("Home", systemImage: "house", value: 0) {
                HomeView()
            }

            Tab("Search", systemImage: "magnifyingglass", value: 1) {
                SearchView()
            }

            Tab("Profile", systemImage: "person", value: 2) {
                ProfileView()
            }
        }
    }
}

4. System Integration

SF Symbols:

// Basic symbol
Image(systemName: "heart.fill")
    .foregroundStyle(.red)

// Symbol with rendering mode
Image(systemName: "cloud.sun.fill")
    .symbolRenderingMode(.multicolor)

// Variable symbol (iOS 16+)
Image(systemName: "speaker.wave.3.fill", variableValue: volume)

// Symbol effect (iOS 17+)
Image(systemName: "bell.fill")
    .symbolEffect(.bounce, value: notificationCount)

Dynamic Type:

// Use semantic fonts
Text("Headline")
    .font(.headline)

Text("Body text that scales with user preferences")
    .font(.body)

// Custom font that respects Dynamic Type
Text("Custom")
    .font(.custom("Avenir", size: 17, relativeTo: .body))

5. Visual Design

Colors and Materials:

// Semantic colors that adapt to light/dark mode
Text("Primary")
    .foregroundStyle(.primary)
Text("Secondary")
    .foregroundStyle(.secondary)

// System materials for blur effects
Rectangle()
    .fill(.ultraThinMaterial)
    .frame(height: 100)

// Vibrant materials for overlays
Text("Overlay")
    .padding()
    .background(.regularMaterial, in: RoundedRectangle(cornerRadius: 12))

Shadows and Depth:

// Standard card shadow
RoundedRectangle(cornerRadius: 16)
    .fill(.background)
    .shadow(color: .black.opacity(0.1), radius: 8, y: 4)

// Elevated appearance
.shadow(radius: 2, y: 1)
.shadow(radius: 8, y: 4)

Quick Start Component

import SwiftUI

struct FeatureCard: View {
    let title: String
    let description: String
    let systemImage: String

    var body: some View {
        HStack(spacing: 16) {
            Image(systemName: systemImage)
                .font(.title)
                .foregroundStyle(.blue)
                .frame(width: 44, height: 44)
                .background(.blue.opacity(0.1), in: Circle())

            VStack(alignment: .leading, spacing: 4) {
                Text(title)
                    .font(.headline)
                Text(description)
                    .font(.subheadline)
                    .foregroundStyle(.secondary)
                    .lineLimit(2)
            }

            Spacer()

            Image(systemName: "chevron.right")
                .foregroundStyle(.tertiary)
        }
        .padding()
        .background(.background, in: RoundedRectangle(cornerRadius: 12))
        .shadow(color: .black.opacity(0.05), radius: 4, y: 2)
    }
}

Best Practices

1. Use Semantic Colors: Always use .primary, .secondary, .background for automatic light/dark mode support 2. Embrace SF Symbols: Use system symbols for consistency and automatic accessibility 3. Support Dynamic Type: Use semantic fonts (.body, .headline) instead of fixed sizes 4. Add Accessibility: Include .accessibilityLabel() and .accessibilityHint() modifiers 5. Use Safe Areas: Respect safeAreaInset and avoid hardcoded padding at screen edges 6. Implement State Restoration: Use @SceneStorage for preserving user state 7. Support iPad Multitasking: Design for split view and slide over 8. Test on Device: Simulator doesn't capture full haptic and performance experience

Common Issues

  • Layout Breaking: Use .fixedSize() sparingly; prefer flexible layouts
  • Performance Issues: Use LazyVStack/LazyHStack for long scrolling lists
  • Navigation Bugs: Ensure NavigationLink values are Hashable
  • Dark Mode Problems: Avoid hardcoded colors; use semantic or asset catalog colors
  • Accessibility Failures: Test with VoiceOver enabled
  • Memory Leaks: Watch for strong reference cycles in closures

Related skills

FAQ

What spacing values does mobile-ios-design document?

mobile-ios-design documents HIG margin constants including 16pt standard, 8pt compact, and 24pt large margins, plus EdgeInsets.standard, listRow, and card presets for SwiftUI views.

How does mobile-ios-design handle safe areas?

mobile-ios-design includes SafeAreaAwareView patterns wrapping ScrollView and LazyVStack so SwiftUI content respects iOS safe area insets per Human Interface Guidelines.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.