我想圍繞UINavigationBar的右上角和左上角。UINavigationBar圓角的兩個角落
我知道有更改視圖角半徑的函數,但它可以做類似於標準UINavigationBar的東西嗎?
如果你不知道我在說什麼,看看這個:
謝謝!
我想圍繞UINavigationBar的右上角和左上角。UINavigationBar圓角的兩個角落
我知道有更改視圖角半徑的函數,但它可以做類似於標準UINavigationBar的東西嗎?
如果你不知道我在說什麼,看看這個:
謝謝!
最好的方法是在UINavigationBar中重寫drawRect並使用自定義圖像。
-drawRect:不會在iOS 5中調用 - 請參閱http://stackoverflow.com/questions/5575821/custom-nav-bar-styling-ios/6389991#6389991 – 2012-04-20 20:33:08
感謝您對此進行更新。儘管如此,我希望現在每個人都瞭解UIAppearance協議。 – 2012-07-09 03:41:18
你可能會覺得這有幫助。也許你也可以用CoreAnim/Image做一些掩蔽?我並不瞭解Core *系列非常熟悉......
http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html
下面的代碼對我的作品(在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;
它可以改變視角角落,但它會影響所有的角落! – 2012-04-13 19:34:47