2015-11-20 59 views
0

我使用這個控制作爲活動指示燈,每當我做一個HTTP請求上的自動版式視圖

https://github.com/gontovnik/DGActivityIndicatorView

這是我如何把它

let activityIndicator: DGActivityIndicatorView = DGActivityIndicatorView(); 
    activityIndicator.backgroundColor = UIColor.clearColor(); 
    activityIndicator.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height); 
    activityIndicator.size = 68; 
    activityIndicator.tintColor = tintColor; 
    //activityIndicator.type = DGActivityIndicatorAnimationType.BallClipRotatePulse; 
    activityIndicator.startAnimating(); 

    view.addSubview(activityIndicator); 

我居中自定義控件編程與我的HTTP請求代碼一起在viewDidLoad上調用此函數。

但是,這會導致activityIndi​​cator位置不在中心位置,因爲在viewDidLoad中自動佈局尚未完成佈局。

我可以通過將代碼放置在viewDidAppear上來解決此問題,並且activityIndi​​cator將定位在正確位置。

但是這很糟糕,因爲HTTP請求只會在viewDidAppear上浪費一個寶貴的秒。

我應該如何修改控件,使它自己居中?

這種控制編碼的對象 - 這我不熟悉DGActivityIndicatorView

回答

-1

找到一種方法來做到這一點的控制範圍內本身

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    if (self.layer.sublayers != nil) { 
     self.frame = self.superview.frame; 
     self.layer.position = (CGPoint){CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)}; 
     self.layer.sublayers[0].position = (CGPoint){CGRectGetMidX(self.layer.bounds), CGRectGetMidY(self.layer.bounds)}; 
    } 
} 
0

試試這個:

activityIndicator.center = CGPointMake(view.frame.size.width/2, 
          view.frame.size.height/2); 
1

爲了把一個視圖在另一個視圖的中央,使用該行的代碼:

activityIndicator.center = self.view.center; 

另外,您可以爲activityIndicator設置一個全局屬性。然後你可以在viewDidLoad中啓動HTTP Request,然後在viewDidAppear中寫上面一行,以使activityIndicator居中。

0

試試這個:

activityIndicator.setTranslatesAutoresizingMaskIntoConstraints(false) 
self.view.addSubview(activityIndicator) 

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

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