【问题标题】:Sequence of affine transformation with Quartz 2D使用 Quartz 2D 的仿射变换序列
【发布时间】:2023-03-16 13:40:01
【问题描述】:

我正在尝试使用 iOS 中的 UIAlertView 在 OS X 中模拟不正确的密码输入动画。本质上,我希望它向左翻译警报,然后向右翻译。这是我正在做的事情:

    [UIView animateWithDuration:0.5 
                 animations:^{
                     alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 200, 0);
                     alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, -200, 0);
                 }];

然而,这并没有达到预期的效果。警报瞬间向右射击,然后平稳地向左平移。我怎样才能让两个翻译顺利进行?

【问题讨论】:

    标签: ios quartz-graphics


    【解决方案1】:

    试试这个:

    [UIView animateWithDuration:0.5 animations:^{
    
            alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 200, 0);
    
        } completion:^(BOOL finished) {
    
            [UIView animateWithDuration:0.5 animations:^{
                alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, -200, 0);
            }];
        }];
    

    但我会做这样的动画:

    [UIView animateWithDuration:0.1 animations:^{
    
            alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 20, 0);
    
        } completion:^(BOOL finished) {
    
            [UIView animateWithDuration:0.1 animations:^{
    
                alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, -20, 0);
    
            } completion:^(BOOL finished) {
    
                [UIView animateWithDuration:0.1 animations:^{
                    alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 0, 0);
                }];
    
            }];
        }];
    

    由你决定! ;-)

    【讨论】:

    • 完美!我之前尝试过使用完成块,但这似乎不起作用。但是,您的解决方案确实如此。谢谢。
    猜你喜欢
    • 2014-05-27
    • 2010-12-17
    • 2020-02-11
    • 2013-07-04
    • 2016-02-19
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多