簡體   English   中英

UIView setNeedsDisplay調用CALayer的setNeedsDisplay嗎?

[英]UIView setNeedsDisplay calling the CALayer's setNeedsDisplay?

似乎在UIView上調用[self setNeedsDisplay]不會導致[self.layer setNeedsDisplay] 如果我如下重寫setNeedsDisplay ,可以嗎?

- (void)setNeedsDisplay {
  [super setNeedsDisplay];
  [self.layer setNeedsDisplay];
}

這會給我帶來麻煩嗎? 也許有更好的方法? 謝謝

我將其發布為對另一個答案的評論,但這可能對其他人有幫助。

實現drawRect:時,UIView僅在其基礎CALayer上調用setNeedsDisplay (即使該方法為空drawRect:執行任何操作)。 這告訴UIView的setNeedsDisplay ,它的圖層也需要完成一些繪制。

自動調用圖層的setNeedsDisplay另一種方法是將圖層的標志needsDisplayOnBoundsChange為true,只要視圖的邊界發生變化(這會自動更改圖層的邊界),就會觸發setNeedsDisplay 但是要回答您的問題,如果您不重寫drawRect:那么您正在做的事情就很好了,否則就多余了。

我不明白為什么會惹上你麻煩。 setNeedsDisplay / setNeedsLayout只是標記視圖/圖層需要顯示/布局。 下次將在運行循環中進行繪制。

盡管在視圖上調用它並不會導致它在圖層上發生,但我感到非常驚訝,因為畢竟UIView及其關聯的CALayer緊密集成在一起。

所以總的來說,是的,如果您發現它不適合您,只需在視圖上調用setNeedsDisplay ,然后尋求解決方案。 我看不出它有什么危害。

暫無
暫無

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

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