2013-05-14 101 views
1

我通過故事板在UITableView上添加了UIView。我想知道是否有一種很好的方法來以編程方式增加UIView的高度,並按下表格單元格。 UITableView是一個靜態表。在UITableView上方增加UIView的高度

我使用這個代碼:

CGRect newFrame = myUIView.frame; 
newFrame.size.height = 300; 
myUIView.frame = newFrame; 

有了這個代碼,UIView的高度增加,但重疊的下方的表格單元格。有什麼辦法可以將tableview「推」下來嗎?

謝謝!

+0

考慮使用[自動佈局](http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/AutolayoutPG/Articles/Introduction.html)。 – 2013-05-14 17:48:23

回答

0

由於您使用的是故事板,最簡單和最清潔的方法是隻更改UITableView的大小,並將其向下移動以騰出空間用於UIView。然後,您可以將UIView移動/更改爲任意大小。

非故事板解決方案。也改變UITableView的框架。

self.tableView.frame = CGRectMake(x,y,height,width); 
+0

我希望能夠以編程的方式做到這一點,因爲我必須根據某些動態因素調整高度。我試圖調整桌子的框架,但它似乎不適合我。 – user2312407 2013-05-14 17:57:15

+0

當試圖調整幀發生了什麼? – VGruenhagen 2013-05-14 18:21:22

+0

UIView增加,但表格不會向下移動......甚至可以設置新的幀。也許我做錯了什麼。 – user2312407 2013-05-14 18:25:30

0

如果您使用自動佈局,這很簡單。
固定UIView的高度。這將爲高度創建一個NSLayoutConstraint。然後根據需要爲此創建一個屬性並在代碼中進行更新。

@property (weak, nonatomic) IBOutlet UIView *uiview1; 
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *uiViewHeight; 

更新約束的高度常數,然後更新UIView約束。 UITableView將更改爲適應修改後的UIView。

self.uiViewHeight.constant = 150.0f; 
[self.uiview1 setNeedsUpdateConstraints]; 
+0

這個解決方案聽起來很棒......我試過了,但似乎無法固定位於表格上方的UIView。當我嘗試固定它時,選項變灰。 – user2312407 2013-05-14 19:39:36

+0

我在github上放了一個簡單的項目,它有一個改變UITableView上方的UIView高度的按鈕。看看iPhone的故事板佈局。希望有所幫助。 [GitHub的](https://github.com/petetodd/uiViewHeightDemo) – greentor 2013-05-14 22:14:11