我有與topLayoutGuide
方法奇怪的問題,我有一個情況下使用,其中setAutomaticallyAdjustsScrollViewInsets:
不起作用。爲了縮小問題的原因,我創建了以下最小示例,它只是設置了基本表視圖進行測試:調用topLayoutGuide完全斷裂滾動?
- 在Xcode中設置新的iOS Single View應用程序。
在ViewController.m的實現將以下代碼粘貼:
@implementation ViewController - (void)loadView { [self setTableView:[[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]]; } - (void)viewDidLoad { [super viewDidLoad]; [self setAutomaticallyAdjustsScrollViewInsets:NO]; // [*] } - (void)viewDidLayoutSubviews { UITableView *tableView = [self tableView]; UIEdgeInsets insets = [tableView contentInset]; // insets.top = [[self topLayoutGuide] length]; // [1] // insets.top = 100; // [2] [tableView setContentInset:insets]; [tableView setScrollIndicatorInsets:insets]; } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 100; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } [[cell textLabel] setText:[NSString stringWithFormat:@"%d", [indexPath row]]]; return cell; } @end
說我遇到的問題是這些:
如果我取消標記
[1]
行,正確的插入應用,但滾動表視圖不再起作用。當我嘗試滾動,表只是反彈回到初始滾動位置後,我鬆開了我的手指。這種行爲也由一個普通的呼叫觸發[self topLayoutGuide]
,不分配結果的任何東西。如果我取消線
[2]
的[1]
代替,滾動的作品。 100磅的插圖也適用。但是現在初始的滾動位置會自動調整,以便內容在狀態欄下方。
([*]
:這確實似乎只在做結合有含導航控制器什麼我似乎沒有讓在這個例子中有差別,但我想禁用任何自動行爲只是要確定。 。)
有什麼明顯我做錯了嗎?我真的很茫然。
我只是發現了從改變正確的值到'{0,0}'。不知道爲什麼會發生這種情況,雖然... – tajmahal
可能是一個錯誤,也有一個。 – cschwarz
這裏一樣的東西。這令人難以置信的令人沮喪。感覺像舊版iOS 3.0一樣。 – Nicky