如何在IOS中删除uibaritem背景图像?

时间:2013-11-25 07:26:54

标签: ios image uibarbuttonitem

您好我使用此代码为我的小节按钮设置背景图像。我把它放在“AppDelegate.h”中

  //-- set bar button image
    UIImage *barButtonImage = [[UIImage imageNamed:@"bar-button"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];

    [[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

它工作正常但在我的搜索控制器中我不想使用它,因为它使我的“搜索”按钮看起来非常难看。反正只有删除搜索控制器中的背景图像? Plz帮助我。谢谢!

enter image description here

4 个答案:

答案 0 :(得分:0)

在SearchController.m中尝试

[[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

答案 1 :(得分:0)

[searchBarObject setImage:nil forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];

这项工作对我来说..我希望它会对你有所帮助..

更新完整代码.. viewDidLoad中的 .m文件内容

//Table initialization..........................................................................
    my_table = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height)];

//SearchBar initialization......................................................................
UISearchBar *search = [UISearchBar new];
[search sizeToFit];
search.delegate = self;

//Make the image in size 20x20................................................................
UIImage *img = [UIImage imageNamed:@"apple.jpg"];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(20, 20), YES, 0);
[img drawInRect:CGRectMake(0, 0, 20, 20)];
UIImage *img2 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

//Set the image for the UISearchbarIconSearch...................................................
[search setImage:img2 forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];

search.barStyle = UIBarStyleBlackTranslucent;
[my_table setTableHeaderView:search];
[my_table reloadData];

//SearchDisplay initialization..................................................................
UISearchDisplayController *display = [[UISearchDisplayController alloc]initWithSearchBar:search contentsController:self];
sbc = display; //
display.delegate = self;
display.searchResultsDataSource = self;
display.searchResultsDelegate = self;

my_table.dataSource = self;
my_table.delegate = self;

[self.view addSubview:my_table];

.h文件。

@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchDisplayDelegate>

{
    NSArray *table_array;
    UITableView *my_table;
    UISearchDisplayController *sbc;
    NSArray *filtered;
}
@end

这是我更改搜索图标图片的代码......

答案 2 :(得分:0)

如果要删除搜索控制器的背景图像

[[searchBar.subviews objectAtIndex:0] removeFromSuperview];

您可以添加清晰的背景图片。

UIImageView *searchImage=[[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 319.0, 44.0)];
[searchImage setImage:[UIImage imageNamed:@"searchbg.png"]];
[searchBar insertSubview:searchImage atIndex:1];

答案 3 :(得分:0)

您可以设置自定义的位置,例如在tis片段中我只想在UINavigationBar中使用它。

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

未在xcode中检查但概念正常。这里是文档+ (instancetype)appearanceWhenContainedIn:(Class )ContainerClass,...
很棒的指南也在这里:NSHipster。 正如您所看到的那样是一个可变参数API,因此您可以设置更多类

PS:我不知道它是否是想要的效果,但是这种反射是由于图像中的错误插图造成的。