Вы довольно близко.
Попробуйте:
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)
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];
У меня такая же проблема; 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) заключается в том, что всегда есть задержка остановки анимации, когда она завершает текущий цикл анимации.
Надеюсь, это поможет.
Используйте:
#import <QuartzCore/QuartzCore.h>
.......
[myView.layer removeAllAnimations];
Чтобы отменить анимацию, нужно просто установить свойство, которое в данный момент анимируется, вне анимации UIView. Это остановит анимацию, где бы она ни находилась, и UIView перейдет к только что заданной настройке.