從技術上講,x,y,寬度和高度表示與像素相關的一組維度。我 不能有200.23422像素,爲什麼他們使用浮動而不是整數?爲什麼UIView幀由浮點組成?
2
A
回答
5
浮動的原因在於現代CPU和GPU a經過優化,可以並行處理許多浮點數。 iOS和Mac都是如此。
使用Quartz,您不需要提供單個像素,但是您繪製的所有內容始終都是反鋸齒。如果座標爲1.0,1.0,則實際上會在座標原點的2x2像素上添加顏色。
這就是爲什麼你可能會得到模糊的線條,如果你在整數座標繪製。在非視網膜上,你需要以0.5抵消。從技術上講,您需要抵消0.25以在Retina顯示屏上繪製精確的像素。雖然這並不重要,因爲在像素尺寸上你不會再看到它。長話短說:你不直接尋址像素,但圖形引擎會爲浮點座標和像素之間的映射。
1
尺寸實際上是在非視網膜屏幕上與像素具有1對1關係的點,但對於視網膜屏幕1點= 2像素。所以在視網膜屏幕上,你實際上可以增加半個點。
4
決議獨立性。
你想保持你的UI的數學表示儘可能準確,只有當你真正需要繪製到輸出設備時(甚至不是真的)才能轉換爲像素int值。這樣就可以將任意數量的轉換應用於您的視圖,並仍然可以得到準確的結果。
此外,可以渲染線條,例如半像素寬度,甚至更少的可見結果 - 系統使用智能抗鋸齒來顯示細線。
這與矢量圖幾十年來一直使用的原理相同(Adobe的PostScript,SVG等)。事實上,Quartz基於PDF,這是PostScript的現代版本。 NeXT使用Display PostScript的時候,它被認爲是非常革命性的。
相關問題
- 1. 爲什麼浮點異常?
- 2. Elixir Logger爲什麼由宏組成?
- 3. 爲什麼LINQ組由
- 4. 爲什麼我的999999999浮點數變成10000000000?
- 5. 爲什麼我的浮點數變成Numpy Timeseries的一個值?
- 6. 添加浮點數,這是爲什麼?
- 7. CSS - 包含浮點問題 - 爲什麼?
- 8. 爲什麼浮點數333.50是雙
- 9. 爲什麼`inf`代表浮點溢出?
- 10. 爲什麼浮點異常(Linux)
- 11. 爲什麼NumPy浮點數不給ZeroDivisionError?
- 12. 爲什麼「overflow:hidden」會清除浮點數?
- 13. 爲什麼這個浮點數組會給出錯誤?
- 14. UIView的組幀古怪
- 15. 爲什麼scikit-image以浮點形式返回視頻的幀數?
- 16. 1幀由左右聲道組成?
- 17. 什麼是浮點紋理?
- 18. 爲什麼52.0作爲一個浮點數投射爲int時變成51?
- 19. 浮點異常C爲什麼,它是什麼?
- 20. 浮點異常C++爲什麼和它是什麼?
- 21. 爲什麼UIView右移offsetBy
- 22. 你爲什麼繼承UIView?
- 23. 什麼是linux進程表?它由什麼組成?
- 24. 爲什麼Chrome擴展API主要由回調組成?
- 25. 爲什麼GCC爲Cortex-A9生成Fxxx而不是Vxxx浮點彙編指令?
- 26. 在php中爲什麼是浮點數>字符串或浮點數> int
- 27. 轉換字節數組成浮點
- 28. 硬浮點數和軟浮點數之間有什麼區別?
- 29. 長期浮動,爲什麼?
- 30. 爲什麼浮動下降?
那真的沒有回答這個問題,這個浮點語法是在視網膜前。 –
這個因素又如何進入'決議獨立性' –
我認爲這是對未來的證明。也許將來1點可能等於4個像素。所以100.25的維數是有意義的。 –