Я думаю, что это невозможно с NSFormCell.
Первое, что я пробовал:
self.form.drawsCellBackground = YES;
self.form.cellBackgroundColor = [NSColor redColor];
Это, как представляется, рисуем фон только за ярлыком. Некоторые дополнительные испытания показали, что один NSFormCell охватывает как ярлык, так и текстовое поле, а задний фон - за обоими. Когда текстовое поле рисует сверху, его собственный фон покрывает красный цвет.
Далее я подклассифицировал NSFormCell. Единственный метод, который будет называться, - -drawWithFrame:inView:
. Рамка, опять же, охватывает как метку, так и текстовое поле. Вид управления - это NSForm. Если я рисую свой собственный фон, а затем вызывается [super drawWithFrame:inView:]
, он отображается так же, как и выше, видимый за меткой, но не отображается за текстовым полем. Если я вызываю супер, а затем рисую фон, он появляется на обоих.
Реализация NSFormCell не вызывает -drawInteriorWithFrame:inView:
, и, как представляется, не дает другой точки переопределения.
Я попытался установить highlighted
и реализовать -highlightColorWithFrame:inView:
- тот же выпуск.
Хотя я пытался понять, как все это работает, я также пробовал подклассифицировать NSForm. Единственный связанный с рисованием метод - -drawRect:
. Эти методы никогда не вызывают: -drawCellAtIndex:
, -drawCellAtRow:column:
, -drawCell:
, -drawCellInside:
.
Помимо получения Apple, чтобы исправить это, единственные решения, которые я вижу, пытаются использовать супермаркет NSSMorm NSMatrix или просто использовать метки и текстовые поля.