Отменить анимацию UIView?

Вы довольно близко.

Попробуйте:

import jinja2

AliasDict = {'110.34.214.180': [['SR12'], 'Unavailable', '0'], 
        '110.34.214.110': [['SR9'], 'Unavailable', '0'], 
        '105.34.214.184': [['SR11'], 'Available', '0'], 
        '110.34.214.100': [['SR2'], 'Unavailable', '0'], 
        '110.34.214.124': [['SR7'], 'Unavailable', '0'], 
        '110.138.249.238': [['SR5'], 'Unavailable', '0']
       }

s = """{% for stations, value in AliasDict.items() %}
   {% if value[1] == 'Unavailable' %}
       <a href="#"> {{loop.index}}. {{stations}} : {{value[0]}}</a>
   {% endif %}
{% endfor %} """

template = jinja2.Environment().from_string(s)
data = template.render(AliasDict=AliasDict)
print(data)
243
задан Suhaib 30 August 2017 в 19:08
поделиться

4 ответа

The way I do it is to create a new animation to your end point. Set a very short duration and make sure you use the +setAnimationBeginsFromCurrentState: method to start from the current state. When you set it to YES, the current animation is cut short. Looks something like this:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.1];
[UIView setAnimationCurve: UIViewAnimationCurveLinear];
// other animation properties

// set view properties

[UIView commitAnimations];
114
ответ дан 23 November 2019 в 03:09
поделиться

У меня такая же проблема; API не могут ничего отменять конкретную анимацию. Параметр

+ (void) setAnimationsEnabled: (BOOL) enabled

отключает ВСЕ анимации, и поэтому не работает для меня. Есть два решения:

1) сделать анимированный объект подпредставлением. Затем, если вы хотите отменить анимацию для этого представления, удалите представление или скройте его. Очень просто, но вам нужно воссоздать подвид без анимации, если вам нужно держать его в поле зрения.

2) Повторите анимацию только одну и создайте селектор делегата для перезапуска анимации, если это необходимо, например:

-(void) startAnimation {
NSLog(@"startAnim alpha:%f", self.alpha);
[self setAlpha:1.0];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationRepeatCount:1];
[UIView setAnimationRepeatAutoreverses:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(pulseAnimationDidStop:finished:context:)];
[self setAlpha:0.1];
[UIView commitAnimations];
}

- (void)pulseAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
if(hasFocus) {
    [self startAnimation];
} else {
    self.alpha = 1.0;
}
}

-(void) setHasFocus:(BOOL)_hasFocus {
hasFocus = _hasFocus;
if(hasFocus) {
    [self startAnimation];
}
}

Проблема с 2) заключается в том, что всегда есть задержка остановки анимации, когда она завершает текущий цикл анимации.

Надеюсь, это поможет.

1
ответ дан 23 November 2019 в 03:09
поделиться

Используйте:

#import <QuartzCore/QuartzCore.h>

.......

[myView.layer removeAllAnimations];
359
ответ дан 23 November 2019 в 03:09
поделиться

Чтобы отменить анимацию, нужно просто установить свойство, которое в данный момент анимируется, вне анимации UIView. Это остановит анимацию, где бы она ни находилась, и UIView перейдет к только что заданной настройке.

41
ответ дан 23 November 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: