Я не уверен, что это лучший способ сделать это, но я просто делаю простую математику, когда хочу центрировать подпредставление внутри его родителя.
Вам необходимо установить все поля для автоматического изменения размера, если вы хотите, чтобы он оставался по центру.
[subview setFrameOrigin:NSMakePoint(
round((NSWidth([parentView bounds]) - NSWidth([subview frame])) / 2),
round((NSHeight([parentView bounds]) - NSHeight([subview frame])) / 2)
)];
[subview setAutoresizingMask:NSViewMinXMargin | NSViewMaxXMargin | NSViewMinYMargin | NSViewMaxYMargin];
Это просто расчет полей, необходимых для получения центрированного источника.
Если вам нужен центрированный кадр перед вызовом initWithFrame:
, просто используйте приведенную выше логику для вычисления значений начала кадра.