UIAlertController半透明故障/ bug

时间:2015-05-20 09:18:39

标签: ios cocoa-touch uialertcontroller

当iOS显示警报时,半透明度是不变的。当我的应用程序出现一个时,警报首先是白色,只有半秒钟,然后它变得半透明。这是一个小问题,但它看起来很混乱,警报应该在我认为的任何地方保持一致。无论如何这里是代码:

UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Invalid Credentials" message:@"Please try again." preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    [_username becomeFirstResponder];
}];
[alertVC addAction:ok];
[self presentViewController:alertVC animated:YES completion:NULL];

我也对这里的人们的意见感兴趣。对于任何人来说,这只是一个小问题吗?看起来这只是UIAlertController的工作方式(至少在开发人员使用它时)。无论如何,它看起来很乱,我认为它是一个错误(除非我做错了),因为它看起来与iOS提出警报时看起来不一样,即使它应该。

2 个答案:

答案 0 :(得分:2)

免责声明:这是部分意见,部分有根据的猜测和部分经验。

UIAlertController有两个主要部分:深色背景和消息视图。深色背景似乎是用于弹出窗口的非常标准的深灰色/黑色透明视图。消息视图看起来使用的是与UIToolbarUINavigationController相同的模糊类型。

用于UIAlertController过渡的动画是暗背景上的淡入淡出以及消息视图上淡入淡出和合约的组合。褪色不是 难以处理模糊的视图; iOS通常只使用透明视图,并捕捉到alpha 0.999以上的模糊视图。那个收缩动画虽然......那就是魔术所在。

这不只是一个框架调整大小,但消息视图的内容实际上也改变了大小。

Animation showing the UIAlertController message view size change.

有趣的是,不仅仅是调整消息视图的框架大小并让文本以静态大小淡入,Apple的某个人决定动画文本大小的变化,使其看起来像是登陆屏幕。

此标签,按钮和帧大小的变化与模糊中的淡入相结合,为相当简单的视图增加了相当大的复杂性。因此,看起来有人决定使用视图的快照,为比例变化设置动画,然后在初始动画完成后“转换”到所需的外观,而不是处理每个单独的问题。

至于为什么直接在OS中的消息不是这种情况...狗粮。

答案 1 :(得分:0)

对我来说,同样的问题是由flag" Renders with edge antialiasing"在Info.plist文件中设置为YES。 它曾经被设置为改进模拟器tableview渲染,谁知道它影响设备上的系统警报渲染。