2015-07-21 32 views
-1

我有一個帶標題和微調框的UIAlertController。我需要將微調器顯示在標題下方,但我正在努力定位它。實際上,我將spinner.center設置爲屏幕中心,但實際上它出現在右下角。在UIAlertController中定位微調框

var alert: UIAlertController = UIAlertController(title: "Fetching New Music", message: nil, preferredStyle: UIAlertControllerStyle.Alert) 

var spinner: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge) 

spinner.color = UIColor.yellowColor() 

spinner.startAnimating() 

alert.view.addSubview(spinner) 

var height:NSLayoutConstraint = NSLayoutConstraint(item: alert.view, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: self.view.frame.height * 0.15) 

alert.view.addConstraint(height) 

// Here is where I need help!   
spinner.center = CGPointMake((self.view.frame.width/2) - (spinner.frame.width/2), (self.view.frame.height/2) - (spinner.frame.height/2)) 

self.presentViewController(alert, animated: true, completion: nil) 

回答

0

這兩條線,加在一起,就沒有任何意義:

alert.view.addSubview(spinner) 
spinner.center = CGPointMake((self.view.frame.width/2) - (spinner.frame.width/2), (self.view.frame.height/2) - (spinner.frame.height/2)) 

這樣看來,你還沒有掌握framebounds之間的根本區別。如果要添加微調器作爲警報視圖的子視圖(如第一行所示),那麼微調器center的位置(如第二行)的定義與相關,警報視圖的邊界,而不是一些其他物體的框架

+0

然而總的來說,我建議你不要這樣做。您沒有「正確」將任何子視圖添加到警報視圖。 – matt

+0

嗯。我真的很想這樣做。爲什麼你會建議不要這樣做? – chicobermuda

+0

因爲我給了。這個觀點不是你自己的。你試圖做的是不受支持的。 – matt