Ответ 1
Лучший способ - переопределить drawRect в UINavigationBar и использовать пользовательское изображение.
Я хочу обойти верхнюю правую и верхнюю левую части UINavigationBar.
Я знаю, что есть функции для изменения углового угла обзора, но возможно ли сделать что-то похожее на стандартный UINavigationBar?
Если вы не знаете, о чем я говорю, ознакомьтесь с этим:
Спасибо!
Лучший способ - переопределить drawRect в UINavigationBar и использовать пользовательское изображение.
для меня работает следующий код (проверен на 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;
Вы можете найти это полезным. Может быть, вы также можете сделать маскировку с помощью CoreAnim/Image? Я не очень хорошо разбираюсь в семье Core *...
http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html