[英]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.