iOS–部分UI控件的颜色文字设置

总结并记录下近期在开发中UI控件外观设置的知识和遇到的问题。

将StatusBar的文字设置为白色

要将statusBar的文字设置为白色需要在TARGETS->Info中Custom iOS Target Properties中添加两个属性。第一个是View controller-based status bar appearance,将其设置为NO;第二个是Status bar style,设置为UIStatusBarStyleLightContent。

NavigationBar的外观设置可以通过UIApperance设置。

UINavigationBar *navAppearance = [UINavigationBar appearance];
// NavigationBar的title的字体属性设置
NSDictionary *textAttributes = @{
                                 NSFontAttributeName:[UIFont systemFontOfSize:21],
                                 NSForegroundColorAttributeName:[UIColor whiteColor]
                                 };
[navAppearance setTitleTextAttributes:textAttributes];

// NavigationBar的barTintColor设置bar的背景色
[navAppearance setBarTintColor:[UIColor orangeColor]];

// NavigationBar的tintColor设置bar的UIBarButtomItem的颜色
[navAppearance setTintColor:[UIColor whiteColor]];

下图介绍了UINavgationBar的属性

UINavgationBar的属性

UITableView的背景色设置

UITableView的背景颜色是不能通过backgroundColor设置的,需要替换UITableView的backgroundView。可以在-viewDidLoad方法中替换backgroundView。

UIView *view = [[UIView alloc] initWithFrame:self.tableView.frame];
[view setBackgroundColor:[UIColor grayColor]];
[self.tableView setBackgroundView:view];

UISearchBar的设置

UISearchBar的属性和UINavigationBar设置的地方差不多都是修改了barTintColor和tintColor。 前几日在开发中尝试使用了的UISearchBarController这个控制器,UISearchBarController的UISearchBar有个特性就是,当点击UISearchBar的时候会自动将界面中的UINavigationBar向上滑出界面来隐藏,同时UISearchBar会随之上滑占据原来UINavigationBar的位置。但是我遇到了一点击UINavigationBar隐藏但是UISearchBar也会消失的问题,在网上查了才发现是因为我将UINavigationBar的Translucent属性设置为了NO,这个属性的默认值是YES,会将UINavigationBar变为半透明。没想到这属性会和UISearchBarController的自带动画效果冲突,将其设置为YES便可以解决这个问题。如果不需要隐藏navigationBar可以在UISearchBarController中设置

self.searchController.hidesNavigationBarDuringPresentation = NO;