用纯代码写的app页面,调整搜索框的颜色
-(void) viewDidLoad{
[super viewDidLoad];
// do this only if top level
// search bar
//self.searchBar
UISearchBar *mySearchBar= [[UISearchBar alloc] initWithFrame:CGRectMake(kFrameSearchBarX,kFrameSearchBarY+60,kFrameSearchBarWidth, kFrameSearchBarHeight)];
mySearchBar.autoresizingMask |= UIViewAutoresizingFlexibleWidth;
mySearchBar.delegate = self;
UIView *segment=[[mySearchBar subviews] objectAtIndex:0];
// [segment removeFromSuperview];
[segment setAlpha:0.5]; //设定透明度
mySearchBar.tintColor=[UIColor purpleColor]; //在textfield上的光标颜色
mySearchBar.clipsToBounds=YES;
mySearchBar.backgroundColor=[UIColor whiteColor];//背景颜色,就是底色
mySearchBar.barStyle = SPACE_BAR_STYLE; // UIBarStyleBlackTranslucent; 这里就两个样子 一个是有背后那个阴影框,一个没有
mySearchBar.showsScopeBar=YES;
//[[self.searchBar.subviews objectAtIndex:0]removeFromSuperview];
//[[[[self.searchBar.subviews objectAtIndex:0]subviews]objectAtIndex:0]removeFromSuperview];
mySearchBar.placeholder = MyLocalizedString(@"Search", @"Search");
//[self.searchBar setTintColor:[UIColor colorWithRed:1 green:1 blue:1 alpha:1]];
// [mySearchBar setTintColor:[UIColor whiteColor ]];
// [mySearchBar setBarTintColor:[UIColor whiteColor]]; //整个bar的着色
// [mySearchBar setBackgroundColor:[UIColor clearColor]];
// [mySearchBar setTranslucent:YES]; //是不是透明
[mySearchBar setBackgroundImage:[UIImage imageNamed:@"barNavStatus_NoCloud_IOS7"]]; //给searchbar设定背景图片.不能遮掩背景框
//[self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"barNavStatus_NoCloud_IOS7"] forState:UIControlStateNormal];
//[self.searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"back_btn_tc"]
forState:UIControlStateNormal];//这个有点意思哦,可以把内背景框给遮掩.图1
[
mySearchBar setShowsScopeBar:NO];
mySearchBar.tag = SEARCH_SEARCH_BAR;
//添加一个搜索
// UITextField *searchField=[[UITextField alloc] init];
// searchField.textColor = [UIColor whiteColor];
// [searchField setBackground: [UIImage imageNamed:@"barNavStatus_IOS7"]];//在这添加灰色的图片
// [searchField setBorderStyle:UITextBorderStyleNone];
//
// NSUInteger numViews=[searchBar.subviews count];
// for(int i = 0; i <= numViews; i++) {
// if([[searchBar.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) {
// searchField = [searchBar.subviews objectAtIndex:i];
// }
// }
// background button: cancel search, enable when search bar in focus
backgroundButton =
[BasicViewElements allocBackgroundButtonWithFrame:CGRectMake(0.0, 0.0, kIPhonePortraitWidth, kIPhonePortraitHeight)
withBackgroundColor:[UIColor inactiveColor]
withSelector:@selector(backgroundButtonAction:)
withTarget:self
hidden:YES];
[self.view addSubview:backgroundButton];
[self.navigationController.navigationBar.superview addSubview:mySearchBar];//一定要及时把这个bar添加到图层上.这里用superview 是因为不想加到navigationbar上,加到别的地方又被阻挡,所以加到navigationbar的父图层
[refreshLabel removeFromSuperview];
[arrow removeFromSuperview];
}
图一
遇到的问题1:调节searchbar搜索框的颜色深浅
要求的效果是这样:
而实际的效果是这样
要调整效果,试过修改searchbar的背景图片,以及背景颜色,出来的效果都不对
[self.searchBar setTintColor:[UIColor clearColor ]];//没有效果
[self.searchBar setBarTintColor:[UIColor greenColor]];//改的背景色,但不是我要的
[self.searchBar setBackgroundColor:[UIColor clearColor]];//没什么效果,改了边框颜色
在ios7.1下面,都没什么效果
不管怎么改 那个框框的深色始终是不变啊,尼玛!!!
后来找找找,发现是一开始的思路就就错了,想改它的颜色,尼玛 其实根本改不了人家的颜色.不过可以设透明度,颜色就浅了
UIView *segment=[[mySearchBar subviews] objectAtIndex:0];
// [segment removeFromSuperview];
[segment setAlpha:0.5];
这段代码就是,获取它的底层颜色,然后设置它的透明度结果就是~~
遇到的问题1:调节纯代码界面的组件位置
直接在viewDidAppear里调节 设定他们的绝对位置
而在viewWillAppear里 则可以去设定navigationbar的外观,背景啊什么的- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.tabBarItem.title = MyLocalizedString(@"Search", @"");
if(!IOS_7){
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed: @"header_logo"] forBarMetrics:UIBarMetricsDefault];
}else{
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed: @"barNavStatus_IOS7"] forBarMetrics:UIBarMetricsDefault];
}
self.navigationItem.titleView = nil;
self.navigationItem.title = nil;
//[self.tabBarItem setImage:[UIImage imageNamed: @"header"]] ;
// self.title = MyLocalizedString(@"Search", @"");
//[self.navigationItem setTitleView:self.searchBar];
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.tableView.frame=CGRectMake(0, 100, 320, [UIScreen mainScreen].applicationFrame.size.height);
self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
}