我有一個相當規則的UIViewController
,它是UINavigationController
層次結構的一部分,這自然使得視圖頂部有一個UINavigationBar
。衆所周知,iOS7的導航欄與以前的版本非常不同。如何在使用iOS7的UINavigationBar時以編程方式定位UITableView?
如果我在故事板中拖動UITableView
進入我的視圖,則表視圖的「框架」將覆蓋整個視圖(I.E [tableView setFrame:self.view.frame];
)。甚至落後於NavigationBar
。 這使得如果我滾動,內容將通過欄微弱可見。 與大多數人相反,我其實很喜歡這個。
在我當前的視圖控制器中,我想以編程方式創建UITableView
,並將其作爲子視圖放置在此處。但是,我無法通過這種方式達到同樣的效果。
我已經試過
UITableView *table = [[UITableView alloc] initWithFrame:self.view.frame];
[self.view addSubview: table];
這使得導航欄後面的「頂部滾動點」的住宿。想象一下tableView中的單個單元格,通過頂部欄可以隱約看到它。如果我向下滾動,它會在它後面彈出。這是默認的「最高位置」。
我也曾嘗試
CGRect frame = CGRectMake(0, 'nav.y+nav.height', self...width, self...height-y);
UITableView *table = [[UITableView alloc] initWithFrame:frame];
[self.view addSubview: table];
簡單地放置表視圖中UINavigationBar
下面的矩形,但我不會得到吧檯後面的滾動透明效果。
我也試過與此相伴的第一個例子:
[tableView setContentOffset:CGPointMake(0, 'below navbar')];
這使得它留正是我想要留下來,但只要我觸摸它(滾動和釋放),它滾動備份在導航欄後面,並停留在那裏。
實現此效果的程序化解決方案是什麼?每當我滾動得太遠時,是否必須設置偏移量,還是有更簡單的解決方案?隨着這個iOS7風格,我想他們會添加一些像[tableView setVisibleFrame:]
什麼的..?
啊,謝謝。我以前從來沒有聽過'inset'這個詞,但這正是我所期待的。爲了記錄,問題直接針對以編程方式創建tableView,而不是通過Storyboard和使用Outlets添加。無論如何,在我的第一個「示例」之後,你的代碼行完成了這個訣竅,謝謝。 – Sti