Отрисовка границ и бликов изначально в Cocoa

Как я могу рисовать блики и нечетырехсторонние границы изначально в Cocoa?

Примером является изображение ниже. Сверху есть небольшая белая внутренняя граница толщиной 1 пиксель, а снизу — серая внутренняя граница шириной 1 пиксель. Также есть темно-серая рамка только сверху и снизу вида.

Можно ли это сделать нативно? Или для этого нужны изображения?

введите здесь описание изображения


person aroooo    schedule 30.08.2012    source источник


Ответы (1)


Быстрый способ получить внутреннюю границу — использовать свойства тени слоя из вида, который вы хотите обрамить (обратите внимание на -1, который помещает границу внутри края):

myView.layer.shadowOpacity = 1.0;
myView.layer.shadowColor = [UIColor blackColor].CGColor;
myView.layer.shadowOffset = CGSizeMake( 0, -1 );

В противном случае вы можете подклассифицировать представление и поместить что-то подобное в свой метод drawRect::

[super drawRect: rect];

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState( context );
CGContextSetStrokeColorWithColor( context, [UIColor blackColor].CGColor );
CGContextSetLineWidth( context,  1.0 );

CGContextMoveToPoint( context, 0, 0 );

CGContextAddLineToPoint( context,  self.bounds.size.width, 0 );
CGContextStrokePath( context );        

CGContextRestoreGState( context );
person deepseadiving    schedule 30.08.2012
comment
Отлично, есть идеи, как я могу сделать то же самое на Mac? - person aroooo; 31.08.2012