2014-12-18 32 views
5

UIActivityIndicatorView'u UIAlertView'a eklemeye çalışıyorum ama tamamlayamadım. Bu uygulama ile ilgili yayınları gördüm ve yalnızca iOS7'nin altındaki sürümler için çalıştığını öğrendim. Aşağıda UIAlertView'e Aktivite Göstergesi Ekleme

var alert: UIAlertView = UIAlertView(title: "Title", message: "Please wait...", delegate: nil, cancelButtonTitle: "Cancel"); 

var loadingIndicator: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0.0, 0.0, 10.0, 10.0)) as UIActivityIndicatorView 
loadingIndicator.center = self.view.center; 
loadingIndicator.hidesWhenStopped = true 
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray 
loadingIndicator.startAnimating(); 

alert.addSubview(loadingIndicator); 
alert.show(); 

-iOS7 için ilgisi özgü bir şey var mı ve yukarıda bu halletmek için ... Ben denedim kodudur?

+2

Ayrıca bu sınıftaki ilginizi çekebilir: https://github.com/goktugyil/CozyLoadingActivity – Esqarrouth

cevap

23

bu kodu deneyin !!

var alert: UIAlertView = UIAlertView(title: "Title", message: "Please wait...", delegate: nil, cancelButtonTitle: "Cancel"); 


     var loadingIndicator: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(50, 10, 37, 37)) as UIActivityIndicatorView 
     loadingIndicator.center = self.view.center; 
     loadingIndicator.hidesWhenStopped = true 
     loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray 
     loadingIndicator.startAnimating(); 

     alert.setValue(loadingIndicator, forKey: "accessoryView") 
     loadingIndicator.startAnimating() 

     alert.show(); 

Sana Objective-C kullananlar için

+0

Mükemmel! Teşekkürler. –

+0

Her zaman bir pod kullanmayı tavsiye etmeden çok kısa, çok iyi bir çözüm için –

+0

yardım etmekten mutluluk duyarız. cennette özel bir yeri hakediyorsunuz. –

0

yardımcı umuyoruz. Çözümüm UIActivityIndicatorView'u daha büyük bir görünümle sarar, böylece UIAlertView kenarına kadar kenar boşluğu çok küçük değil.

Swift 3
#import "UIAlertView+ActivityIndicator.h" 

@implementation UIAlertView (ActivityIndicator) 

+ (UIAlertView *)alertViewWithActivityIndicator:(NSString *)title delegate:(id<UIAlertViewDelegate>)delegate; 
{ 
    UIAlertView *a = [[UIAlertView alloc] initWithTitle:title 
               message:nil 
               delegate:delegate 
             cancelButtonTitle:nil 
             otherButtonTitles:nil]; 

    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
    UIActivityIndicatorView *aiv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    aiv.translatesAutoresizingMaskIntoConstraints = NO; 
    [v addSubview:aiv]; 
    [v addConstraint:[NSLayoutConstraint constraintWithItem:aiv 
                attribute:NSLayoutAttributeCenterX 
                relatedBy:NSLayoutRelationEqual 
                toItem:v 
                attribute:NSLayoutAttributeCenterX 
               multiplier:1.0 
                constant:0]]; 
    [v addConstraint:[NSLayoutConstraint constraintWithItem:aiv 
                attribute:NSLayoutAttributeCenterY 
                relatedBy:NSLayoutRelationEqual 
                toItem:v 
                attribute:NSLayoutAttributeCenterY 
               multiplier:1.0 
                constant:0]]; 
    [aiv startAnimating]; 
    [a setValue:v forKey:@"accessoryView"]; 

    return a; 
} 

@end 
1

kabul cevap:

var alert: UIAlertView = UIAlertView(title: "Title", message: "Please wait...", delegate: nil, cancelButtonTitle: "Cancel"); 


    let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x:50, y:10, width:37, height:37)) 
    loadingIndicator.center = self.view.center; 
    loadingIndicator.hidesWhenStopped = true 
    loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray 
    loadingIndicator.startAnimating(); 

    alert.setValue(loadingIndicator, forKey: "accessoryView") 
    loadingIndicator.startAnimating() 

    alert.show(); 
+1

UIAlertView, iOS 9.0'da kullanımdan kaldırıldı – cmii