2013-06-19 59 views
0

我的UIDatePicker的一部分從屏幕底部延伸出來,即使我認爲我正確定位它。有人能告訴我我做錯了什麼嗎?我已經通過了以下幾行,並且無法弄清楚我出錯的地方。我試圖避免明確指定我的UIDatePicker框架的座標。我在這裏包含了我的視圖控制器中的相關代碼:定位UIDatePicker

回答

3

有幾個問題。

既然你要選擇器視圖相對於self.view放置於您想screenRect是基於self.view.bounds,不self.view.frame

另外,從來不打電話sizeThatFits:。改爲撥打sizeToFit。這在文檔中針對這兩種方法之一進行了說明。但這不是必要的。選擇器視圖將自動成爲正確的大小。

您很可能希望選取器視圖填充視圖的寬度(至少在iPhone/iPod touch上)。所以,你的pickerRect應該是:

CGSize pickerSize = self.timePicker.bounds.size; 
CGRect pickerRect = CGRectMake(0, 
           screenRect.size.height - pickerSize.height, 
           screenRect.size.width, 
           pickerSize.height); 

的最後一步是設置autoresizing掩碼選擇器。既然你想讓選擇器固定在視圖的底部,你應該設置一個靈活的頂部邊距。而且,既然你想它的視圖寬度設置爲靈活的寬度:

self.timePicker.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth; 
+0

無論我使用'screenRect.size.width'或'pickerSize.width',它是否有區別? –

+0

當然可以。如果你想讓選擇器填充視圖的寬度,那麼你必須使用'screenRect.size.width'。如果您希望選取器具有與視圖寬度不同的其他固定寬度,請僅使用'pickerSize.width'。 – rmaddy

+0

但是,當我調用'sizeToFit'時,UITimePicker的寬度不應與當前視圖邊界的寬度相同嗎?我意識到主要的錯誤是我使用視圖框而不是邊界,但我只想確保我正確地做了其他所有事情。 –