2013-04-17 7 views
0

NSView에서 초록을 작성하여 스크롤 텍스트보기를 표시하는 구현이 있습니다.NSScrollView 겹쳐지는 텍스트

나는 사용자 정의 클래스에 NSView을 기반으로 표시하는 긴 문자열이 있습니다. 스크롤을 시작하자마자 선이 서로 중첩되어 읽을 수 없게됩니다. 루프가 끝나면 다시 시작할 때 겹침없이 화면의 모든 선이 표시되고 첫 번째 부분이 화면의 끝에 도달하면 나머지 도면 기간 동안 겹침이 다시 나타납니다.

여기서 해결할 수있는 아이디어가 있습니까? 정말 고마워요.

마지막

여기 하나의 텍스트가 부분적으로 중복없이 표시 가지며, 두 스크린 샷이고, 이는 제 1 루프의 끝에 그리고 텍스트의 시작을 나타낸다.

enter image description here

이 중복이 눈에 띄는이 문자열의 대부분을 표시하는 방법과 일치하는 두 번째 스크린 샷이다. 여기

enter image description here

는 (AS/복사의 drawRect는 또한 배경을 해제해야합니다 덮어 쓰기 때문에 iTunes Song Title Scrolling in Cocoa

+0

스크롤 처리 방법에 대한 코드를 보여줄 수 있습니까? 새로운 위치에 텍스트를 렌더링하기 전에보기를 제대로 지우지 않는 것처럼 보입니다. 또한, 얼마나 오래 걸릴거야? – Fogmeister

+0

답장을 보내 주셔서 감사합니다. 실제로 여기에서 소스 코드를 얻었습니다. http://stackoverflow.com/questions/3232801/itunes-song-title-scrolling-in-cocoa 그리고 나는 그것이 이것을 빨리 끌어 내릴 것이라고 생각합니다. [displayNewSentance2 setSpeed ​​: 0.01]; // 1/100 초마다 다시 그립니다. – Finley

+0

deallocs와 release를 주석 처리했습니다. – Finley

답변

1

에서 붙여 넣기, 그렇지 않으면 아무것도 그것을 통해 표시됩니다 아래에 그려로, 스크롤의 코드입니다 너는 볼 수있다) 이전 내용은 제거되지 않는다. 텍스트를 쓰기 시작하기 전에 [backgroundColor set] 호출과 NSRectFill을 추가하십시오.

+0

안녕하세요, 감사합니다. @ 마이크. 나는 을 추가했다 [[NSColor whiteColor] setFill]; NSRectFill (dirtyRect); - (void) drawRect의 시작 위치 : (NSRect) dirtyRect {} 배경은 흰색이지만 여전히 문제가 있습니다. 짧은 문자열은 문제가되지 않는 것으로 나타났습니다. 문자열이 텍스트보기의 공간 양보다 크면 어떤 이유로 모든 것을 한꺼번에 표시 한 다음 상황이 시작됩니다. 여기에 lastphotoisoverlap 예가 나와 있습니다. http://www.use.com/319a1499564027f4cba7#photo=3 http://www.use.com/319a1499564027f4cba7#photo=2 http://www.use.com/319a1499564027f4cba7#photo= 1 – Finley

+0

당신이 참조한 코드를 자세히 보면, 이것이 한 줄의 수평 스크롤을위한 것이라는 것을 알 수 있습니다. 또한 drawRect의 포인트 계산은 의심스러워 보입니다. 텍스트가 한 번 스크롤 아웃되면 출력 포인트가 텍스트 너비보다 작은 더러운 사각형으로 이동됩니다. 따라서 텍스트가 갑자기 부분적으로 다시 뷰에 기록됩니다. 그 후에도 x가 여전히 <0이면 다른 페인트가 발생합니다 (텍스트가 충분히 큰 경우 쉽게 발생할 수 있음). 그래서 이것은 텍스트를 다시 그립니다. –

+0

감사. 나는 코드의 일부를 thing.thing.y 대신에 thing.thing.x로 변경한다는 사실을 잊어 버렸다. 나는 string.width를 아무 소용이없는 높이로 변경했다. x를 0으로 비교하고 rect 너비를 텍스트 너비와 비교하는 목적을 이해하지 못합니다. 아니면, 사각형을 도면 영역으로 사용하는 경우 텍스트 높이가 사각형보다 큰 경우일까요? 이보다 작거나 같은 문자열이 있기 때문에 rect 높이로하는 것처럼 보입니다. 도움을 많이 주셔서 감사합니다. 귀하가 말씀 드린 바에 따라 생각합니다. 계속 노력하겠습니다. – Finley