가끔 NSView의 치수를 프로그래밍 방식으로 변경하고 싶습니다. 이렇게하려면 다양한 뷰의 크기를 가져 와서 서로 상대적으로 조정 한 다음 setFrame :을 사용하여 위치를 변경하는 것이 좋습니다.왜 NSView의 프레임 메소드가 잘못된 결과를 반환합니까?
프레임 방식은 일반적으로 내 관점에서 명백하게 잘못된 NSRects를 반환합니다.
인터페이스 빌더에 NSPanel이 설정되어 있고 내 프로그램에 다양한 연결이있는 프로그램이 있습니다. 프레임에 의해 반환 된 NSRects를 테스트하기 위해 응용 프로그램의 awakeFromNib : 메서드에서 패널을 열고 NSRects를 검색하여 콘솔에 출력했습니다. (ⅰ) 패널 모두 컨트롤이 화면에 표시됩니다
in awakeFromNib
the frame is 0, 0, 0, 0
the frame is 0, 1079230464, 0, 1078329344
하는 것으로이 코드의
- (void)awakeFromNib {
NSLog(@"in awakeFromNib");
[self showPrefsSheet:self]; //this is the prefs sheet with the controls of interest
//note that it does indeed pop up and is displayed
originalFrame = [aTextView frame];
NSLog(@"the frame is %d, %d, %d, %d", originalFrame.origin.x, originalFrame.origin.y, originalFrame.size.width, originalFrame.size.height);
originalFrame = [aButton frame];
NSLog(@"the frame is %d, %d, %d, %d", originalFrame.origin.x, originalFrame.origin.y, originalFrame.size.width, originalFrame.size.height);
return;
}
결과는 콘솔에서 다음과 같이 : 여기
내로 awakeFromNib입니다 ; (ii) 콘센트가 제대로 연결되어 있다는 사실을 알고 있습니다. 프로그래밍 방식으로 컨트롤에 작업을 수행 할 수 있기 때문입니다. (iii) 인터페이스 작성기는 "크기 & 위치"아래의 속성에서 정확한 프레임 크기를 보여줍니다. 요약하면 프로그램에 대한 모든 것이 완벽하게 작동합니다. 실제로 프레임 치수가 제대로 설정되지 않은 것 같습니다.누군가 실제 프레임 정보를 검색하는 방법을 말해 줄 수 있습니까? 또는 적어도 내가 본 결과를 설명하십시오.
소년, 내 얼굴이 붉어! 감사합니다. Kailoa. 나는 바보 같지만 이걸 내 뒤에 넣을 수있어서 기쁩니다. – Dennis
문제 없습니다. 나는 슈퍼 유용한 매크로를 추가 할 것이다. – amattn