IOS / Objective-c:动画中的代码缩减

时间:2017-02-21 20:49:21

标签: ios objective-c animation

我有这个简单的动画,可以逐个淡化几个标签。但我想知道是否有可能用这种逻辑来减少代码?

[UIView animateWithDuration:0.50f animations:^{
    [_latLabel setAlpha:0.9f];
    [_firstLat setAlpha:0.9f];
} completion:^(BOOL finished) {
    [UIView animateWithDuration:0.50f animations:^{
        [_lonLabel setAlpha:0.9f];
        [_firstLon setAlpha:0.9f];
    }completion:^(BOOL finished) {
        [UIView animateWithDuration:0.50f animations:^{
            [_speedLabel setAlpha:0.9f];
            [_firstSpeed setAlpha:0.9f];
        }completion:^(BOOL finished) {
            [UIView animateWithDuration:0.50f animations:^{
                [_realNorthLabel setAlpha:0.9f];
                [_firstReal setAlpha:0.9f];
            }completion:^(BOOL finished) {
                [UIView animateWithDuration:0.50f animations:^{
                    [_magneticNorthLabel setAlpha:0.9f];
                    [_firstMagnetic setAlpha:0.9f];
                }];
            }];
        }];

    }];

}];

2 个答案:

答案 0 :(得分:1)

考虑到在执行动画块的任何单个部分时需要对2个标签对象执行操作,请创建VSS.init({ explicitNotifyLoaded: true, usePlatformStyles: true, usePlatformScripts: true 结构,其中<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ $("#div1").load("demo_test.txt"); }); }); </script> <div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div> <button>Get External Content</button> 定义按时间顺序顺序部分动画将被执行&amp;每个部分索引包含dictionary个标签对象 这个结构的简单迭代循环命名为section indexes,可以帮助实现所需的备用动画实现。

array

答案 1 :(得分:1)

创建标签的NSDictionary可能是繁琐且令人困惑的代码,以便将来阅读。我建议你只创建一个方法。

-(void)customFadeForLabel:(UILabel *)theLabel withDelay:(float)delayAmount {

    [UIView animateWithDuration:0.50f 
                          delay:delayAmount 
                        options:UIViewAnimationOptionCurveEaseInOut 
                     animations:^{
                         [theLabel setAlpha:0.9f];
                     }completion:nil];

}

然后根据需要直接调用

[self customFadeForLabel:_latLabel withDelay:0.00f];
[self customFadeForLabel:_firstLat withDelay:0.00f];

[self customFadeForLabel:_lonLabel withDelay:0.50f];
[self customFadeForLabel:_firstLon withDelay:0.50f];

[self customFadeForLabel:_speedLabel withDelay:1.00f];
[self customFadeForLabel:_firstSpeed withDelay:1.00f];

[self customFadeForLabel:_realNorthLabel withDelay:1.50f];
[self customFadeForLabel:_firstReal withDelay:1.50f];

[self customFadeForLabel:_magneticNorthLabel withDelay:2.00f];
[self customFadeForLabel:_firstMagnetic withDelay:2.00f];