在Cocoa中,當我們想要重繪一個視圖時,我們會發送一個setNeedsDisplay:
消息來告訴視圖重新繪製一個參數爲YES的視圖。我想知道是否有任何情況下您想要發送視圖setNeedsDisplay:NO
(如多線程環境),並且如果發送視圖setNeedsDisplay:YES
,然後在setNeedsDisplay:NO
之後立即再次設置視圖會使視圖重繪本身。如果沒有理由致電setNeedsDisplay:NO
,那麼爲什麼要創建這樣一個繁瑣的方法,他們可以在那裏實現類似[view redrawView]
setNeedsDisplay:沒有任何用處?
5
A
回答
1
setNeedsDisplay:NO
可用於您想放棄之前稱爲setNeedsDisplay:YES
的情況。例如。有時候將所有子視圖標記爲需要顯示然後運行一個算法來取消其中的一些標記會更容易。
-2
正如您所知,顯示更新在每次通過普通事件時都是自動的(如果需要)循環。如果需要,您可以撥打setNeedsDisplay:
以強制顯示更新。
從NSView
文檔:
討論
每當用於繪製視圖對象的數據改變或狀態,該視圖應被髮送一個setNeedsDisplay:消息。標記爲需要顯示的NSView對象在每次通過應用程序的事件循環時自動重新顯示。 (需要重新顯示事件循環惡有惡報前先查看對象當然可以立即被送到適當的顯示...方法。)
這個函數的布爾參數只是指定是否
整個邊界的有問題的視圖是否受到影響,如果某些屬性「needsDisplay」設置爲true或false,則不行。因此,
setNeedsDisplay:
確實的工作幾乎就像一個「redrawView」,只有額外的參數。
編輯
以上是從同一文檔的啓發:
標誌
如果YES,標誌着接收機的整個邊界爲需要顯示;如果否,標記爲不需要顯示。
相關問題
- 1. UIView setNeedsDisplay沒有效果?
- 2. UIView setNeedsDisplay調用CALayer的setNeedsDisplay?
- 3. QtConcurrent :: map沒有任何好處
- 4. 使用setNeedsDisplay
- 5. setApplicationIconBadgeNumber沒有任何作用
- 6. deployerConfigContext.xml沒有任何作用
- 7. appWidgetManager.updateAppWidget沒有任何作用
- 8. RemoveAttributes沒有任何作用
- 9. 有沒有辦法知道誰是「setNeedsDisplay」的發件人?
- 10. 使用CGRect和setNeedsDisplay
- 11. setNeedsDisplay revisited
- 12. drawRect不用setNeedsDisplay調用
- 13. 預處理器布魯斯有沒有任何治療方法?
- 14. 有沒有任何好處,暫停線程,讓它等待?
- 15. Dataadaptor沒有返回任何值,也沒有任何異常
- 16. 即使setNeedsDisplay和setNeedsLayout沒有更新自定義UITableViewCell
- 17. 如何處理PHP中沒有任何獲取參數的URL
- 18. 沒有任何方法沒有File.ReadAllText?
- 19. 從後臺任務中調用-setNeedsDisplay問題?
- 20. 如何使用SetNeedsDisplay刷新我的UIVIewController
- 21. 使用innerHTML沒有任何作用
- 22. SetNeedsDisplay與MonoTouch的
- 23. setneedsdisplay do not draw
- 24. display vs setNeedsDisplay
- 25. 強制setNeedsDisplay
- 26. setNeedsDisplay混亂
- 27. SetNeedsDisplay不工作
- 28. UIViewContentModeRedraw vs setNeedsDisplay?
- 29. calayer setneedsdisplay即時調用drawlayer:incontext
- 30. setNeedsDisplay爲UIImage不起作用
這在很大程度上是不正確的。事件循環檢查是否需要重繪視圖,如'setNeedsDisplay:'被調用(它確實設置了一個標誌:' - [NSView needsDisplay]')。該方法絕對不會導致立即重繪,也不一定每次都會重繪每個視圖。您提到的強制繪製行爲由' - [NSView display]'和' - [NSView displayRect:]'提供。見http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaViewsGuide/Optimizing/Optimizing.html#//apple_ref/doc/uid/TP40002978-CH11-112409 –
不夠公平。我編輯了我的答案並解釋了信息的來源。 – Mundi
@Mundi不幸的是,這並不完全回答我的問題。我問是否有任何用於'setNeedsDisplay:NO'的用法。 – TheAmateurProgrammer