2012-04-20 29 views
0

我有一個UIView,我用initWithFrame創建,它顯示正確,正好在我想要的位置。UIView以兩種不同的方法報告其中心

爲了測試一些觸摸互動,我做了以下內容:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    NSLog(@"center: %f",self.center.x); 
} 

當我按下視圖(以及類似這樣的其它視圖),它們都正確地記錄了許多有意義的,因爲在他們的中心點視圖的超級視圖的座標空間。

但是,當我在initWithFrame方法內執行相同的日誌語句時,self.center.x未在視圖的超級視圖空間中報告座標。相反,它會報告將成爲邊界中心的點,即如果視圖寬度爲100px,則會爲所有視圖報告50

我不明白的是這些視圖並未移動,並且幀被清晰地設置在initWithFrame的開頭,因爲它通過了幀CGRect並且視圖顯示在正確的位置。那麼爲什麼它不僅僅在這個方法中正確地報告它的中心呢?

+0

你能張貼initWithFrame:方法? – danh 2012-04-20 04:43:24

回答

1

-initWithFrame:期間,您的視圖尚未添加到超級視圖。

(有些代碼稍後將它添加到一個上海華 - 無論是作爲筆尖加載代碼的一部分,或手動)。

+0

我完全同意...會加上五個.. – Nit 2012-04-20 04:41:53

相關問題