Contents
Chào mừng bạn đến với Fx Studio và series SwiftUI Notes. Đây sẽ phần thứ 5 của series. Viết về một trong các tính năng mới đến từ Apple và Xcode 12 (mới nhất hiện tại). Đó là Multiplatform App. Phần này sẽ xác nhận thêm sự kì vọng của Apple về SwiftUI.
Đó là tương lai của các nền tảng trong hệ sinh thái Apple.
1. Giới thiệu
1.1. Chuẩn bị
Dành cho các bạn chưa đọc bốn phần của series SwiftUI Notes này, thì có thể truy cập ở link sau đây:
Về mặt chuẩn bị, chúng ta sẽ vẫn là những yêu cầu cơ bản từ phần một. Nếu như bạn có thể cập nhật tất cả lên version mới nhất thì càng tốt. Còn sau đây là cấu hình đề xuất cho bạn:
-
- MacOS Catalina
- iOS 13.x
- Xcode 12
- Swift 5.3
- SwiftUI 2.0
Về mặt kiến thức, bạn chỉ cần nắm được cơ bản về ngôn ngữ lập trình Swift là ổn rồi. Nếu bạn đã biết thêm cơ bản về lập trình iOS thì sẽ có lợi thế hơn nữa. Bạn có thể đọc các bài viết đó ở link sau:
1.2. Multiplatform App
Trước đây, bạn muốn phát triển một hệ thống ứng dụng cho nhiều thiết bị trong cùng một hệ sinh thái. Như iOS và MacOS, thì bạn sẽ viết 2 project khác nhau. Điều này khá là mệt mỏi và gây ra nhiều khó khăn.
Với sự ra đời của Swift và các cách tái sử dụng lại code (như Swift Package) thì công việc cũng bớt vất vả đi nhiều. Nhưng còn một khó khăn lớn, đó chính là các thành phần giao diện trên từng nền tảng. Mỗi nền tảng sẽ có một cách hiển thị khác nhau.
Bên cạnh đó, chúng ta còn phải xử lý thêm về UX. Người dùng sẽ có nhiều cách sử dụng & tương tác với ứng dụng trên mỗi nền tảng khác nhau. Ví dụ như là sẽ không bao giờ có việc người dùng tay chạm vào các button trong ứng dụng của tvOS.
Cuối cùng, mỗi nền tảng sẽ có những đặc trưng khác nhau. Như MacOS sẽ phải có Menu và Setting View ….v….v…. Tất cả những thứ trên sẽ gây áp lực lên việc làm …
Giao diện cho các ứng dụng trên các nền tảng khác nhau.
Điều này đã giải quyết được bằng SwiftUI. Nhưng cái còn giữ chân SwiftUI chính là Life Cycle. Bạn sẽ bắt buộc dùng một Life Cycle cho một nền tảng nào đó. Ví dụ như với iOS/iPad OS thì đó là UIKit AppDelegate Life Cycle … Cái bóng của nền tảng vẫn còn quá lớn.
Cho tới khi …
Và Apple cũng không phụ lòng dev, với sự ra mắt Xcode 12 thì chúng ta đã có thể sử dụng SwiftUI & SwiftUI App Life Cycle để thực hiện ước mơ của bao đời dev iOS. Đó là …
Multi-platform App
2. Danh sách
Phần bày bao gồm 3 bài viết khác nhau. Trình bày theo thứ tự thực hiện. Do đó, bạn nên chú ý & demo từ đầu để đảm bảo tính liền mạch của nội.
#1 : Hello Multiplatform App
Đây sẽ bài viết mà giúp bạn bắt đầu tìm hiểu về project với Multiplatform App là như thế nào. Quan trọng chính là Multiplatform App template từ Xcode12 và cấu trúc thư mục của template mới. Các cách tạo project & View cho tất cả nền tảng, hay chỉ riêng cho từng nền tảng. Cách cấu hình các file SwiftUI View để đảm bảo tính nhất quán giữa các nền tảng với nhau. Cuối cùng, là cách bạn build ứng dụng lên các nên tảng khác nhau đó.
#2 : Design Views
Thiết kế giao diện cho project Multiplatform App với SwiftUI. Tìm hiểu sự khác nhau và tương đồng trong việc phát triển UI/UX cho từng nền tảng. Bạn sẽ khá là bất ngờ với chúng, những cái quen thuộc lại hiển thị một cách khác xa tưởng tượng của bạn.
#3 : Extra Functions
Chính là việc hoàn thiện project của bạn bằng các tính năng đặc biệt từ MacOS. Tuy nhiên, bạn còn học được thêm việc đồng bộ dữ liệu với nhau trong cùng 1 project. Cách sử dụng dữ liệu và cách ràng buộc chúng với các SwiftUI View.
(Bạn có thể checkout mã nguồn của mỗi bài tại đây.)
Lưu ý
Công nghệ mỗi ngày là một thay đổi và bạn phải dành ra nhiều thời gian để cập nhất nó hằng ngày. Do đó, các bài viết sẽ mang tính chất giới thiệu và ở mức độ cơ bản mà thôi. Và cho đúng thời điểm hiện tại với SwiftUI 2.0. Có thể trong quá trình nghiên cứu thêm, mình sẽ bổ sung thêm các phần lý thuyết cho chương này của series.
3. Thông tin và trạng thái
3.1. Thông tin
-
- Website: Fx Studio
- Link seri: https://fxstudio.dev/tag/swiftui-notes/
- Github: https://github.com/fx-studio/swiftui-notes
- Trạng thái: đang cập nhật
Nếu bạn có đóng góp hay nhận xét về series này, cách viết bài, cũng như nội dung truyền tải. Thì mình rất rất cảm ơn. Nếu có bất cứ vấn đề gì, thì bạn có thể liên lạc theo các địa chỉ dưới đây.
-
- Website: https://fxstudio.dev/contact/
- Email: lephuongtien.dev@gmail.com
3.2. Bản quyền
Về bản quyền của series SwiftUI Notes là của Fx Studio, bao gồm các bài viết trên website & mã nguồn trên GitHub. Và chúng hoàn toàn miễn phí cho các mục đích phi lợi nhuận và học tập. Tất cả các hành vi sao chép hay sử dụng vì mục đích thương mại đều là vi phạm.
Vui lòng để lại link bài viết gốc, nếu bạn muốn sử dụng & cũng như trích dẫn các nội dụng từ các bài viết trong series SwiftUI Notes này.
3.3. Các phần khác trong series:
- Làm quen với SwiftUI
- Cơ bản về ứng dụng SwiftUI App
- Tích hợp SwiftUI và UIKit
- Apple Ecosystem
- Multiplatform App
- Basic UI Controls
- State & Data Flow
- Working with List
- Routing in SwiftUI
- Grid Layout
- …
Cảm ơn bạn đã ủng hộ Fx Studio và series SwiftUI Notes!
Related Posts:
Written by chuotfx
Hãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe!
Leave a Reply Cancel reply
Fan page
Tags
Recent Posts
- Charles Proxy – Phần 1 : Giới thiệu, cài đặt và cấu hình
- Complete Concurrency với Swift 6
- 300 Bài code thiếu nhi bằng Python – Ebook
- Builder Pattern trong 10 phút
- Observer Pattern trong 10 phút
- Memento Pattern trong 10 phút
- Strategy Pattern trong 10 phút
- Automatic Reference Counting (ARC) trong 10 phút
- Autoresizing Masks trong 10 phút
- Regular Expression (Regex) trong Swift
You may also like:
Archives
- September 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (4)
- April 2024 (2)
- March 2024 (5)
- January 2024 (4)
- February 2023 (1)
- January 2023 (2)
- November 2022 (2)
- October 2022 (1)
- September 2022 (5)
- August 2022 (6)
- July 2022 (7)
- June 2022 (8)
- May 2022 (5)
- April 2022 (1)
- March 2022 (3)
- February 2022 (5)
- January 2022 (4)
- December 2021 (6)
- November 2021 (8)
- October 2021 (8)
- September 2021 (8)
- August 2021 (8)
- July 2021 (9)
- June 2021 (8)
- May 2021 (7)
- April 2021 (11)
- March 2021 (12)
- February 2021 (3)
- January 2021 (3)
- December 2020 (3)
- November 2020 (9)
- October 2020 (7)
- September 2020 (17)
- August 2020 (1)
- July 2020 (3)
- June 2020 (1)
- May 2020 (2)
- April 2020 (3)
- March 2020 (20)
- February 2020 (5)
- January 2020 (2)
- December 2019 (12)
- November 2019 (12)
- October 2019 (19)
- September 2019 (17)
- August 2019 (10)