UIAlertController半透明故障/ bug

问题描述 投票:9回答:2

当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提出警报时看起来不一样,即使它应该。

ios cocoa-touch uialertcontroller
2个回答
2
投票

免责声明:这是部分意见,部分受过教育的猜测和部分经验。

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

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

它不仅仅是帧大小调整,而且消息视图的内容实际上也会改变大小。

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.