среда, 24 апреля 2013 г.

Житейская мудрость..

:)

Полезно - когда делать интерфейс для иось (та и для макось наверное) без IBuilder-а (т.е. когда контрольчики создаются и расставляются вручную в коде) очень часто выручало - обвести контрол рамкой: сразу видно, где он, куда на сколько сьехал и т.д. Так что в последних проектах делаю полезность: в .pch файле добавляю немного кода:

#ifdef DEBUG

#import <QuartzCore/QuartzCore.h>

#define str_rect(rect)  NSStringFromCGRect(rect)
#define str_pt(pt)      NSStringFromCGPoint(pt)
#define str_sz(sz)      NSStringFromCGSize(sz)
#define str_bool(b)     (b?@"Yes":@"No")
#define str_inset(i)     NSStringFromUIEdgeInsets(i)

#define RGB3(color)  [UIColor colorWithRed:((color & 0xff0000) >> 16) / 255.0f \
                        green:((color & 0xff00) >> 8) / 255.0f \
                        blue:(color & 0xff) / 255.0f \
                        alpha:1.0]

static inline void borderControl(UIView * ctrl) {
    ctrl.layer.borderColor = RGB3(random()).CGColor;
    ctrl.layer.borderWidth = 1;
}

#endif

И потом в проблемных местах просто пишу: borderControl(loginLabel);
Проблемный контрол обведется рамкой 1-пиксельной, случайного цвета

Почему так - с таким способом а) не надо лишней писанины; б) не надо лишних import/include в) если вдруг забудется из кода убрать отладочные рамки - при сборке релиза компилятор просто ругнется

Ну и там же просто для ленивых, которым писать NSStringFromCGRect.. очень уж долго - макросы для сокращения "многобукф"; да, автокомплишн никто не отменял, но надо все равно ж набрать "NSString" пока появятся варианты, "str_" как-то побыстрее

Комментариев нет:

Отправить комментарий