我有一个导航控制器,它也有一个表格视图。我想以编程方式在导航栏的左侧添加图像。当我试图通过viewDidLoad中的以下代码添加:
CGRect frame = CGRectMake(0.0, 0.0, 94.0, 33.0);
UIImageView *image = [ [UIImageView alloc]initWithImage:[UIImage imageNamed:@"topBarImage.png"] ];
image.frame = frame;
[self.view addSubview:image];
但是它添加到表格视图的顶部而不是导航选项卡。我认为,这个图像应该添加为navigationItem。但我不知道如何以编程方式在导航栏的左侧添加图像。可以请一位导游吗?
来福/
答案 0 :(得分:14)
您只需使用自定义视图作为条形按钮项。以下是使用自定义图像按钮
的示例UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(blah) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 32, 32)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
你想这样做,因为导航控制器的标题将以这种方式自动调整大小。如果您按照自己的方式(导航栏的子视图)执行此操作,文本将位于图像的后面或顶部
编辑:弹出并按下视图控制器时,它也将保留在屏幕上。
edit2:再次,您可以使用imageview作为自定义视图而不是按钮。这是代码
UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,32,32)];
[iv setImage:[UIImage imageNamed:@"myImage.png"]];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:iv];
[iv release];