我想通過編程設計屏幕。首先,我設置導航欄。之後,我添加一個表格視圖,然後添加一個普通的UIView
。我在使用.center
這個最後添加的UIView
時遇到問題。我想爲此視圖添加UIActivityIndicatorView
。我的代碼如下所示(使用默認的高度和大的白色活動指示燈的寬度,這是37pt每個):UIView中心屬性給人意想不到的結果
func setupActivityView() {
let screen = UIScreen.mainScreen().bounds
let view = UIView(frame: CGRectMake(0.0, self.navbar.frame.height, screen.width, UIScreen.mainScreen().bounds.height-self.navbar.frame.height))
view.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.80)
//view.hidden = true
self.activityView = view
self.view.addSubview(view)
let spinner = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)
spinner.startAnimating()
spinner.hidesWhenStopped = true
self.spinner = spinner
/*POINT:1*/ //spinner.center = view.center
/*POINT:2*/ //spinner.frame.size = CGSizeMake(37.0, 37.0)
/*POINT:3*/ spinner.frame = CGRectMake((view.frame.width/2) - 18.5, (view.frame.height/2) - 18.5, 37.0, 37.0)
view.addSubview(spinner)
}
在上面的代碼,如果你仔細看,我有評論POINT:1
POINT:2
和使用POINT:3
。這給了我下面的結果(這是正確的,並如預期):
現在,當我使用POINT:1
POINT:2
和評論POINT-3
如下:
func setupActivityView() {
let screen = UIScreen.mainScreen().bounds
let view = UIView(frame: CGRectMake(0.0, self.navbar.frame.height, screen.width, UIScreen.mainScreen().bounds.height-self.navbar.frame.height))
view.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.80)
//view.hidden = true
self.activityView = view
self.view.addSubview(view)
let spinner = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)
spinner.startAnimating()
spinner.hidesWhenStopped = true
self.spinner = spinner
/*POINT:1*/ spinner.center = view.center
/*POINT:2*/ spinner.frame.size = CGSizeMake(37.0, 37.0)
/*POINT:3*/ //spinner.frame = CGRectMake((view.frame.width/2) - 18.5, (view.frame.height/2) - 18.5, 37.0, 37.0)
view.addSubview(spinner)
}
我得到下面的結果(這是,我想,錯誤的和意想不到的):
那麼究竟我的兩種方法有什麼區別,這裏究竟發生了什麼錯誤?我對這兩種方法的理解是錯誤的嗎?如果是,那麼究竟發生了什麼?
你在哪裏做了分配這裏面的觀點做了加載? –
是的。我在'viewDidLoad'裏面調用這個函數' –
現在你可以試試我的答案bro @The Rohan Sanap –