2012-11-24 2 views
2

저는 NSPopupButton을 가지고 있으므로 선택한 제목에 맞게 크기를 조정하고 싶습니다.NSPopupButton의 크기를 선택한 제목으로 조정하십시오.

팝업이 아닌 내가 성공하지 않고 5 가지 방법으로 시도했습니다

하나를 선택 현재에 가장 큰 제목 항목으로 크기가 조절되기 때문에 [NSPopupButton sizeToFit]가 내 요구에 맞지 않는 가까이는

#define ARROW_WIDTH 20 
NSDictionary *displayAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[popup font], NSFontAttributeName, nil]; 
NSSize titleSize = [popup.titleOfSelectedItem sizeWithAttributes:displayAttributes] + ARROW_WIDTH; 

입니다

그러나 상수 값 ARROW_WIDTH는 정말 더럽고 오류가 발생하기 쉬운 솔루션입니다. 나는 당신이 결코 뷰 계층에 추가하지 않는 텍스트 필드 크기 조정을 시도

+1

것 같아요 문제는 실제로 아래로 비등 : 프로그래밍 방식으로 화살표/삼각형 팝업 컨트롤의 크기를 쿼리하는 방법? – Jay

답변

5

내가 텍스트 필드에 이러한 문제를 처리 한 방법입니다 필요 같은 상태 표시 줄에

TextWrangler 인코딩 콤보 작동합니다. 재사용 할 의사가없는 객체에서 sizeToFit을 호출 한 다음이를 사용하여 실제 컨트롤이 필요한 작업에 얼마나 필요한지 알아냅니다. (이 누출로가 아닌 ARC 프로젝트 ARC, YMMV를 사용하는 가정)

그래서, 의사 코드, 당신은이 작업을 수행 할 것 :

그래서
NSArray *popupTitle = [NSArray arrayWithObject: title]; 
NSPopUpButton *invisiblePopup = [[NSPopUpButton alloc] initWithFrame: CGRectZero pullsDown: YES]; 
// Note that you may have to set the pullsDown bool to whatever it is with your actual popup button. 
[invisiblePopup addItemWithTitle: @"selected title here"]; 
[invisiblePopup sizeToFit]; 
CGRect requiredFrame = [invisiblePopup frame]; 
self.actualPopup.frame = requiredFrame; 
관련 문제