如果您從界面構建器添加控件並使用其IBOutlet旋轉它,則不會發生這種情況。您不必使用「setAnchorPoint:」方法; 「setFrameCenterRotation:」方法本身將工作。然而當我試圖旋轉NSCell中的NSButton作爲子視圖時,同樣的事情發生在我身上。解決方法是在controlView中有一個NSView作爲子視圖(參考下面的NSCell子類),NSButton需要旋轉作爲新的NSView的子視圖。
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView{
if (![btnCheckBackView superview]) {
//btnCheckBackView is my NSView holding the NSButton "btnCheck"
[btnCheckBackView setFrame:NSRectFromCGRect(CGRectMake(9, cellFrame.origin.y+8, 28, 28))];
[controlView addSubview:btnCheckBackView];
if (![btnCheck superview]) {
[btnCheck setFrame:NSRectFromCGRect(CGRectMake(0, 0, 28, 28))];
[btnCheckBackView addSubview:btnCheck];
}
}
// NSLog(@"drawWithFrame");
// NSLog(@"Rect %d,%d,%d,%d",(int)cellFrame.origin.x,(int)cellFrame.origin.y,(int)cellFrame.size.width,(int)cellFrame.size.height);
// NSLog(@"controlView %d,%d,%d,%d",(int)controlView.frame.origin.x,(int)controlView.frame.origin.y,(int)controlView.frame.size.width,(int)controlView.frame.size.height);
}