iOS8(自定义键盘)如何使背景透明?

3

我正在开发一个iOS 8的自定义键盘。默认情况下,它有灰色的背景颜色。

如果您为其视图背景设置了一些颜色 - 一切都很好,但是如何使其透明?(UIColor.clearColor()无效)

3个回答

0

你是使用 xib 文件加载视图吗? 还是完全通过编程实现的?

我使用的是 xib 文件,我在故事板中将背景颜色设置为默认的空白色。 然后在 viewDidLoad 之前将其设置为 clearcolor,它可以正常工作。我得到了与默认键盘相同的背景。


但我想设置清晰的颜色,这样我就可以在键盘背景下看到应用程序。 - Vasyl Khmil
1
我认为你无法做到100%的透明。 我认为最好的方法就是与默认键盘相同:半透明背景。 另外请注意,当应用程序的背景为白色时,背景会变成不透明的灰色(默认的iOS键盘也是这样)。 - Mx83

0

我没有用键盘尝试过,但是你能设置背景PNG吗?如果可以,创建一个透明的1像素x1像素的PNG(保留PNG中的透明度),用它作为你的背景图像。看起来SDK目前存在导致这个问题的bug。


0

很遗憾,您无法将键盘的背景显示为.clear(透明),但您可以将其更改为其他颜色。 更多信息:

请记住,在使用nib时,有两个视图- nib的视图和ViewController的视图。 您可以将nib的背景更改为.clear,但这只会显示ViewController的视图(在本例中为KeyboardViewController

override func viewDidLoad() {
    super.viewDidLoad()
    let keyboardNib = UINib(nibName: "KeyboardView", bundle: nil)
    let keyboardView = keyboardNib.instantiate(withOwner: self, options: nil) [0] as? UIView
    view.backgroundColor = .red
    keyboardView.backgroundColor = .clear
}

上述内容的真正方便之处在于当您希望 nib 的视图与 ViewController 的视图匹配时(keyboardView.backgroundColor = view.backgroundColor 也可以实现相同效果)。

如果您只想更改 nib 的颜色,您可以将 nib 的背景颜色设置为任何您想要的颜色,因为它在 keyboardViewController 视图的前面。

override func viewDidLoad() {
    super.viewDidLoad()
    let keyboardNib = UINib(nibName: "KeyboardView", bundle: nil)
    let keyboardView = keyboardNib.instantiate(withOwner: self, options: nil) [0] as? UIView
    keyboardView.backgroundColor = .red
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接