拍照时如何更改 UIImagePickerController 中按钮的颜色?

Posted

技术标签:

【中文标题】拍照时如何更改 UIImagePickerController 中按钮的颜色?【英文标题】:How to change color of the buttons within UIImagePickerController when taking a photo? 【发布时间】:2014-11-13 19:33:28 【问题描述】:

对于 ios 7 和 iOS 8,我正在尝试将 UIImagePickerController 视图中的前/后、取消和相机按钮的按钮颜色更改为透明。我尝试过设置 tintColor、navigationBar 色调颜色和一些外观设置。

这是我对如何做到这一点的最佳猜测 - 使用 Xamarin/Monotouch,但本机代码中的答案工作正常:

UIButton.AppearanceWhenContainedIn (typeof(UIImagePickerController)).TintColor = UIColor.Clear;

我也尝试过更改导航栏选项:

var imagePicker = new UIImagePickerController();
imagePicker.NavigationBar.BarStyle = UIBarStyle.Black;
imagePicker.NavigationBar.BarTintColor = UIColor.Orange;
imagePicker.NavigationBar.Translucent = true;
imagePicker.NavigationBar.TintColor = UIColor.Blue;

没有效果。这是它不起作用的示例。 (试图使绿色区域透明)

使按钮背景透明的最佳方法是什么?谢谢!

【问题讨论】:

这些是 Xcode 的模板按钮还是您使用自定义按钮? 只是标准的 UIImagePickerController。感谢您的帮助,我一定缺少一些简单的东西。 我不认为 navigationBar 属性对 UIImagePickerController 控件有任何影响。如果我没记错的话,默认情况下背景应该是透明的。您是否在代码中的其他地方明确更改了颜色? 是的,我们正在使用外观类设置色调等。我想从外观设置中排除这些控件,但我无法弄清楚要排除什么类型。任何的想法?考虑循环遍历所有子视图等... 你能展示你用来显式改变颜色的代码吗? 【参考方案1】:

UIAppearanceUIImagePickerController 上不适合你(至少从 iOS 8.1 开始)。许多内置控制器也是如此,例如电子邮件控制器等。

为了满足您的需要,可以选择完全替换相机上的 UI。然后你可以随心所欲地设计它。基本上将ShowsCameraControls 设置为false 并添加您自己的视图,您可以通过编程方式调用更改闪光灯和启动相机的方法。

这肯定是更多的工作,但可能是你唯一的选择。

【讨论】:

我得到了这个工作 - 但首先没有使用 UIAppearance 进行全局设置。感谢您为我指明正确的方向。

以上是关于拍照时如何更改 UIImagePickerController 中按钮的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 UIImagePickerController 何时更改相机类型?

使用本机反应更改相机类型后立即拍照

Maximo Anywhere - 拍照 - 应用功能问题

如何拍照并同时保存(swift3)

我的应用程序启动时如何在没有预览的情况下从相机拍照?

如何使用 CameraSource 拍照?