UINavigationBar Округлые две углы - PullRequest
12 голосов
/ 21 ноября 2010

Я хочу округлить верхнюю правую и верхнюю левую часть UINavigationBar.

Я знаю, что есть функции для изменения радиуса угла вида, но возможно ли сделать что-то похожее на стандартный UINavigationBar?

Если вы не знаете, о чем я, проверьте это:
image

Спасибо!

Ответы [ 3 ]

44 голосов
/ 11 февраля 2012

у меня работает следующий код (проверено на iOS5). Следующий код закругляет верхний левый / правый углы главной панели навигации. Кроме того, он добавляет тень к нему:

CALayer *capa = [self.navigationController navigationBar].layer;
[capa setShadowColor: [[UIColor blackColor] CGColor]];
[capa setShadowOpacity:0.85f];
[capa setShadowOffset: CGSizeMake(0.0f, 1.5f)];
[capa setShadowRadius:2.0f];  
[capa setShouldRasterize:YES];


//Round
CGRect bounds = capa.bounds;
bounds.size.height += 10.0f;    //I'm reserving enough room for the shadow
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds 
                                               byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight)
                                                     cornerRadii:CGSizeMake(10.0, 10.0)];

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = bounds;
maskLayer.path = maskPath.CGPath;

[capa addSublayer:maskLayer];
capa.mask = maskLayer;
10 голосов
/ 21 ноября 2010

Лучший способ - переопределить drawRect в UINavigationBar и использовать пользовательское изображение.

0 голосов
/ 21 ноября 2010

Вы можете найти это полезным.Может быть, вы могли бы также сделать какую-то маскировку с CoreAnim / Image?Я не очень хорошо осведомлен о семействе Core * ...

http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html

...