0

我有一个根视图控制器,我需要知道如何将其蓝色背景更改为图像或更改其颜色,并且还想在其右侧添加图像。例如在下图中,我需要将文本根视图控制器的背景更改为另一个图像或更改其颜色并在根视图控制器文本的右侧添加一个小图标。我应该怎么做?我已经浏览了每个导航上的更改导航栏背景图像,但仍然无法实现它。

AppDelegate.h

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

视图控制器.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

这是我的故事板

4

2 回答 2

2

尝试将这些代码中的任何一个放入ViewWillAppear/ViewDidAppear/didFinishLaunchingWithOptions(在 appDelegate 的情况下)。

1)navigationItem.titleView = [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"urtitlebar.png"]];

或者

2)

UIView *myView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage     imageNamed:@"urtitlebar.png"]];
[image setFrame:CGRectMake(0, 0, 44, 44)];
[myView addSubview:image];
[self.navigationController.navigationBar addSubview:myView];

或者

3)

UINavigationBar *navBar = self.navigationController.navigationBar;
UIImage *image = [UIImage imageNamed:@"urtitlebar.png"];
[navBar setBackgroundImage:image];

编辑:(如果你使用旧版本的 SDK 说 3.2.5)

创建子视图UINavigationBar并覆盖调用的方法 -drawRect:(CGRect)rect与,

@implementation UINavigationBar (BackgroundImage)

- (void)drawRect:(CGRect)rect 
{
    UIImage *navBarImage;


        image = [UIImage imageNamed: @"urNavigationBar.png"];
    }
    [navBarImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@结尾

于 2013-08-27T08:28:59.500 回答
0

在 AppDelegate.m 的 didFinishLaunchingWithOptions 中尝试此代码以获取导航栏上的自定义图像。

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"yourImageName.png"] forBarMetrics:UIBarMetricsDefault];

您还可以将自定义按钮添加为条形按钮。

 // create a custom button in viewDidLoad of your ViewController in which you want to place a custom bar button
 UIButton *customBackBtn =[[UIButton alloc] init];
[customBackBtn setBackgroundImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal];
customBackBtn.frame = CGRectMake(100, 100, 52, 31);

// set this customized button as BarButton
UIBarButtonItem *backBtn =[[UIBarButtonItem alloc] initWithCustomView:customBackBtn];
[customBackBtn addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = backBtn;

而已。

于 2013-08-27T08:15:14.590 回答