簡體   English   中英

UIView的clipsToBounds和CALayer的maskToBounds之間的關系如何?

[英]How is the relation between UIView's clipsToBounds and CALayer's masksToBounds?

UIView有一個CALayer 這很確定。 但兩者似乎都提供了同樣的東西。

如果我設置clipsToBounds=YES ,這還會設置圖層的masksToBounds=YES嗎? 為什么不同名字? 有誰知道?

它們是不同的名稱,因為UIViewCALayer是不同的,並且具有與它們相關聯的不同術語,但它們在功能上是等同的。 如果您反匯編clipsToBounds您將看到它只調用masksToBounds (從模擬器框架反匯編,所以x86):

-(BOOL)[UIView(Rendering) clipsToBounds]
    +0  3091938a  55              pushl    %ebp
    +1  3091938b  89e5            movl     %esp,%ebp
    +3  3091938d  e800000000      calll    0x30919392
    +8  30919392  59              popl     %ecx
    +9  30919393  8b4508          movl     0x08(%ebp),%eax
   +12  30919396  8b5004          movl     0x04(%eax),%edx         (CALayer)_layer
   +15  30919399  8b8186cb1301    movl     0x0113cb86(%ecx),%eax    masksToBounds
   +21  3091939f  89450c          movl     %eax,0x0c(%ebp)
   +24  309193a2  895508          movl     %edx,0x08(%ebp)
   +27  309193a5  c9              leave
   +28  309193a6  e92e211801      jmpl     0x31a9b4d9

有人問到如果clipToBounds設置為false並且maskToBounds設置為true會發生什么,或者如果有人添加屏幕截圖可能會更好

我偶然發現了同樣的問題,我想在視圖中設置角半徑和陰影。

但這是不可能的,因為只要我將masksToBound設置為YES就會刪除陰影但剪切內容,如果我將其設置為NO則顯示陰影但不剪切內容。

我已經完成了解釋它的項目了解ClipToBound和MasksToBound

我得出結論,CALayer不是一個容器,但它只是一個代表屏幕上帶有可視內容的矩形的類。 在UIView上完成的每個繪圖都在CALayer上進行,這會導致可視內容的繪制

masksToBound設置為NO masksToBound設置為YES

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM