2015-05-14 21 views
14

Tôi không thể tìm thấy một bài báo hoặc tài liệu mô tả không gian màu nào nên được sử dụng cho các giá trị RGB khi khởi tạo một thể hiện từ lớp UIColor.Không gian màu mặc định cho UIColor là gì?

Bài viết Getting the right colors in your ios app cho biết chúng tôi nên sử dụng Generic RGB. Mặt khác, tôi đã tìm thấy một số bài viết nói rằng chúng tôi chắc chắn nên sử dụng sRGB trên iOS.

Dường như không gian màu mặc định là sRGB như viết ở đây trong CGColorSpace Reference

a new color space gọi là "Display P3" được sử dụng trong iPad và iPhone Pro 7. Các hồ sơ trong các tài nguyên hình ảnh hiện có phải được chuyển đổi sang Hiển thị P3. Đối với ứng dụng Đồng hồ màu kỹ thuật số, cấu hình P3 phải được chọn để nhận giá trị RGB "Hiển thị P3". Xem ảnh chụp màn hình.

How to pick the right RGB values for the Display P3 color space. enter image description here

+0

Vì vậy, chúng tôi không thể lấy màu từ bảng chọn màu Phác thảo, chia nó bằng 255 và chuyển sang 'UIColor (đỏ :, xanh lá cây: xanh dương :, alpha:)', tôi có đúng không? Giải pháp duy nhất tôi thấy là sử dụng Công cụ chọn màu kỹ thuật số với "Hiển thị trong sRGB" –

+1

Màu sắc không được xác định bằng cách chỉ sử dụng giá trị RGB; bạn sẽ cần phải xác định không gian màu các giá trị RGB được xác định trong. – Yohst

Trả lời

3

TL; DR

iOS sử dụng Extended sRGB vì nó là mặc định.

xiángxìjièshì

này có thể dễ dàng được xác nhận thông qua các chương trình gỡ rối trong Xcode:

  • đặt một breakpoint bất cứ nơi nào trong mã của bạn,
  • khi LLĐB đi lên, gõ po UIColor.red,
  • sự lệnh trên sẽ trả lại UIExtendedSRGBColorSpace 1 0 0 1 kể từ iOS 11, Xcode 9.2.

Không gian màu này có thể sử dụng cùng giá trị sRGB không thay đổi màu nhưng đồng thời cho phép giá trị RGB chuyển sang âm cũng như lớn hơn 1.0 để thể hiện màu bên ngoài không gian màu sRGB (tức là màu sRGB mở rộng không gian)

Có video WWDC đẹp, Working with Wide Color, từ năm 2016 giải thích hiện tượng này một cách độc đáo (đến 8:35).

Vì vậy, nếu bạn sử dụng màu sRGB trong ứng dụng, bạn nên sử dụng ngay cả đối với màn hình e-sRGB. Tất nhiên, nếu bạn cần một trong những màu sắc cụ thể bên ngoài gam màu sRGB, bạn sẽ cần phải sử dụng không gian màu e-sRGB.

5

tôi đã viết một bài đăng blog mà giải thích điều này một cách chi tiết:

http://www.vsanthanam.com/writing/2017/7/6/colors-in-ios-ensuring-consistency-between-designs-interface-builder-and-uicolor

Về cơ bản, trong khi Phác thảo sử dụng một bảng chọn màu tùy chỉnh, cho rằng thành phần màu sRGB, chọn màu Xcode của không.

Phương pháp nhà máy phổ biến nhất của UIColor + colorWithRed: green: blue: alpha: giả sử không gian màu sRGB (sRGB mở rộng nếu được liên kết với iOS 10.x), nhưng nó cũng có phương thức factory khác, colorWithDisplayP3Red: green: blue: alpha : sẽ lấy các thành phần RGBA không gian màu P3 hiển thị của bạn, nhưng lưu trữ chúng bên trong như các giá trị đã dịch với tham chiếu đến không gian màu sRGB.

Như mọi khi, hãy xem tài liệu hướng dẫn của Apple trên UIColor để biết thêm:

https://developer.apple.com/documentation/uikit/uicolor?changes=latest_minor

Điều thú vị đủ, UIColor đối AppKit của, NSColor, hỗ trợ linh hoạt cách hơn với phương pháp nhà máy có sẵn hơn (bao gồm một thiết kế với một không gian màu tùy chỉnh đặc biệt để bắt chước UIColor's + colorWithRed: green: blue: alpha: behavior). Tôi không chắc tại sao UIColor lại bị hạn chế hơn.

+0

Tài liệu tuyệt vời và bài đăng trên blog, cảm ơn bạn! –

+0

Vui vì tôi có thể giúp! – vsanthanam510

Các vấn đề liên quan