🎨 UIKit
UIKit là framework truyền thống và phổ biến nhất dùng để xây dựng giao diện người dùng trên iOS.
Tính đến hiện tại, khoảng 80% ứng dụng iOS tại Việt Nam vẫn đang sử dụng UIKit.
🌟 Tuy nhiên, Apple đang đẩy mạnh hỗ trợ SwiftUI — một framework mới hiện đại hơn với phong cách lập trình khai báo và hướng đến reactive programming.
Vì vậy, để theo kịp xu hướng và đáp ứng nhu cầu thị trường, việc nắm vững cả UIKit lẫn SwiftUI là rất cần thiết. Đặc biệt là khi thị trường đang cần cả hai kỹ năng này cho các dự án iOS hiện đại.
Lời khuyên cá nhân: Hãy bắt đầu với SwiftUI
Mặc dù UIKit là một nền tảng mạnh mẽ và vẫn chiếm ưu thế, nhưng nếu bạn là người mới bắt đầu, mình khuyên bạn nên bắt đầu với SwiftUI trước. vì những lý do sau đây:
-
SwiftUI dễ tiếp cận hơn: Với phong cách lập trình khai báo (declarative programming), bạn sẽ không phải đối mặt với các vấn đề phức tạp như quản lý view controller, delegation hay target-action mà UIKit yêu cầu. Điều này giúp bạn nhanh chóng hiểu được cách xây dựng giao diện người dùng mà không cần lo lắng quá nhiều về chi tiết.
-
SwiftUI là tương lai của iOS development: Apple đang dồn nhiều nguồn lực vào việc phát triển SwiftUI, và trong vài năm tới, SwiftUI sẽ là framework chính mà Apple ưu tiên. Nếu bạn nắm vững SwiftUI trước, bạn sẽ có nền tảng vững chắc để học UIKit sau này.
Dưới đây là khóa học UIKit tiếp tục với seiries 100 days of Swifttập trung vào việc học thông qua coding với các project thực tế, giúp bạn tích lũy kinh nghiệm lập trình nhanh chóng và hiệu quả.
Section 1: UIKit Fundamentals
- Day 16: Auto Layout
- Day 17: Auto Layout
- Day 18: Auto Layout
- Day 19: Project 1 - Storm Viewer, part one
- Day 20: Project 1 - Storm Viewer, part two
- Day 21: Project 1 - Storm Viewer, part three
Section 2: Intermediate UIKit
- Day 22: Project 2 - Guess the Flag, part one
- Day 23: Project 2 - Guess the Flag, part two
- Day 24: Project 2 - Guess the Flag, part three
- Day 25: Consolidation I
- Day 26: Consolidation I
- Day 27: Consolidation I
Section 3: Deeper into UIKit
- Day 28: Project 3 - Social Media App, part one
- Day 29: Project 3 - Social Media App, part two
- Day 30: Project 3 - Social Media App, part three
- Day 31: Project 4 - Easy Browser, part one
- Day 32: Project 4 - Easy Browser, part two
- Day 33: Project 4 - Easy Browser, part three
- Day 34: Project 5 - Word Scramble, part one
- Day 35: Project 5 - Word Scramble, part two
- Day 36: Project 5 - Word Scramble, part three
- Day 37: Project 6 - Auto Layout, part one
- Day 38: Project 6 - Auto Layout, part two
- Day 39: Project 6 - Auto Layout, part three
- Day 40: Consolidation II
- Day 41: Consolidation II
- Day 42: Consolidation II
Section 4: UIKit + Data Handling
- Day 43: Project 7 - Whitehouse Petitions, part one
- Day 44: Project 7 - Whitehouse Petitions, part two
- Day 45: Project 7 - Whitehouse Petitions, part three
- Day 46: Project 8 - 7 Swifty Words, part one
- Day 47: Project 8 - 7 Swifty Words, part two
- Day 48: Project 8 - 7 Swifty Words, part three
- Day 49: Project 9 - Grand Central Dispatch, part one
- Day 50: Project 9 - Grand Central Dispatch, part two
- Day 51: Project 9 - Grand Central Dispatch, part three
- Day 52: Consolidation III
- Day 53: Consolidation III
- Day 54: Consolidation III
Section 5: Advanced Projects
- Day 55: Project 10 - Names to Faces, part one
- Day 56: Project 10 - Names to Faces, part two
- Day 57: Project 10 - Names to Faces, part three
- Day 58: Project 11 - Local Notifications, part one
- Day 59: Project 11 - Local Notifications, part two
- Day 60: Project 11 - Local Notifications, part three
- Day 61: Project 12 - UserDefaults, part one
- Day 62: Project 12 - UserDefaults, part two
- Day 63: Project 12 - UserDefaults, part three
- Day 64: Consolidation IV
- Day 65: Consolidation IV
- Day 66: Consolidation IV
Section 6: System Frameworks & Techniques
- Day 67: Project 13 - Instafilter, part one
- Day 68: Project 13 - Instafilter, part two
- Day 69: Project 13 - Instafilter, part three
- Day 70: Project 14 - Whack-a-Penguin, part one
- Day 71: Project 14 - Whack-a-Penguin, part two
- Day 72: Project 14 - Whack-a-Penguin, part three
- Day 73: Project 15 - Animation, part one
- Day 74: Project 15 - Animation, part two
- Day 75: Project 15 - Animation, part three
- Day 76: Consolidation V
- Day 77: Consolidation V
- Day 78: Consolidation V
Section 7: Final Mastery
- Day 79: Project 16 - Capital Cities, part one
- Day 80: Project 16 - Capital Cities, part two
- Day 81: Project 16 - Capital Cities, part three
- Day 82: Project 17 - Swifty Ninja, part one
- Day 83: Project 17 - Swifty Ninja, part two
- Day 84: Project 17 - Swifty Ninja, part three
- Day 85: Project 18 - Debugging
- Day 86: Consolidation VI
- Day 87: Consolidation VI
- Day 88: Consolidation VI
- Day 89: Project 19 - JavaScript Injection, part one
- Day 90: Project 19 - JavaScript Injection, part two
- Day 91: Project 20 - Fireball, part one
- Day 92: Project 20 - Fireball, part two
- Day 93: Project 21 - Local Notifications
- Day 94: Project 22 - Detect-a-Beacon, part one
- Day 95: Project 22 - Detect-a-Beacon, part two
- Day 96: Project 22 - Detect-a-Beacon, part three
- Day 97: Project 23 - Swift for TensorFlow
- Day 98: Wrap up
- Day 99: Final test
- Day 100: Final Day