您可以通過剪切您需要的圖像部分然後將其設置爲導航欄的背景來完成此操作。
這裏是切出圖像的一部分的類別:
.H
#import <UIKit/UIKit.h>
@interface UIImage (Crop)
-(UIImage*)cropFromRect:(CGRect)fromRect;
@end
.M
#import "UIImage+Crop.h"
@implementation UIImage (Crop)
-(UIImage*)cropFromRect:(CGRect)fromRect
{
fromRect = CGRectMake(fromRect.origin.x * self.scale,
fromRect.origin.y * self.scale,
fromRect.size.width * self.scale,
fromRect.size.height * self.scale);
CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, fromRect);
UIImage* crop = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];
CGImageRelease(imageRef);
return crop;
}
@end
然後在您的viewDidLoad
:
//Cut out part of image where nav bar sits
UIImage *navBG = [[UIImage imageNamed:@"cVyuX.png"] cropFromRect:CGRectMake(0, 20, 320, 44)];
//Set nav bar image
[[UINavigationBar appearance] setBackgroundImage:navBG forBarMetrics:UIBarMetricsDefault];
//Remove gray seperator
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
我是能夠產生這樣的:

你還需要將電池背景Alpha設置爲0。 – Macondo2Seattle
除此之外,灰分離仍是一個問題。 –
我回答以下,但請澄清你想達到什麼樣的,你想看到你的身後表視圖或只是在導航欄上方的整個背景是什麼? – JustAnotherCoder