2011-07-04 72 views
0

我創建了UIView的子類,並在子類中嘗試訪問視圖的width屬性。我試圖讓這樣的寬度,UIView frame.size.width是否等於零?

CGFloat width = self.frame.size.width; 
NSLog(@"Width: %f", width); 

但是由於某種原因,我得到的寬度等於0.000000

當我創建視圖我設置使用CGRectMake(幀屬性)函數,並且視圖顯示正確顯示,那麼width屬性爲什麼會返回零?

+0

看着UIPicker相關問題的順序,我很想去問這個任務背後的意圖。原因是,你想達到的可能會有更好的。你有沒有檢查inputViews和inputAccessoryViews的用法,你確定他們不會幫忙嗎? – Tatvamasi

+1

@cgossain你可能需要包含更多的代碼,讓我們知道發生了什麼。另外,你有沒有調試過,以確定你的框架設置代碼被調用你認爲應該是的值。 – ThomasW

+0

事實證明,在我要求UIView框架的地方,框架尚未設置。我在我的自定義-init方法中調用了這一行,我應該注意到這一點。無論如何,我感謝所有的幫助。 – cgossain

回答

2

如果子類UIPickerView,不管設置在框架的,寬度和高度是320216(用於人像)。
確保您的代碼中的self指向選取器。

+0

我在我的問題中犯了一個錯誤。我實際上使用了uiview,並在裏面有一個選擇器視圖。我希望視圖的width屬性將picker的width屬性設置爲相同的東西。 – cgossain

+0

@cgossain如果解決方案對您有幫助,請選擇答案。你還檢查了評論嗎?你確定你想要的行爲不是inputView和accessoryView嗎? – Tatvamasi

+0

不幸的是,沒有幫助。對於寬度,我仍然爲零 – cgossain

0

嘗試CGFloat width = self.view.frame.size.width;

+2

@cgossain子類UIPickerView可能它不是ViewController而是一個View。 – Tatvamasi

+0

對於提供的有限信息而言,它的操作很糟糕,@WrightsCS可能已經猜到了,實際的實現是一個ViewController而不是View(這看起來是正確的實現)。請編輯你的答案。 – Tatvamasi

+0

我認爲正確地回答技術上不正確的答案是正確的。如果答案得到糾正,那麼投票可以改變。作者也可以選擇刪除答案。 http://meta.stackexchange.com/questions/2451/why-do-you-cast-downvotes-on-answers – ThomasW

0

你試過這個@cgossain嗎?

CGFloat width = CGRectGetWidth(self.view.bounds); 
CGFloat height = CGRectGetHeight(self.view.bounds);