Style view
Contents
Một phút cho quảng cáo
Trong lập trình IOS nói riêng và mobile nói chung, kỹ năng code giao diện là phần rất quan trọng. Độ phức tạp của một task và thời gian thực hiện phụ thuộc nhiều vào UI bạn làm. UI đơn giản thì làm nhanh, UI khó thì làm lâu. Kĩ năng tạo giao diện cần được các thợ code mobile trau dồi, rèn luyện thật kĩ. Nhất là đối với những người lười như mình :)), việc build những style dùng chung sẽ giảm thời gian làm xuống, tăng thời gian chơi lên. YOLO mà. Nhưng làm thế nào để dùng chung đâu phải là việc đơn giản. Người thợ code lại phải lên đường tìm cách gỡ rối tơ lòng.
Tìm đường cách mệnh
Cách hiệu quả nhất là ta tạo những func dùng chung, ví dụ như muốn làm đậm chữ một label, sau đó cho background màu xanh, rùi cuối cùng là bo cái label đấy nó hơi cong chút xíu. Ta có thể viết mã giả như sau
|
|
Cách giải quyết rất đơn giản phải không nào. Tuy nhiên bạn đang dùng swift mà, hãy làm nó theo phong cách swift.
Show me the code
Đầu tiên ta định nghĩa ra một struct làm chức năng wrap style. Trong struct có chứa hàm callback thực hiện thao tác với UI
Tiếp theo định nghĩa tiếp hàm compose, compose này làm nhiệp vụ tổng hợp lại các thao tác với UI thành một hàm duy nhất có dạng (T) -> Void. Trong đó T đóng vai trò UI được truyền vào.
Ta đã có function để tổng hợp lại các bước thao tác với UI, bước tiếp theo là run nó thôi. Ta định nghĩa một function làm việc này.
OK! done, giờ ta sẽ tạo example đơn giản để thấy hiệu quả của việc này. Ta tạo 3 style từ struct định nghĩa ở trên làm các nhiệm vụ: tạo đường cong cho label, đổi background của label thành màu đen, cho chữ được bôi đậm nữa.
Rồi tổng hợp chúng lại như sau
Cách overload toán tử
Chúng ta có thể overload toán tử để nhìn phép toán gọn gàng, sáng sủa hơn.
Và kết quả sẽ được là
|
|
:D Đơn giản như đan rổ ấy nhỉ?
Hướng functional
Theo huớng này thì ta định nghĩa ra toán tử <>
Và hàm + ở trên có thể sửa lại thành
|
|
Thậm chí ta có thể không cần dùng struct nữa mà qui thành function hết. Mã giả như sau
|
|
Vậy là mình đã trình bày xong 3 cách để tái sử dụng code trong việc style UI :). Bạn có cách nào hay không? Show me the code.
Author VietHQ
LastMod 2018-09-30