Mobile UI/UX Design Principles
Introduction
Mobile UI/UX design requires understanding platform-specific guidelines, user behavior patterns, and accessibility standards. This guide covers iOS and Android design principles, creating intuitive interfaces, and best practices for delivering exceptional mobile experiences.
1. Platform-Specific Design Guidelines
iOS Human Interface Guidelines (HIG)
Core iOS Design Principles:
✓ Clarity - Clear, legible text and precise icons
✓ Deference - Content is paramount, UI recedes
✓ Depth - Layering and realistic motion convey hierarchy
Navigation Patterns:
- Tab Bar (Primary navigation, 2-5 items)
- Navigation Bar (Hierarchical content)
- Modal Sheets (Temporary focus, task completion)
Typography:
- SF Pro (System font)
- Dynamic Type support
- Clear hierarchy with font weights
Spacing:
- Standard margins: 16-20pt
- Content padding: 16pt
- List item height: 44pt minimum (touch target)
Material Design (Android)
Material Design Principles:
✓ Material as metaphor - Tactile surfaces
✓ Bold, graphic, intentional - Deliberate color and imagery
✓ Motion provides meaning - Purposeful animation
Navigation Patterns:
- Bottom Navigation (3-5 destinations)
- Navigation Drawer (5+ destinations)
- Top App Bar (Context and actions)
Typography:
- Roboto (Primary font)
- Scale: 10sp to 96sp
- Line height: 1.5x font size
Spacing:
- 8dp grid system
- Touch targets: 48dp minimum
- Margins: 16dp standard
2. Mobile-First Design Principles
Thumb Zone Design
Mobile Screen Zones (One-handed use):
[Top 1/3] - Hard to Reach
Primary actions should avoid this zone
[Middle] - Easy to Reach
Content viewing, scrolling
[Bottom] - Natural Thumb Zone
Primary navigation, CTAs
Best Practices:
✓ Place primary actions in bottom third
✓ Navigation bar at bottom (iOS) or top (Android)
✓ FABs in thumb zone (bottom-right for right-handed users)
✓ Critical info in center/middle
✗ Avoid hamburger menus if possible (hard to reach)
Touch Target Sizing
Minimum Touch Target Sizes:
iOS: 44x44 points (88x88 pixels @2x)
Android: 48x48 dp
Best Practices:
✓ Buttons: 44pt/48dp minimum
✓ Icons: 24pt/24dp icon, 44pt/48dp touch area
✓ Spacing between targets: 8pt/8dp minimum
✓ Text inputs: 44pt/48dp height minimum
✓ Checkboxes/Radio: 44pt/48dp touch area
Common Mistakes:
✗ 32pt buttons (too small)
✗ Tightly packed icons
✗ Text links without padding
✗ Tiny "X" close buttons
3. Typography & Readability
Font Sizing
Recommended Font Sizes (iOS/Android):
Large Title: 34pt / 96sp
Title 1: 28pt / 60sp
Title 2: 22pt / 48sp
Title 3: 20pt / 34sp
Headline: 17pt / 24sp
Body: 17pt / 16sp (primary)
Callout: 16pt / 14sp
Subhead: 15pt / 14sp (secondary)
Footnote: 13pt / 12sp
Caption: 12pt / 10sp
Mobile Reading Tips:
✓ Body text: 16-18px minimum
✓ Line height: 1.4-1.6x font size
✓ Paragraph width: 60-70 characters max
✓ Contrast ratio: 4.5:1 minimum (WCAG AA)
✓ Support dynamic type/font scaling
4. Color & Contrast
Color System
Mobile Color Palette Structure:
Primary Color (Brand identity)
- Primary: Main brand color
- Primary Variant: Darker/lighter shade
- On Primary: Text/icons on primary background
Secondary Color (Accents)
- Secondary: Accent color
- Secondary Variant: Shade variant
- On Secondary: Text/icons on secondary
Background Colors
- Background: Main background (#FFFFFF)
- Surface: Card/component background (#F5F5F5)
- On Background: Text on background
- On Surface: Text on surface
Status Colors
- Success: #4CAF50 (green)
- Error: #F44336 (red)
- Warning: #FF9800 (orange)
- Info: #2196F3 (blue)
Contrast Requirements (WCAG):
✓ AA Level: 4.5:1 (normal text)
✓ AA Level: 3:1 (large text 24px+)
✓ AAA Level: 7:1 (normal text)
Dark Mode Support
// iOS - Dark mode colors
extension UIColor {
static let dynamicBackground = UIColor { traitCollection in
switch traitCollection.userInterfaceStyle {
case .dark:
return UIColor(rgb: 0x1C1C1E)
default:
return UIColor.white
}
}
}
// Android - res/values/colors.xml
#FFFFFF
#121212
// res/values-night/colors.xml
@color/background_dark
Dark Mode Best Practices:
✓ Don't use pure black (#000000)
✓ Use elevated surfaces (#1C1C1E, #2C2C2E)
✓ Reduce color saturation
✓ Maintain contrast ratios
✓ Test in both modes
5. Navigation Patterns
iOS Navigation
// UITabBarController (Primary navigation)
let tabBarController = UITabBarController()
tabBarController.viewControllers = [
HomeViewController(),
SearchViewController(),
FavoritesViewController(),
ProfileViewController()
]
Tab Bar Guidelines:
✓ 2-5 tabs maximum
✓ Clear, concise labels
✓ Recognizable icons
✓ Badge notifications when needed
✗ More than 5 tabs (use "More" tab)
✗ Navigation inside tabs that takes you away
// UINavigationController (Hierarchical)
let navController = UINavigationController(rootViewController: homeVC)
Navigation Bar Elements:
- Title (large or inline)
- Back button (automatic)
- Trailing buttons (1-2 actions)
- Search bar (optional)
Android Navigation
Navigation Guidelines:
✓ Bottom nav for primary destinations
✓ Drawer for less frequent destinations
✓ Up button for hierarchical navigation
✓ Clear visual hierarchy
✗ Mixing navigation patterns
✗ Deep nesting (max 3 levels)
6. Forms & Input Design
Form Best Practices
Mobile-Friendly Form Design:
✓ Single column layout
✓ Clear, visible labels above inputs
✓ Placeholder text for examples only
✓ Appropriate keyboard types
✓ Auto-capitalize when appropriate
✓ Auto-complete suggestions
✓ Inline validation
✓ Group related fields
✓ Progress indicators for long forms
✓ Clear error messages
✗ Tiny input fields
✗ Horizontal scrolling
✗ Too many required fields
Input Types:
- text: General text
- email: Email keyboard with @
- tel: Number pad
- url: URL keyboard with .com
- number: Numeric keyboard
- date/time: Native pickers
Validation & Error Handling
Error Message Guidelines:
✓ Show errors immediately (on blur)
✓ Clear, specific messages
✓ Explain how to fix
✓ Use color + icon (not just color)
✓ Position near the field
Good Examples:
✓ "Email address must include @"
✓ "Password must be at least 8 characters"
✓ "Credit card number is incomplete"
Bad Examples:
✗ "Invalid input"
✗ "Error 422"
✗ "Field is required" (without context)
7. Loading States & Feedback
Loading Indicators
Types of Loading States:
1. Indeterminate (unknown duration)
- Spinner/Activity Indicator
- Skeleton screens
- Pull-to-refresh
2. Determinate (known duration)
- Progress bar with percentage
- Step indicators
3. Optimistic UI
- Immediate feedback
- Update when confirmed
Best Practices:
✓ Show loading for actions >500ms
✓ Use skeleton screens for content
✓ Provide cancel option for long operations
✓ Show progress for uploads/downloads
✗ Blocking entire screen unnecessarily
✗ Multiple spinners simultaneously
Micro-interactions
// iOS - Button press animation
UIView.animate(withDuration: 0.1, animations: {
button.transform = CGAffineTransform(scaleX: 0.95, y: 0.95)
}) { _ in
UIView.animate(withDuration: 0.1) {
button.transform = .identity
}
}
// Android - Ripple effect (Material)
Micro-interaction Uses:
✓ Button press feedback
✓ Toggle switches
✓ Checkbox/radio selection
✓ Pull-to-refresh
✓ Swipe actions
✓ Like/favorite animations
8. Gestures & Interactions
Common Mobile Gestures
Standard Gestures:
Tap - Select, activate
Long Press - Context menu, additional options
Swipe - Navigate, delete, reveal actions
Pinch - Zoom in/out
Pan/Drag - Move, scroll
Pull-down - Refresh content
Edge Swipe - Back navigation (iOS), drawer (Android)
Best Practices:
✓ Use platform-standard gestures
✓ Provide visual cues for custom gestures
✓ Include alternative ways to perform actions
✓ Test gesture conflicts
✗ Reinventing standard gestures
✗ Hidden functionality (unless taught)
✗ Requiring precision gestures
9. Accessibility
Mobile Accessibility Checklist
✓ Screen Reader Support
- Meaningful labels for all elements
- Proper heading hierarchy
- Announce state changes
✓ Sufficient Contrast
- 4.5:1 for normal text
- 3:1 for large text
✓ Touch Target Sizes
- Minimum 44pt/48dp
✓ Text Sizing
- Support dynamic type
- Test at 200% zoom
✓ Alternative Input
- Voice control compatible
- Switch access support
✓ Motion Control
- Reduce motion option
- No auto-play videos
// iOS - VoiceOver support
button.accessibilityLabel = "Add to favorites"
button.accessibilityHint = "Adds this item to your favorites list"
button.accessibilityTraits = .button
// Android - TalkBack support
10. Performance & Animation
Animation Guidelines
Animation Duration Standards:
Fast (100-200ms)
- Button presses
- Toggle switches
- Micro-interactions
Medium (200-400ms)
- Sheet presentations
- Card expansions
- Transitions
Slow (400-600ms)
- Page transitions
- Complex animations
Never Longer (600ms+)
- User will perceive as laggy
iOS Animation Curves:
- easeInOut (default)
- easeIn (acceleration)
- easeOut (deceleration)
- spring (natural bounce)
Best Practices:
✓ 60 FPS minimum
✓ Use hardware acceleration
✓ Respect reduced motion settings
✓ Keep animations under 400ms
✗ Gratuitous animations
✗ Blocking UI during animations
Conclusion
Great mobile UI/UX design combines platform conventions, accessibility standards, and user-centered thinking. By following iOS and Android guidelines, optimizing for thumb-friendly interaction, and prioritizing clarity and simplicity, you can create mobile experiences that feel natural and delightful to use.
💡 Pro Tip: Always test your designs on actual devices, not just simulators. Real-world usage reveals issues that aren't apparent in design tools or emulators. Conduct usability testing with diverse users to identify pain points early in the design process.