Ios 如何在用户点击“时设置导航栏颜色”;“更多”;在UIActivityViewController上?
每当用户想要选择默认情况下未列出的新共享方法或操作时,通过点击UIActivityViewController生成的共享表上的“更多”按钮,将显示一个新视图,如下所示:Ios 如何在用户点击“时设置导航栏颜色”;“更多”;在UIActivityViewController上?,ios,objective-c,Ios,Objective C,每当用户想要选择默认情况下未列出的新共享方法或操作时,通过点击UIActivityViewController生成的共享表上的“更多”按钮,将显示一个新视图,如下所示: 如您所见,导航栏的图标为白色,而背景为浅灰色。如何更改这些颜色以反映我的应用程序界面?在导航栏上设置tintColor和barTintColor: self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; self.nav
如您所见,导航栏的图标为白色,而背景为浅灰色。如何更改这些颜色以反映我的应用程序界面?在导航栏上设置
tintColor
和barTintColor
:
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
tintColor
用于导航项和条形按钮项
bartincolor
if用于导航栏背景。在打开之前在模式上设置此属性,类似于:
modal.navigationController.navigationBar.barTintColor = ...
你能提供一些代码让我们看看你现在在尝试什么吗 我做了这件事,它对我很有用: 子类
UIActivityViewController
和重写-(void)presentViewController:动画:完成:
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
[viewControllerToPresent.view setTintColor:[[UINavigationBar appearance] tintColor]];
for (UIView *view in viewControllerToPresent.view.subviews) {
if ([view isKindOfClass:[UINavigationBar class]]) {
UINavigationBar *navigationBar = (UINavigationBar*)view;
UIImage *navigationBarImage = [[UINavigationBar appearance] backgroundImageForBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[navigationBar setBackgroundImage:navigationBarImage forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[navigationBar setTitleTextAttributes:[[UINavigationBar appearance] titleTextAttributes]];
}
}
[super presentViewController:viewControllerToPresent animated:flag completion:^{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
if (completion) {
completion();
}
}];
}
您可能正在使用UIAppearance选择器通过在类中调用来修改应用程序上的所有导航栏。相反,在单个对象上调用外观方法,这将避免系统导航栏被这样着色。这会在共享工作表上更改栏,但当点击“更多”按钮时,会打开一个具有不同栏颜色的模式。