Xcode 6 có một tính năng mới, nơi các phông chữ và cỡ chữ trong UILabel
, UITextField
và UIButton
có thể được thiết lập tự động dựa trên lớp kích thước của cấu hình thiết bị hiện tại, ngay trong kịch bản này. Ví dụ: bạn có thể đặt a UILabel
để sử dụng kích thước phông chữ 12 trên cấu hình "chiều rộng bất kỳ, chiều cao nhỏ gọn" (chẳng hạn như trên iPhone ở chế độ ngang) và kích thước 18 trên cấu hình "chiều rộng thông thường, chiều cao thông thường" (chẳng hạn như trên iPad ). Thêm thông tin có sẵn ở đây:
developer.apple.com/size_class
Về lý thuyết, đây là một tính năng tuyệt vời vì nó có thể khiến việc lập trình các phông chữ khác nhau trên các tính năng của giao diện người dùng dựa trên cấu hình thiết bị là không cần thiết. Hiện tại, tôi có một số mã điều kiện đặt phông chữ dựa trên loại thiết bị, nhưng rõ ràng, điều đó có nghĩa là tôi phải đặt phông chữ theo chương trình ở mọi nơi trong ứng dụng. Vì vậy, ban đầu tôi thực sự hào hứng với tính năng này, nhưng tôi nhận thấy rằng nó có một vấn đề nghiêm trọng trong việc sử dụng thực tế đối với tôi (có lẽ là một lỗi). Lưu ý rằng tôi đang xây dựng dựa trên SDK 8 và đặt mục tiêu triển khai tối thiểu của iOS 8 , vì vậy điều này không liên quan gì đến khả năng tương thích với các phiên bản iOS cũ.
Vấn đề là ở đây: Nếu tôi đặt các kích thước phông chữ khác nhau cho các lớp kích thước khác nhau và sử dụng phông chữ "Hệ thống" do iOS cung cấp , mọi thứ hoạt động như mong đợi và kích thước phông chữ thay đổi dựa trên loại kích thước. Nếu tôi sử dụng phông chữ tùy chỉnh do ứng dụng của mình cung cấp (vâng, tôi đã thiết lập phông chữ chính xác trong gói ứng dụng của mình, vì nó hoạt động theo chương trình) và đặt phông chữ tùy chỉnh thành nhãn trong bảng phân cảnh XCode 6 , điều đó cũng hoạt động như mong đợi. Nhưng khi tôi cố gắng sử dụng các kích thước khác nhau của phông chữ tùy chỉnh cho các lớp kích thước khác nhau, trong bảng phân cảnh, nó đột nhiên không hoạt động. Sự khác biệt duy nhất về cấu hình là phông chữ tôi đã chọn (phông chữ tùy chỉnh so với phông chữ Hệ thống). Thay vào đó, tất cả các phông chữ hiển thị trênthiết bị và trình mô phỏng làm phông chữ hệ thống mặc định ở kích thước mặc định , bất kể loại kích thước (và tôi đã xác minh thông qua trình gỡ lỗi rằng nó đang thay thế phông chữ hệ thống cho phông chữ thực được chỉ định trong bảng phân cảnh). Vì vậy, về cơ bản, tính năng lớp kích thước dường như bị hỏng đối với các phông chữ tùy chỉnh. Ngoài ra, thật thú vị, các phông chữ tùy chỉnh thực sự hiển thị và điều chỉnh kích thước phù hợp trong ngăn "Xem trước" của XCode 6 cho bộ điều khiển chế độ xem: nó chỉ ngừng hoạt động khi chạy trên hệ thống iOS thực tế (điều này khiến tôi nghĩ rằng tôi đang định cấu hình nó một cách chính xác) .
Tôi đã thử nhiều phông chữ tùy chỉnh khác nhau và nó dường như không hoạt động với bất kỳ phông chữ nào trong số chúng, nhưng nó luôn hoạt động nếu tôi sử dụng "Hệ thống" thay thế.
Dù sao, có ai khác đã thấy vấn đề này trong Xcode 6 không?
Mọi ý kiến về việc liệu đây có phải là lỗi trong iOS 8, Xcode hay thứ gì đó không
Tôi có làm sai không?
Cách giải quyết duy nhất mà tôi đã tìm thấy, như tôi đã nói, là tiếp tục thiết lập các phông chữ theo chương trình như tôi đã làm cho khoảng ba phiên bản iOS vì điều đó hoạt động.
Nhưng tôi rất muốn có thể sử dụng tính năng này nếu tôi có thể làm cho nó hoạt động với các phông chữ tùy chỉnh. Sử dụng phông chữ Hệ thống không được chấp nhận cho thiết kế của chúng tôi.
THÔNG TIN BỔ SUNG: Kể từ Xcode 8.0, lỗi đã được sửa.