首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationItem中的SearchBar

UINavigationItem中的SearchBar
EN

Stack Overflow用户
提问于 2011-08-09 11:01:22
回答 2查看 1.8K关注 0票数 0

我使用以下代码在UINavigationItem中添加了一个搜索栏:

代码语言:javascript
复制
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[searchBar sizeToFit];
searchBar.delegate = self;
self.navigationItem.titleView = searchBar;
self.navigationItem.title = self.category.title;
[searchBar release];

但结果UI如下所示:

如何更改搜索栏的颜色并使其与导航栏的背景相同?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-09 11:11:10

对于UINavigationBar,有多种方法可以操纵它的背景色:

  1. 将tintColor属性设置为所需的颜色。
  2. 遵循建议的修改方式以应用自定义渐变或其他图案图像- - 

对于搜索栏,tintColor也是可用的。但在你的例子中,我建议继承UISearchBar,并提供如下所示的实现,以完全摆脱后台绘制例程。在这种情况下,你会在一个透明的工具栏上看到搜索栏,并且你只需要管理UINavigationBar的颜色。

代码语言:javascript
复制
//TransparentSearchBar.m

@interface TransparentSearchBar()
- (void)removeBackgroundView;
@end

@implementation TransparentSearchBar

- (id)init
{
    self = [super init];

    if(self) {
        [self removeBackgroundView];
    }

    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder 
{
    self = [super initWithCoder:aDecoder];

    if(self) {
        [self removeBackgroundView];
    }

    return self;
}

- (id)initWithFrame:(CGRect)frame 
{
    self = [super initWithFrame:frame];

    if(self) {
        [self removeBackgroundView];
    }

    return self;
}

- (void)removeBackgroundView 
{
    for (UIView *view in self.subviews)
    {
        if ([view isKindOfClass:NSClassFromString
             (@"UISearchBarBackground")])
        {
            [view removeFromSuperview];
            break;
        }
    }
}

@end
票数 4
EN

Stack Overflow用户

发布于 2011-08-09 11:10:18

如果你看到关于UISearchBar的文档,它的属性是"tintColor“。将其设置为导航栏的颜色。

如果您不知道导航栏的颜色,请获取navigationbar的tintColor。

你可能还想使用搜索栏的“半透明”属性。可能会更好用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6990950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档