【问题标题】:Getting the UIKeyboard background color programmatically以编程方式获取 UIKeyboard 背景颜色
【发布时间】:2014-07-12 07:35:39
【问题描述】:

有没有办法获得UIKeyboard 背景颜色?我在我的UIKeyboard 上放置了一个附件视图,并试图将其颜色与键盘背景颜色相匹配。但是,似乎不同类型的键盘具有不同的背景颜色。请参阅下面的默认和电子邮件键盘屏幕截图。

有什么办法,我们可以通过编程找出键盘的背景颜色,以便改变accessoryView的颜色。

【问题讨论】:

  • 找到keyWindow,activeView,然后得到键盘的view,得到颜色

标签: ios iphone objective-c cocoa-touch uikeyboard


【解决方案1】:

斯威夫特 5

您可以使用输入视图,它与键盘样式相匹配。

let textView = UITextView()
let frame = CGRect(x: 0, y: 0, width: 0, height: 40)
textView.inputAccessoryView = UIInputView(frame: frame, inputViewStyle: .keyboard)

【讨论】:

  • 你知道如何在UIInputView 中添加UIToolbar 吗?如果我只是做uiInputView.addSubview(uiToolbar),工具栏不会出现
  • 这正是我所需要的!从未听说过UIInputView,谢谢!
【解决方案2】:

你可以这样做:

UIKeyboardAppearance currentAppearance = yourTextView.keyboardAppearance;
if (currentAppearance == UIKeyboardAppearanceDark) {
    // dark
}
else if (currentAppearance == UIKeyboardAppearanceDefault) {
    // default
}
else if (currentAppearance == UIKeyboardAppearanceLight) {
    // light
}

【讨论】:

  • 我在整个应用程序中都使用 UIKeyboardAppearanceDark。我的问题是,即使外观相同,不同的键盘似乎也有不同的背景颜色。
  • 它有点透明,你的其他视图是否会在它后面显示,导致色差?
  • 哪个稍微透明一点?第二个键盘?
  • 我的意思是两者可能是相同的颜色,但由于透明度,它们显示了它们下方的一些视图。这使它呈现出不同的颜色。不确定,只是想解决问题。键盘是否以不同的背景颜色显示?
  • 您可以使用视图作为键盘视图的背景,方法是始终将其显示在其后面……如果是这样的话。也许还有一种方法可以以编程方式获取颜色。我不太确定,我以为您正在寻找区分暗/亮等。
【解决方案3】:

我建议您从 DigitalColor Meter 获取键盘颜色的 RGB,因为我们在 Mac 中使用此工具,或者您可以通过任何其他工具获取。

然后只需将这些 RGB 值分配给您的辅助视图,并将其颜色与您的键盘匹配。

在我看来,您键盘的 RGB 值类似于 (63,63,63),您可以使用它:

[UIColor colorWithRed:63/255.0 green:63/255.0 blue:63/255.0 alpha:1]

希望对你有所帮助。

【讨论】:

  • 是的。这就是我所做的。但它似乎适用于电子邮件键盘,但不适用于其他类型的键盘。请参阅随附的屏幕截图。
  • 我不明白为什么电子邮件键盘能正常工作,而其他键盘不能正常工作。我认为它应该适用于所有类型的键盘,我们只更改背景颜色.....
  • 无法保证颜色在未来的 iOS 版本中保持不变,因此硬编码颜色值不是最好的办法。
【解决方案4】:

对于深色背景使用

 mytextfield.keyboardAppearance = UIKeyboardAppearanceAlert;

【讨论】:

  • 您使用的是哪个 ios sdk...?它对我来说非常适合..in ios 7
  • 我使用的是 iOS 7.1,我认为是视图的背景颜色导致了问题,但不确定。
  • 不要添加任何其他代码来改变背景颜色,我认为上面的单行编码足以改变颜色。
【解决方案5】:

如果您正在开发自定义键盘并尝试匹配键盘视图的背景,请在设置视图的键盘视图控制器中使用它:

keyboardView.backgroundColor = view.backgroundColor

我的键盘视图控制器中的viewDidLoad() 看起来像:

var keyboardView: UIView!
let keyboardNib = UINib(nibName: "KeyboardView", bundle: nil)
    keyboardView = keyboardNib.instantiate(withOwner: self, options: nil)        
[0] as? UIView
    keyboardView.frame.size = view.frame.size
    keyboardView.backgroundColor = view.backgroundColor
    view.addSubview(keyboardView)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多