7

好的,这就是我的应用在 iOS 7.0 中的样子:

现在在 iOS 7.1 中由于某种原因它看起来像这样:

正如你所看到的,而不是白色模糊背景(greeninsh 的东西实际上是UITextField下面的绿色)现在是灰色模糊背景 - 如果你仔细观察,绿色仍然可见。

经过大量实验后,我发现这是因为UIPickerView. 这是我将隐藏属性设置UIPickerView为 YES 时的结果:

代码非常简单:

_swimlanePicker = [[UIPickerView alloc] initWithFrame:CGRectZero];
_swimlanePicker.delegate = self;
_swimlanePicker.dataSource = self;
[_swimlanePicker setShowsSelectionIndicator:YES];
_swimlaneTextField.inputView = _swimlanePicker;

您有什么想法可以隐藏(或更改其颜色/透明度)这个灰色层吗?我喜欢旧的外观,也想在 iOS 7.1 中实现它。

4

2 回答 2

1

我认为这是苹果对键盘外观进行更改这一事实的问题。它在 iOS 7.1 中略有不同。

引自一篇介绍版本之间变化的文章(您可以看到之前和之后的键盘截图)。

苹果还对键盘进行了细微的改动。字体稍微粗一些。移位和删除按钮也进行了微调。键盘的背景也似乎比 iOS 7 中的稍微浅一些。它似乎增加了更多的对比度,使字母更容易看到。

所以我想如果没有一个非常丑陋的黑客,你什么都做不了,比如搞乱底层的 CALayers。

您可以从这个答案中了解如何添加半透明层。来自链接的第一种方法的评论:

本周,我在他们的 Tech Talks 实验室由 Apple UIKit 工程师运行了这种方法。虽然他当然不会支持这种方法,但他认识到效果的必要性以及为此缺乏真正的公共 API,并表示这种方法目前是“最不邪恶”的选择,并且在编写时相当安全。具体来说,他说不要尝试对此工具栏/视图的框架或变换或类似的东西做任何动画,否则会发生不好的事情。他还强烈建议就此提交 Radar 错误报告,在内部构建一个案例,这样我们就可以获得一个真正的公共 API 来实现这个效果!

于 2014-04-06T14:14:00.663 回答
0

我遇到了同样的问题,我花了几个小时才找到一个非常简单的解决方案。

基本上将选择器放在您想要的视图中backgroundColor。将此视图添加为您的inputView. 并且:不要将文本字段设置keyboardAppearance为深色!

let datePicker = UIDatePicker()

let datePickerBackground = UIView(frame:CGRect(x:0.0, y:0.0, width:0.0, height:216.0))
datePickerBackground.autoresizingMask = .FlexibleWidth
datePickerBackground.backgroundColor = UIColor.redColor()
datePickerBackground.addSubview(datePicker)

let textField = UITextField(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 50.0))
textField.keyboardAppearance = .Default // Don't set it to .Dark!
textField.inputView = datePickerBackground
addSubview(textField)
于 2016-05-19T07:51:34.147 回答