2016-12-13 4 views
1

ログインボタンがあり、クリックするとローダーが表示されます。ここで私が試したことがあります。ログインボタンでローダーを追加

- (void)viewDidLoad { 
    loadingView.backgroundColor = [UIColor darkGrayColor]; 
    loadingView.layer.cornerRadius = 5; 
    loader=[[UIActivityIndicatorView alloc]  initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    loader.frame = CGRectMake(13, 3, 80, 60); 
    [loader startAnimating]; 
    loader.tag = 100; 
    [loadingView addSubview:loader]; 
    UILabel* lblLoading = [[UILabel alloc]initWithFrame:CGRectMake(62, 15, 150, 30)]; 
    lblLoading.text = @"Signing in..."; 
    lblLoading.textColor = [UIColor whiteColor]; 
    lblLoading.font = [UIFont fontWithName:lblLoading.font.fontName size:15]; 
    lblLoading.textAlignment = NSTextAlignmentCenter; 
    [loadingView addSubview:lblLoading]; 
    [self.view addSubview:loadingView]; 
    loadingView.hidden = YES; 
    } 
-(void)signinBtnPressed { 
    loadingView.hidden = NO; 
    //api code 
} 

しかしuttonは、APIが は誰がどのようにボタンをクリック、または任意の他の代替されるとすぐにローダーを表示するように教えてもらえますと呼ばれるいくつかの時間後にclicked.Itショーのときにロード何らローダはありません。

+0

MBProgressHUDの聞き取り??なぜあなたは市場でチューブレスタイヤを持っているときにホイールを再発明するのですか? :o –

+0

'frame'を' UIActivityIndi​​catorView'に設定することはできません。 'center'を設定しようとします。 –

+0

あなたは '[super viewDidLoad]'コールを失いました。 –

答えて

0

すべてが正常に表示されます。このビューに関連するすべてのコードを投稿する必要があります。私は遊び場を作成し、それはOKだように見えてきました:

enter image description here

同時に、私はloadingViewの作成と[super viewDidLoad]コールを参照してくださいません。この方法のように

0

あなたはそれを割り当てるloadingView を割り当て、フレームまたは中央に設定していないあなたのコードを1として

loadingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
loadingView.center = self.view.center; 
0

apurv、非常に多くの既製外部lib.sが用意されていています。

-(void)showActivityIndicatorWithTitle:(NSString *)title andUserInteraction:(BOOL)interaction 
{ 
    _hudView = [[UIView alloc] initWithFrame:CGRectMake((self.window.frame.size.width/2)-60, (self.window.frame.size.height/2)-60, 120, 120)]; 
    _hudView.backgroundColor = [UIColor blackColor]; 
    _hudView.alpha = 0.85f; 
    _hudView.clipsToBounds = YES; 
    _hudView.layer.cornerRadius = 10.0; 

    self.acivityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    self.acivityIndicator.frame = CGRectMake(40, 40, self.acivityIndicator.bounds.size.width, self.acivityIndicator.bounds.size.height); 
    [_hudView addSubview:self.acivityIndicator]; 
    [self.acivityIndicator startAnimating]; 

    _captionLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 80, 110, 40)]; 
    _captionLabel.backgroundColor = [UIColor clearColor]; 
    _captionLabel.textColor = [UIColor whiteColor]; 
    _captionLabel.adjustsFontSizeToFitWidth = YES; 
    _captionLabel.numberOfLines = 0; 
    _captionLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    _captionLabel.textAlignment = NSTextAlignmentCenter; 
    _captionLabel.font = [UIFont systemFontOfSize:12.0]; 
    _captionLabel.text = title; 
    [_hudView addSubview:_captionLabel]; 

    self.window.userInteractionEnabled = interaction; 

    [self.window addSubview:_hudView]; 
} 

-(void)removeIndicator 
{ 
    self.window.userInteractionEnabled = YES; 
    [self.acivityIndicator removeFromSuperview]; 
    [_captionLabel removeFromSuperview]; 
    [_hudView removeFromSuperview]; 
} 

AppDelegateAppDelegate.hファイルに_hudView、self.acivityIndi​​catorと_captionLabelのプロパティを設定し、.hの中にこれらの2つのメソッドを追加します:あなたがあなた自身のカスタマイズをしたい場合はしかし、その後、これを試すことができますファイル。

これらの2つの方法を使用して、必要に応じてプロジェクト全体でローダーを追加および削除します。アプリケーションデリゲートをインスタンス化することを忘れないでください。

おかげ

2

は私がNVActivityIndi​​catorViewの例を持っています。見てください。

NSObjectクラス:あなたはヘルパークラスのローダーの呼び出し方法を表示するビューコントローラで

import UIKit 
import NVActivityIndicatorView 
     class Helper: NSObject 
     { 

      class func createLoaderView(_ view : UIView) -> NVActivityIndicatorView 
      { 
       var ViewFrame : CGRect! 

       ViewFrame = CGRect(x: 0, y: 0, width: 60 , height: 60) 
       let center = CGPoint(x: (view.frame).midX, y: (view.frame).midY) 

       let activityIndicatorView = NVActivityIndicatorView(frame: ViewFrame, type: .ballSpinFadeLoader , color: UIColor(red: 200/255, green: 58/255, blue: 60/255, alpha:1.0), padding: CGFloat(0)) 

       activityIndicatorView.center = center 

       activityIndicatorView.startAnimating() 

       return activityIndicatorView 
      } 

      class func removeLoaderView(_ activityIndicatorView : NVActivityIndicatorView) 
      { 
       activityIndicatorView.stopAnimating() 
      } 

      class func addBlurView(_ inView : UIView) -> UIVisualEffectView 
      { 
       let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 
       let blurEffectView = UIVisualEffectView(effect: blurEffect) 

       //always fill the view 
       blurEffectView.frame = inView.bounds 
       blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
       blurEffectView.alpha = 0.5 

       return blurEffectView 
      } 
} 

。同様に:あなたは "showProgressView" を呼び出す必要がありローダーを示すために:

import UIKit 
    import NVActivityIndicatorView 

    class ViewController: UIViewController,NVActivityIndicatorViewable 
    { 
     var activityIndicatorView : NVActivityIndicatorView! 
     var blurEffectView : UIVisualEffectView! 

     override func viewDidLoad() 
     { 
      super.viewDidLoad() 

     func showProgressView() 
     { 
      activityIndicatorView =  Helper.createLoaderView(self.navigationController!.view) 
      blurEffectView = Helper.addBlurView((self.navigationController?.view)!) 
      self.navigationController!.view.addSubview(blurEffectView) 
      self.navigationController!.view.addSubview(activityIndicatorView) 
     } 

     func hideProgressView() 
     { 
      Helper.removeLoaderView(activityIndicatorView) 
      blurEffectView.removeFromSuperview() 
     } 
     } 
    } 

注意。同様に、hide loader call hideメソッドを呼び出します。 ** NVActivityIndi​​catorView **をインポートするには、ポッド 'NVActivityIndi​​catorView'をインストールする必要があります。

関連する問題