2016-11-03 8 views
0

私はUIButtonのサブクラスをストーリーボードから初期化します。私はXibを使用していません。プログラムでUIActivityIndicatorViewを追加したいと思います。私のコードは次のとおりです。インポートUIKitUIButtonサブクラスにUIActivityIndi​​catorViewを追加できません

class ResendConfirmButton: UIButton { 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 
     configActivityIndicator() 
    } 

    override func layoutSubviews() { 
     super.layoutSubviews() 
     configStyling() 

    } 


    func configStyling() { 
     let buttonLayer = CAShapeLayer() 
     let buttonPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.bottomRight], cornerRadii: CGSize(width: 2.0, height: 2.0)) 
     buttonLayer.path = buttonPath.cgPath 
     buttonLayer.frame = bounds 
     layer.mask = buttonLayer 
    } 

    var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .white) 

    func configActivityIndicator() { 
     activityIndicator.center = CGPoint(x: bounds.midX, y: bounds.midY) 
     addSubview(activityIndicator) 
     activityIndicator.startAnimating() 
    } 


} 

しかし、何らかの理由でアクティビティインジケータが追加されていません。私はconfigActivityIndicatorlayoutSubviewsに移動しようとしましたが、これも機能しません。このメソッドを呼び出すための適切な場所はどこですか?レイアウトサブビューコードで

答えて

0

以下のような...それでも

var activityIndicator = UIActivityIndicatorView() 
activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White) 
activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50) 
      activityIndicator.startAnimating() 
      self.addSubview(activityIndicator) 

任意の問題は、単にcenterIndicatorInButton(中インジケータのこの変更位置を試してみてくれ

0

気軽に)

class ResendConfirmButton: UIButton { 

var buttonText: String? 
var activityIndicator: UIActivityIndicatorView! 

func showLoading() { 
    buttonText = self.titleLabel?.text 
    self.setTitle("", forState: UIControlState.Normal) 

    if (activityIndicator == nil) { 
     activityIndicator = UIActivityIndicatorView() 
     activityIndicator.hidesWhenStopped = true 
     activityIndicator.color = UIColor.lightGrayColor() 
    } 

    // showSpinning 
    activityIndicator.translatesAutoresizingMaskIntoConstraints = false 
    self.addSubview(activityIndicator) 
    centerIndicatorInButton() 
    activityIndicator.startAnimating() 
} 

func hideLoading() { 
    self.setTitle(buttonText, forState: UIControlState.Normal) 
    activityIndicator.stopAnimating() 
} 

private func centerIndicatorInButton() { 
    let xCenterConstraint = NSLayoutConstraint(item: self, attribute: .CenterX, relatedBy: .Equal, toItem: activityIndicator, attribute: .CenterX, multiplier: 1, constant: 0) 
    self.addConstraint(xCenterConstraint) 

    let yCenterConstraint = NSLayoutConstraint(item: self, attribute: .CenterY, relatedBy: .Equal, toItem: activityIndicator, attribute: .CenterY, multiplier: 1, constant: 0) 
    self.addConstraint(yCenterConstraint) 
} 

} 
関連する問題