代码之家  ›  专栏  ›  技术社区  ›  CoderMarkus

MFMailComposeViewController重置其他视图框架

  •  0
  • CoderMarkus  · 技术社区  · 10 年前

    当你在我的应用程序中单击“联系人”按钮时,许多视图都会被动画化,从而将初始视图滑出,联系人视图滑入。此时的一个选项是发送和发送电子邮件。当你点击那个按钮时,我用 MFMailComposeViewController 以显示应用内电子邮件视图。

    问题:

    当电子邮件视图在中显示动画时,显示将恢复为 几乎 初始视图。我为其帧设置动画的视图将重置为其原始位置,但我淡出的一个视图将保持淡出状态。

    我很确定我没有对动画做任何不寻常的事情,邮件编写器代码与我找到的所有参考完全相同。

    编辑:

    这是我的动画代码。我基本上是在屏幕外制作一些视图,在屏幕上制作一些其他视图。所有内容都显示在故事板上的单个视图控制器中。

    [UIView animateWithDuration:0.5f animations:^{
        searchView.frame = CGRectMake(0, originalSearchY - searchView.frame.size.height, searchView.frame.size.width, searchView.frame.size.height);
        footerView.frame = CGRectMake(0, originalFooterY + footerView.frame.size.height, footerView.frame.size.width, footerView.frame.size.height);
        refreshView.alpha = 0;
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.5f animations:^{
            supportView.frame = CGRectMake(0, 64, supportView.frame.size.width, supportView.frame.size.height);
            closeView.frame = CGRectMake(0, originalCloseY - closeView.frame.size.height, closeView.frame.size.width, closeView.frame.size.height);
        } completion:^(BOOL finished) {}];
    }];
    

    下面是一个屏幕流程,说明了发生的事情。。。

    screen flow

    1. 轻触联系人按钮,以动画方式显示在联系人屏幕上
    2. 点击电子邮件按钮,显示电子邮件编辑器
    3. 取消或发送电子邮件
    4. 如您所见,可见性恢复到屏幕1,“更新数据”视图消失(这是我淡出而不是动画帧的视图)
    1 回复  |  直到 10 年前
        1
  •  0
  •   CoderMarkus    10 年前

    好的,所以我终于解决了问题。我在做一些初始化 - (void)viewDidLayoutSubviews 当模态电子邮件视图出现并被关闭时,这被称为模态电子邮件视图。我最终添加了一个布尔“isInitialized”变量,并在此基础上调整了视图处理。