创建了iPhone和iPad都需要的UIActivityViewController
,支持iOS 8和9。
应用程序导航栏为深色,文本显示为白色。
UIActivityViewController已经被子类化了,我在这里添加了一个tintColor:
myActivityViewController.modalPresentationStyle = UIModalPresentationPopover;
[self.viewcontrollertoPopFrom.navigationController presentViewController:myActivityViewController animated:YES completion:^{
[[UINavigationBar appearance] setBarTintColor:[UIColor myDarkerColor]];
}];
目前也在UIActivityViewController子类的viewDidLoad中
这会导致条形图在所选活动(如电子邮件)中以我想要的方式显示。到目前为止一切都很好。
我唯一的问题是当用户选择用户可以选择的操作列表中的“更多”按钮时出现的“活动”弹出窗口。
我试过在我能想到的每一个组合中为系统和视图操纵UINavigationBar都无济于事。我最终得到了这个:
我错过了什么?
答案 0 :(得分:0)
尝试[[UINavigationBar appearance] setTranslucent:NO]
默认情况下,此属性设置为YES,并且根据Apple的文档:
如果在半透明的导航栏上将此属性设置为NO 自定义背景图片,导航栏提供不透明 如果导航栏有黑色图像的背景 UIBarStyleBlack样式,如果导航栏有白色 UIBarStyleDefault,或导航栏的barTintColor(如果是自定义) 价值定义。
因此,将半透明属性设置为NO
并将barTintColor
设置为自定义值应该可以解决问题。
<强>更新强>
看起来因为用户排序屏幕(“活动”)是由UIActivityViewController
生成的,您将无法自定义其导航栏超出色调颜色,这似乎只影响UIBarButtonItems
:
UIActivityViewController仍然是一个只提供自定义的API 功能,但不是自定义UI。你无法改变它的外观。该 您可以更改的视觉样式的一部分是您的自定义图标 UIActivity子类。 (Source)
我很遗憾地说,你要么必须坚持UIActivityViewController
中的系统颜色,要么创建一个可自定义的自定义控件。一个快速的Cocoapods搜索显示,没有任何最近的第三方控件可以让你这样做,但我强烈建议你分享它,如果你决定!
更新2
尽管酒吧的色调颜色无法自定义,但this answer提供了一种解决方法,可通过设置应用程序窗口的色调来更改条形图navigationItem
的颜色。
答案 1 :(得分:0)
为什么我开始看到白色文字,一位同事指出应用程序可能将appdelegate.window设置为白色。
所以现在在我分配UIActivityViewController之前,我将窗口设置为我想要的色调:
[[UIApplication sharedApplication].delegate.window setTintColor:[UIColor myColor]];
然后在UIActivityViewController中的completionWithItemsHandler中,我将它设置回原来的颜色。
虽然这不会将UINavigationBar设置为主题颜色,但它会将“完成”按钮设置为允许用户查看的按钮。