SwiftUI là một framework của Apple giúp việc xây dựng giao diện người dùng trên các nền tảng iOS, macOS, watchOS và tvOS vô cùng đơn giản. - Tham khảo Wiki
SwiftUIđược Apple ra mắt tại hội nghị WWDC 2019. SwiftUI sử dụng một cách tiếp cận khác biệt so với các framework truyền thống như UIKit hay AppKit, đó là sử dụng các khái niệm declarative syntax và reactive programming. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về SwiftUI, những ưu điểm, nhược điểm và developer có nên học SwiftUI hay không.
Trong bài viết này, mình sẽ giới thiệu về những điểm nổi bật của SwiftUI và hy vọng bạn sẽ bắt đầu tìm hiểu về để tạo các ứng dụng tuyệt vời với SwiftUI. Nếu bạn chưa biết tạo ứng dụng SwiftUI như thế nào, tham khảo bài viết bên dưới của mình nhé 🥳
1. SwiftUI là gì:
SwiftUI là một framework dựa trên khái niệm declarative UI, nghĩa là bạn chỉ cần khai báo những gì bạn muốn hiển thị trên màn hình. SwiftUI sẽ tự động xử lý các chi tiết như UI, Layout, Animation cho bạn. Bạn cũng có thể sử dụng SwiftUI để tạo ra các CustomView và Component riêng biệt, và kết hợp chúng với nhau để tạo ra các giao diện phức tạp.
2. Ưu điểm của SwiftUI:
2.1 SwiftUI library & declarative UI syntak:
Nếu bạn đang là Flutter dev, hoặc trước đó bạn đã code Flutter, bạn sẽ thấy cách code UI của 2 framework na ná nhau ^^. Do đó, nếu bạn đã quen với Flutter thì việc chuyển sang code UI SwiftUI sẽ không mất quá nhiều thời gian để làm quen.
Tương tự như Flutter, SwiftUI cũng cung cấp cho bạn một bộ thư viện gồm nhiều View và Control có sẵn như Text, Image, Button, List, NavigationView, TabView,... Bạn có thể sử dụng các modifier để thay đổi thuộc tính của các View như màu sắc, kích thước, font, padding, alignment và nhiều hơn nữa.
2.2 Hỗ trợ tính năng Adaptive UI:
SwiftUI hỗ trợ tính năng adaptive UI, tức là giao diện của bạn sẽ tự động điều chỉnh theo kích thước và định dạng của thiết bị. Bạn không cần phải viết code riêng cho mỗi loại thiết bị, thậm chí là khi thiết bị xoay ngang hay dọc. Bạn chỉ cần sử dụng các view layout như HStack, VStack, ZStack, LazyHStack, LazyVStack và LazyGrid để quy định các view theo chiều ngang, dọc hoặc chồng lên nhau. Ngoài ra, bạn cũng có thể sử dụng các modifier như frame, aspectRatio, offset và alignment để điều chỉnh vị trí và kích thước cho các view.
2.3 Tương thích với Combine & hệ sinh thái của Apple:
Combine là một framework của Apple được giới thiệu vào năm 2019, hỗ trợ xử lý dữ liệu bất đồng bộ (reactive programming). Combine cung cấp các khái niệm và công cụ giúp quản lý trạng thái ứng dụng một cách dễ dàng và hiệu quả hơn. Bạn có thể sử dụng Combine để tạo ra các publisher và subscriber cho việc nhận và gửi các sự kiện từ nguồn dữ liệu khác nhau: như network, database, user input hay timer.
SwiftUI cũng cho phép bạn tương tác với các hệ sinh thái khác của Apple như Core Data, MapKit, SpriteKit, SceneKit và ARKit. Ngoài ra, bạn cũng có thể sử dụng các bridge view như UIViewRepresentable và NSViewRepresentable để sử dụng các view từ UIKit hay AppKit trong SwiftUI, và ngược lại.
SwiftUI tự động tích hợp với các chức năng hệ thống như Dynamic Type (thay đổi kích thước chữ), Dark Mode (chế độ tối), Localization (đa ngôn ngữ) và Accessibility. Điều này giúp bạn xây dựng các ứng dụng có trải nghiệm người dùng tốt hơn và thân thiện hơn.
2.4 Live Preview và SwiftUI Canvas:
Khác với trước đây khi bạn làm việc với native iOS, SwiftUI cung cấp Live Preview và SwiftUI Canvas cho phép developer thấy ngay các thay đổi trên giao diện người dùng mà không cần chạy lại ứng dụng (Hot Reload). Khỏi phải bàn điều này giúp lập trình viên tiết kiệm rất nhiều thời gian và tăng hiệu suất trong quá trình phát triển ứng dụng.
2.5 Animation:
SwiftUI tích hợp sẵn các hiệu ứng Animations giúp bạn nâng cao khả năng sáng tạo và UX ứng dụng tốt hơn. SwiftUI đã được tối ưu hóa để đảm bảo hiệu năng tốt, đồng thời tiêu thụ ít tài nguyên hơn so với một số phương pháp phát triển truyền thống trong lúc chạy các Animation.
3. Nhược điểm của SwiftUI:
Mặc dù SwiftUI có nhiều ưu điểm nhưng vì vẫn còn khá mới nên khó tránh khỏi một số nhược điểm như sau:
Hỗ trợ phiên bản iOS/macOS cũ hạn chế: SwiftUI chỉ hỗ trợ phiên bảniOS 13+ và macOS 10.15+ và các phiên bản mới hơn. Do đó, nếu bạn phải hỗ trợ các phiên bản iOS hoặc macOS cũ hơn, bạn phải tiếp tục sử dụng UIKit hoặc AppKit.
Lỗi và vấn đề không được giải quyết hoàn toàn: SwiftUI vẫn đang trong quá trình phát triển và có thể gặp phải một số lỗi hoặc vấn đề chưa được giải quyết. Điều này có thể gây khó khăn và tốn thời gian khi bạn cố gắng sửa các lỗi này.
Khả năng tương thích ngược với UIKit và AppKit: SwiftUI không hoàn toàn tương thích với UIKit và AppKit. Việc chuyển đổi từ UIKit hoặc AppKit sang SwiftUI và ngược lại có thể đòi hỏi một số công sức và thời gian.
Tài liệu học tập và tài nguyên hạn chế: So với UIKit hoặc AppKit, tài liệu và tài nguyên học tập về SwiftUI vẫn còn hạn chế. Điều này có thể khiến việc học và sử dụng SwiftUI khó khăn đối với những người mới bắt đầu.
Kích thước ứng dụng lớn: Mặc dù SwiftUI cung cấp tính năng code tái sử dụng, ứng dụng sử dụng SwiftUI có thể có kích thước lớn hơn so với các ứng dụng truyền thống được phát triển bằng UIKit hoặc AppKit.
4. Developer có nên học SwiftUI?
Mình nghĩ không có một đáp án chung cho tất cả mọi người. Tùy vào mục tiêu, nhu cầu công việc của bạn mà bạn có thể quyết định có nên học SwiftUI hay không. Tuy nhiên, một số lời khuyên mà tôi có thể đưa ra là:
Nếu bạn là một developer mới bắt đầu học lập trình iOS, macOS, watchOS hay tvOS, thì bạn nên học SwiftUI. SwiftUI sẽ giúp bạn tiết kiệm thời gian và công sức khi tạo giao diện người dùng. Bên cạnh đó, bạn cũng sẽ học được các kỹ năng và kỹ thuật hiện đại, tiên tiến khi sử dụng SwiftUI.
Nếu bạn là một developer có kinh nghiệm với các framework truyền thống như UIKit hay AppKit, thì bạn cũng nên học SwiftUI. SwiftUI sẽ mở ra cho bạn một cánh cửa mới để tạo các ứng dụng đẹp và hiệu quả hơn. Bạn cũng sẽ có thêm một công cụ trong tay để giải quyết các vấn đề và yêu cầu khác nhau của khách hàng hay người dùng.
Nếu bạn là một developer muốn hỗ trợ các thiết bị và phiên bản iOS, macOS, watchOS hay tvOS cũ, thì bạn có thể không cần học SwiftUI. SwiftUI chỉ hoạt động trên iOS 13 trở lên, macOS 10.15 trở lên, watchOS 6 trở lên và tvOS 13 trở lên. Nếu bạn muốn ứng dụng của bạn chạy trên các thiết bị và phiên bản cũ hơn, bạn sẽ phải sử dụng các framework truyền thống.
Cảm ơn bạn đã đọc đến đây. Hẹn gặp lại bạn ở các bài viết tiếp theo của SwiftUI nhé!