티스토리 뷰

반응형

 

 

 


setNeedsDisplay()

setNeedsDisplay 메서드는 UIView의 인스턴스 메서드입니다.

해당 메서드는 특정 UIView의 모습을 업데이트하고 싶을때, 다음 UIView의 업데이트 주기에서 draw(CGRect) 메서드를 통해 뷰를 다시 그려줘야 함을 시스템에 알려줍니다.

 

 


Declaration
선언 방식


setNeedsDisplay() 메서드는 UIView 인스턴스로부터 접근해서 사용할 수 있습니다.

특정 UIView의 모습을 업데이트하고 싶을때,setNeedsDisplay() 메서드를 호출하면,
-> 다음 업데이트 주기에서 UIView가 업데이트 되도록 시스템에 알려주게 되며
-> 이후 다음 주기에서 UIView가 draw(CGRect)를 호출하면서 뷰가 새롭게 업데이트 됩니다. 

 

 


setNeedsDisplay 사용 간 참고사항

앞서 말했듯이, setNeedsDisplay(_:) 메서드는 호출 시, "현재 UIView의 컨텐츠가 다시 그려져야 한다!!" 라고 시스템에게 통보해줍니다. 
해당 메서드는 해당 통지 요청을 한 뒤 즉시 반환합니다. 

setNeedsDisplay(_:) 메서드를 호출했다고 바로 뷰가 업데이트 되는 것은 아닙니다. 해당 뷰는 다음 업데이트 주기에서 업데이트 됩니다.
setNeedsDisplay 호출 후 -> 다음 업데이트 주기가 되고 draw(CGRect) 메서드가 호출 될 때, 해당 뷰의 변경 될 사항들이 한번에 업데이트 됩니다.

Note
만약 뷰의 업데이트 될 사항이 CAEAGLLayer 객체에 의해 뒷받침 되는 경우, 해당 메서드(setNeedsDisplay)는 어떠한 효과도 발생하지 않습니다. setNeedsDisplay 메서드는 오직 UIKit, CoreGraphics 와 같은 원시적 그리기 기술을 사용한 뷰에 대해 적용하도록 설계되어있습니다. 

 

 

개발자들은 UIView의 변경요소가 생겼고, 업데이트 되어야 할 때에만 해당 메서드 setNeedsDisplay를 사용해야 합니다.

contentMode와 같이 뷰의 기하적인 부분을 바꾸려고 한다면, setNeedsDisplay 메서드의 사용은 적절치 않습니다. 이때는 대신 contentMode 프로퍼티를 변형해서 설정하는 것이 옳습니다. 

 

 

 


UIView에 존재하는 변화가 있을때에만 컨텐츠들을 재 업데이트하는 요청하는 것은
-> 뷰가 별도의 변화가 없을때 불필요하게 그려지는 것을 피할 수 있게 되고, 이는 성능 향상을 기대할 수 있게 되므로, 신경써주어야 되겠습니다.

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함