Этого не произойдет, если вы добавите элемент управления из конструктора интерфейса и поверните его с помощью IBOutlet. Вам не нужно будет использовать метод "setAnchorPoint:"; "setFrameCenterRotation:" сам метод будет работать. Однако то же самое случилось со мной, когда я попытался повернуть NSButton, который есть в моем NSCell, как подпредставление. Решение состояло в том, чтобы иметь NSView в качестве подпредставления в controlView (см. Подкласс NSCell ниже), а NSButton I требует вращения в качестве подпредставления этого нового 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);
}