OSX'de parola gerektiren bir programda yanlış şifre girdiğimizde pencere sallar, programımda nasıl uygulayabilirim? kodunun altınakullanıcı yanlış şifre girdiğinde pencereden şifre atıyor
cevap
kullanımı, kullanıcı yanlış şifre Ben bloklar için çıldırıyorum
static int numberOfShakes = 8;
static float durationOfShake = 0.5f;
static float vigourOfShake = 0.05f;
CGRect frame=[self.view.window frame];
CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animation];
CGMutablePathRef shakePath = CGPathCreateMutable();
CGPathMoveToPoint(shakePath, NULL, NSMinX(frame), NSMinY(frame));
int index;
for (index = 0; index < numberOfShakes; ++index)
{
CGPathAddLineToPoint(shakePath, NULL, NSMinX(frame) - frame.size.width * vigourOfShake, NSMinY(frame));
CGPathAddLineToPoint(shakePath, NULL, NSMinX(frame) + frame.size.width * vigourOfShake, NSMinY(frame));
}
CGPathCloseSubpath(shakePath);
shakeAnimation.path = shakePath;
shakeAnimation.duration = durationOfShake;
[self.view.window setAnimations:[NSDictionary dictionaryWithObject: shakeAnimation forKey:@"frameOrigin"]];
[[self.view.window animator] setFrameOrigin:[self.view.window frame].origin];
girdiğinizde. İşte bir blok versiyonu Burada
- (void)shakeView:(UIView *)view times:(NSInteger)times completion:(void (^)(BOOL finished))completion {
if (times <= 0) {
completion(YES);
} else {
UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState;
[UIView animateWithDuration:0.1 delay: 0.0 options: options
animations:^{
view.frame = CGRectOffset(view.frame, 6.0, 0.0); // shake to
}
completion:^(BOOL finished){
[UIView animateWithDuration:0.1 delay: 0.0 options:options
animations:^{
view.frame = CGRectOffset(view.frame, -6.0, 0.0); // shake fro
}
completion:^(BOOL finished) {
[self shakeView:view times:times-1 completion:completion];
}];
}];
}
}
... de bu işe gerektiğini bulunuyor Swift SajjadZare cevabı @ geçerli:
Swift 2.0:
let numberOfShakes:Int = 8
let durationOfShake:Float = 0.5
let vigourOfShake:Float = 0.05
let frame:CGRect = (self.view.window?.frame)!
let shakeAnimation = CAKeyframeAnimation()
let shakePath = CGPathCreateMutable()
CGPathMoveToPoint(shakePath, nil, NSMinX(frame), NSMinY(frame))
for _ in 1...numberOfShakes {
CGPathAddLineToPoint(shakePath, nil, NSMinX(frame) - frame.size.width * CGFloat(vigourOfShake), NSMinY(frame))
CGPathAddLineToPoint(shakePath, nil, NSMinX(frame) + frame.size.width * CGFloat(vigourOfShake), NSMinY(frame))
}
CGPathCloseSubpath(shakePath)
shakeAnimation.path = shakePath
shakeAnimation.duration = CFTimeInterval(durationOfShake)
self.view.window?.animations = ["frameOrigin":shakeAnimation]
self.view.window?.animator().setFrameOrigin(self.view.window!.frame.origin)
Swift 3.0:
let numberOfShakes:Int = 8
let durationOfShake:Float = 0.5
let vigourOfShake:Float = 0.05
let frame:CGRect = (self.view.window!.frame)
let shakeAnimation = CAKeyframeAnimation()
let shakePath = CGMutablePath()
shakePath.move(to: CGPoint(x: NSMinX(frame), y: NSMinY(frame)))
for _ in 1...numberOfShakes {
shakePath.addLine(to: CGPoint(x:NSMinX(frame) - frame.size.width * CGFloat(vigourOfShake), y: NSMinY(frame)))
shakePath.addLine(to: CGPoint(x:NSMinX(frame) + frame.size.width * CGFloat(vigourOfShake), y: NSMinY(frame)))
}
shakePath.closeSubpath()
shakeAnimation.path = shakePath
shakeAnimation.duration = CFTimeInterval(durationOfShake)
self.view.window?.animations = ["frameOrigin":shakeAnimation]
self.view.window?.animator().setFrameOrigin((self.view.window?.frame.origin)!)
hızlı 3.0 belki? – dylan
@dylan Güncellendi. – iwatakeshi
bu, görünüm denetleyicisine veya pencere denetleyicisine gider (eğer varsa) – dylan
Yaptığım yol budur:
-(void)shakeLayer:(CALayer*)layer{
int repeats = 4;
float time = 0.04;
float movement = 5;
for(int x = 0; x < repeats; x++){
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(x*(time*4) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
CABasicAnimation *posAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
[posAnimation setFromValue:[NSNumber numberWithFloat:0]];
[posAnimation setToValue:[NSNumber numberWithFloat:movement]];
[posAnimation setBeginTime:0.0];
[posAnimation setDuration:time];
CABasicAnimation *negAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
[negAnimation setFromValue:[NSNumber numberWithFloat:movement]];
[negAnimation setToValue:[NSNumber numberWithFloat:-movement]];
[negAnimation setBeginTime:time];
[negAnimation setDuration:time*2];
CABasicAnimation *posAnimation2 = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
[posAnimation2 setFromValue:[NSNumber numberWithFloat:-movement]];
[posAnimation2 setToValue:[NSNumber numberWithFloat:0]];
[posAnimation2 setBeginTime:time*3];
[posAnimation2 setDuration:time];
CAAnimationGroup *group = [CAAnimationGroup animation];
[group setDuration:time*4];
[group setAnimations:[NSArray arrayWithObjects:posAnimation, negAnimation, posAnimation2, nil]];
[layer addAnimation:group forKey:nil];
});
}
}
- 1. gitolite kullanıcı şifre soruyor
- 2. İfadeler ve Kullanıcı Adları/Şifre
- 3. Android: Şifre asgari şifre uzunluğu
- 4. Gömülü H2 Veritabanı Bağlantısı Hatası - yanlış kullanıcı adı ve şifre
- 5. validates_confirmation_of: şifre
- 6. Şifre korumalı/şifre pdf android nasıl okunur?
- 7. XOR şifre:
- 8. Jenkins github kullanıcı adı şifre girişi
- 9. Web hizmetine kullanıcı adı ve şifre gönderme
- 10. knit2wp hatası. kullanıcı adı veya şifre
- 11. PHP şifre formu
- 12. JBoss varsayılan şifre
- 13. firebase şifre kullanımı unuttum
- 14. Django şifre problemleri
- 15. Giriş Alanında Kısmi Şifre Maskeleme
- 16. iPhone Uygulamasında şifre alanlarındaki metni nasıl gizlersiniz?
- 17. Python'da şifre kontrolü
- 18. Şifre onayı kaldır; Açıklama
- 19. iTextSharp Şifre Korumalı PDF
- 20. Optimal şifre tuz uzunluğu
- 21. Şifre korumalı Neo4J webadmin
- 22. Şifre mesajını göster
- 23. Anahtar + şifre ile lftp?
- 24. Android Şifre Çözme Hatası
- 25. X509Bakım şifreleme/şifre çözme
- 26. Şifre şifresi 2 kullanıcı için aynı şifreyle neden farklı?
- 27. neo4j v2.2.0 varsayılan şifre çalışmıyor?
- 28. Kullanıcı adı veya şifre söyleyen hangi HTTP durum kodu yanlıştı?
- 29. Şifre Kurtarma Yazılımı Düzgün Çalışmıyor
- 30. Şifre eşleşmesini kontrol etme hatası
yukarıdaki görünümü kullanır, [burada] (http://stackoverflow.com/questions/10517386/how-to-shake-nswindow/23491643#23491643) pencereyi sallar. * Büyük bir değişiklik değil, sadece kolay referans içindir * –