drawInteriorWithFrame : inView : [super drawInteriorWithFrame : cellFrame inView : controlView]를 호출 할 때 NSTextFieldCell의 텍스트가 그려지는 위치를 가져 오는 방법이 있습니까?NSTextFieldCell 표준 텍스트 그리기 위치
1
A
답변
2
텍스트 사각형은 신비 2 픽셀 수평 삽입과 cellFrame
을 통과 titleRectForBounds:
의 반환 값이다 : 나는 확실히 모르는
// this code ...
NSRect bounds = NSInsetRect(cellFrame, 2, 0); // dont ask me why
NSRect titleRect = [self titleRectForBounds:bounds];
[self.attributedStringValue drawInRect:titleRect];
// ... is equivalent to
[super drawInteriorWithFrame:cellFrame inView:controlView];
무엇 모든 운영을 시도하여,이 실험적으로 파악 된 것에 대한 그 2 픽셀 스탠드 가능한 모든 텍스트 필드 구성으로 10.6 - 10.9 미리보기를 지원합니다. 항상 무조건 2px 인세 트가있는 것 같습니다. 브레이크 포인트를 설정하고 디버거 디스 어셈블리를 조사하여 기본 구현이 정확히 해당 매개 변수를 사용하여 NSInsetRect
을 호출하는지 쉽게 확인할 수 있습니다.
내 생각 엔 다음 2 픽셀의 삽입이 시작하거나 더 나은 타이포그래피의 이익을 위해 범위를 벗어 편지 스틱을 중지 할 때 (확대 클리핑 방지하고 어디 W 자세히 보면 필요 또는 A 문자 정말는 H 말에 비해 렌더링 또는 피).
[This] (http://www.quantum-step.com/download/sources/mySTEP/AppKit/Sources/NSCell.m)는 약간의 통찰력을 줄 수 있습니다. drawInteriorWithFrame 메서드를 살펴보십시오. 베젤 유형은 1 또는 2 픽셀의 삽입을 필요로하는 것으로 보입니다. 참고 : 또한 Quantum-Step의 세로 방향입니다. Mac OS X의 Cocoa에서 그런 경우인지 모르겠습니다. –