如何删除iOS 7.1中inputView下的灰色图层

时间:2014-03-13 18:51:53

标签: ios objective-c uipickerview ios7.1 inputview

好的,以下是我的应用在iOS 7.0中的外观:

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

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

经过大量的实验,我发现这是因为UIPickerView下方的灰色层。以下是将UIPickerView的隐藏属性设置为YES:

时的结果

代码非常简单:

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

您是否有任何想法如何隐藏(或更改此灰色层的颜色/透明度)? 我喜欢旧的外观,并希望在iOS 7.1中实现它。

2 个答案:

答案 0 :(得分:1)

我认为Apple改变键盘的外观是个问题。它在iOS 7.1中略有不同。

article引用版本之间的变化(您可以在之前和之后看到键盘的屏幕截图)。

  Apple还对键盘进行了微妙的改动。字体是   稍微大胆一点。移位和删除按钮也是   微微调整。键盘的背景似乎也是如此   比iOS 7轻一点。它似乎增加了更多的对比度   使字母更容易看到。

所以我猜你不能做任何事情,如果没有一个非常难看的黑客,就像弄乱基础的CALayers。

您可以阅读有关如何从this answer添加半透明图层的信息。 来自链接的第一种方法的评论:

  

我本周在他们的Tech上由Apple UIKit工程师运行这种方法   会谈实验室。虽然他肯定不会认可这种方法,但他   认识到需要效果和缺乏真正的公共API   这个,并说这种方法现在是“最不邪恶”的选择   并且写得相当安全。具体来说,他说不要试图做   此工具栏/视图的框架或变换的任何动画或   任何类似的东西,或坏事都会发生。他也很强烈   建议就此提交Radar bug报告,以建立一个案例   在内部,所以我们可以获得一个真正的公共API来实现这种效果!

答案 1 :(得分:0)

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

基本上将选择器放在具有所需backgroundColor的视图中。将此视图添加为inputView。 AND:不要将文本字段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)