我通过调用在我的应用程序中设置了一个全局tintColor :
UIView.appearance().tintColor = myColor
但是,相同的颜色适用于UIImagePickerController,并且只有一些 UI 元素被着色:例如,太阳图标具有自定义的tintColor,而焦点框具有默认的颜色。
怎么可能不将全局外观配置应用于UIImagePickerController
?
我提出的解决方案没有完全解决这个问题,因为inputAccessoryView仍然有自己的 tintColor:
window?.tintColor = myColor
更新:
我在启动时配置应用程序范围的 tintcolor:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
configureWindowAndInitialViewController()
UIView.appearance().tintColor = .cyan // Setting a global tintColor
return true
}
然后,我展示了一个UIImagePickerController:
func presentPhotoPicker(sourceType: UIImagePickerController.SourceType) {
if let mediaTypes = UIImagePickerController.availableMediaTypes(for: sourceType)?
.filter({$0 == kUTTypeImage as String}),
!mediaTypes.isEmpty {
let picker = UIImagePickerController()
picker.delegate = self
picker.mediaTypes = mediaTypes
picker.sourceType = sourceType
picker.allowsEditing = true
controller?.present(picker, animated: true, completion: nil)
}
}
输入附件视图:
要添加输入附件视图,首先应该创建一个textField 。然后可以将工具栏附加到Textfield:
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: sefl.view, action: #selector(UIView.endEditing))
items.append(contentsOf: [spacer, doneButton])
toolbar.setItems(items, animated: false)
textField.inputAccessoryView = toolbar