ios - UIAlertController 半透明故障/错误

标签 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 显示警报时不同,尽管它应该显示警报。

最佳答案

免责声明:这部分是观点,部分是有根据的猜测,部分是经验。

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

用于 UIAlertController 过渡的动画是深色背景上的淡入以及消息 View 上淡入淡出和收缩的组合。对于模糊的 View ,褪色并不难; iOS 通常只使用透明 View ,并在 0.999alpha 以上捕捉到模糊 View 。不过那个收缩动画……这就是魔法所在。

这不仅仅是调整框架的大小,消息 View 的内容实际上也会改变大小。

Animation showing the UIAlertController message view size change.

有趣的是,除了调整消息 View 的框架大小并让文本以静态大小淡入之外,Apple 的某人还决定对文本大小的变化进行动画处理,使其看起来像是在着陆屏幕。

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

至于为什么直接在操作系统中发送消息不是这种情况……狗粮。

关于ios - UIAlertController 半透明故障/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345400/

相关文章:

ios - 有没有办法将自定义 SQL 添加(破解)到核心数据提取中?

ios - 检查对象是否已从 NSCache 中删除的最佳方法?

快速从 popUp 中删除 tableViewCell

iphone - 简单 iOS 应用程序的基于 Web 的后端?

ios - 使用 UIAlertController 的项目。如何使用 Xcode 5.1 构建 IPA 文件?

ios - 如何在 UIAlertController 中隐藏标题/消息框?

ios - Scenekit Pan 2D Translation to Orthographic 3D only horizo​​ntal

iphone - 这是 ARC 下的泄漏吗?

iphone - View 在自动布局中消失,ios

ios - Swift 中 UIViewController 的子类成员的双重初始化