Какао контролирует местоположение текста? - PullRequest
2 голосов
/ 19 июля 2009

Можно ли получить координаты того места, где текст нарисован в стандартных (не пользовательских) элементах управления Какао? На самом деле мне нужна базовая линия текста, значение смещения по оси Y (относительно оси Y прямоугольника рамки представления). Это то, что Interface Builder показывает на панели дизайна, когда выбран Layout-> Show Layout Rectangles.

1 Ответ

2 голосов
/ 20 июля 2009

К сожалению, нет единого решения, которое бы работало для всех элементов управления и ячеек. Вы должны быть в состоянии получить хорошее приближение к этой информации с помощью этих методов:

-[NSCell titleRectForBounds:]
-[NSCell font]
-[NSFont ascender]

Вот код, который работает для NSButton / NSButtonCell

NSRect titleRect = [[button cell] titleRectForBounds:[button bounds]];
CGFloat baseline = ceil(NSMinY(titleRect) + [[[button cell] font] ascender]);

В этот момент базовая линия находится в координатном пространстве кнопки (в границах). Вы можете преобразовать его в другое пространство с помощью - [NSView convertPoint: toView:];

Кроме того, этот «потолок» есть в приближении. Не все элементы управления будут делать это. Кто-то может пол или использовать другую функцию округления. Или они могут расположить заголовок совершенно иначе, и это приближение не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...