我在iOS 9上使用UIScrollView有两个页面,对于第一页我希望状态栏文本为黑色,第二页为白色。因此,当我滑动到第二页时,如果我滑动到第一页,我希望状态栏颜色变为白色和黑色。
我试过设置 在plist文件中UIViewControllerBasedStatusBarAppearance为false 然后以编程方式调用:
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackTranslucent;
SetNeedsStatusBarAppearanceUpdate();
但没有运气,状态栏文本显示为白色,即使在调用UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackTranslucent时也会保持白色。
知道如何在同一个视图控制器中手动更改状态栏文本颜色吗?
答案 0 :(得分:4)
转到您的应用程序Plist并将其添加为新行&将其设为NO。
查看基于控制器的状态栏外观否
添加bool以确定UIStatusBar颜色的状态&添加切换方法
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if !frequency[indexPath.row].selected {
// this avoid set initial value for the first time
if let index = indexPathForCellSelected {
// clear the previous cell
frequency[index.row].selected = false
tableView.cellForRowAtIndexPath(index)?.accessoryType = .None
self.total -= frequency[index.row].amount
}
// mark the new one
frequency[indexPath.row].selected = true
tableView.cellForRowAtIndexPath(indexPath)?.accessoryType = .Checkmark
indexPathForCellSelected = indexPath
self.total += frequency[indexPath.row].amount
}
}
答案 1 :(得分:3)
如果您正在为视图控制器使用导航控制器,请尝试更改属性:
NavigationController.NavigationBar.BarStyle
“默认”应为黑色,“LightContent”应为白色。我相信黑色选项已被弃用。
否则,您可以在Info.plist中选择基于View Controller的状态栏样式,并使用preferredStatusBarStyle property提到的here。
在ViewDidLoad方法中,执行SetNeedsStatusBarAppearanceUpdate();
添加以下方法:
public override UIStatusBarStyle PreferredStatusBarStyle()
{
return UIStatusBarStyle.LightContent; //Or Default/Black/etc.
}
注意:在iOS 9中已弃用UIApplication.SharedApplication
来更改状态栏样式。请改用上述方法。希望这有帮助。干杯!
答案 2 :(得分:0)
如果使用导航控制器,则添加:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
}