設定 view.backgroundColor = [UIColor colorWithRed:253/255.0 green:131/255.0 blue:88/255.0 alpha:1],預期顯示 RGB(253,131,88),實際運行後取色變為 RGB(253,109,65),顏色明顯變暗。導航欄設定同色值後透過 translucent = NO 修正,但普通 View 仍偏暗。
colorWithRed:green:blue:alpha: 建立的是 sRGB 色彩空間 的顏色。// iOS 10+ 可用 displayP3 色彩空間直接指定目標顏色
UIColor *color = [UIColor colorWithDisplayP3Red:253/255.0 green:131/255.0 blue:88/255.0 alpha:1.0];
view.backgroundColor = color;
或在 Asset Catalog (xcassets) 中新增 Color Set,設定 Color Space 為 Display P3,輸入目標 RGB 值,程式碼中直接 [UIColor colorNamed:@"MyCustomColor"] 使用,系統自動處理色彩空間轉換。
如截圖所示,Digital Color Meter / 取色工具需勾選 「顯示原生值」,而非「sRGB」或「通用 RGB」,否則讀取到的就是轉換後的數值,誤以為程式碼設定錯誤。
導航欄預設半透明(translucent = YES),會與底下內容混合,導致顏色偏差。設定 navigationBar.translucent = NO 可修正,但會影響整體視覺層級。建議統一使用 Asset Catalog 管理所有 UI 顏色,確保色彩空間一致。