Какие вспомогательные функции Cocoa / Core Foundation вы хотели бы знать примерно 2 года назад? - PullRequest
13 голосов
/ 04 февраля 2009

Я только что обнаружил вспомогательные функции NSRect в NSGeometry.h (то есть NSMidX, NSMaxX и т. Д.)

Это сделало бы некоторое повторяющееся кодирование намного проще. Я знал о NSMakeRect, NSMouseInRect, NSOffsetRect и многих других, но почему-то пропустил функции, которые помогают в пересчете геометрии NSRect.

Ответы [ 7 ]

16 голосов
/ 04 февраля 2009

Я нашел NSStringFrom * () полезным при регистрации структур, таких как CGRect, CGPoint и т. Д.

Подробный обзор можно найти в справочнике по основным функциям Apple (ссылка на Wayback Machine).

5 голосов
/ 06 июня 2010

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

void NSDrawThreePartImage(NSRect frame,
    NSImage *startCap,
    NSImage *centerFill,
    NSImage *endCap,
    BOOL vertical,
    NSCompositingOperation op,
    CGFloat alphaFraction,
    BOOL flipped
);

Также ищите NSDrawNinePartImage

4 голосов
/ 04 февраля 2009

Большая часть материала в NSPathUtilities.h. Я знал об этом два года назад, но когда я впервые нашел его, мне было жаль, что я не видел его два года назад. : -)

В какой-то момент я потратил довольно много времени, потому что я не знал о NSCountingSet , и сделал беспорядок в своей замене на основе словаря. Я знаю несколько случаев, когда люди совершали подобные вещи, потому что они вообще не знали о NSSet . Еще одна хорошая «скрытая» коллекция - CFBinaryHeap , которая реализует очередь приоритетов, но не имеет эквивалента NS.

4 голосов
/ 04 февраля 2009

Это тот, который я хотел бы знать около 6 месяцев назад. Я создавал наше первое приложение для iPhone и хотел создать простой файл справки на основе HTML с использованием контроллера UIWebView.

Однако я не мог понять, как встраивать локальные изображения, которые я сохранил в Bundle, и я не хотел, чтобы у пользователя был доступ в Интернет для получения изображений с сервера.

Мало ли я знал, что мог бы сделать следующее, чтобы получить изображения из основного комплекта

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSURL *bundleBaseURL = [NSURL fileURLWithPath: bundlePath];

[webView loadHTMLString:htmlContent baseURL: bundleBaseURL];

Изображение в вашем HTML может вызывать локальные изображения напрямую.

<img src="yourImageFromTheMainBundle.jpg" />

Я понятия не имел, что смогу установить baseURL с расположением Bundle.

3 голосов
/ 04 марта 2009

Создание цвета из рисунка с помощью

[UIColor colorWithPatternImage:[UIImage imageNamed:@"mypattern.png"]];
3 голосов
/ 04 февраля 2009

Один, который я помню

+ (NSBezierPath *)bezierPathWithRoundedRect:(NSRect)rect xRadius:(CGFloat)xRadius yRadius:(CGFloat)yRadius

Конечно, довольно неплохо понять, как вручную нарисовать скругленный прямоугольник. Есть и другие, к которым я так привык.

0 голосов
/ 04 марта 2009

Это ярлык вместо пропущенного мной вызова библиотеки, но он в духе потока.

Один ярлык, который я часто использую, использует оператор встроенного формата в вызовах NSLog.


NSLog(@"x=%@", [someobject className]);

вместо более многословного


NSLog([NSString stringWithFormat:@"x=%@", [someobject classname]]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...