我有一個UIViewController。UIView動畫使flashscrollindicators行爲怪異
它的視圖包含一個UITableView作爲子視圖。在viewDidAppear上,UIViewController調用UITableView的 - (void)flashScrollIndicators。
UIViewController還會觀察「SomethingHappened」通知。當發生這種情況時,UIViewController會在其視圖中添加另一個小的子視圖(一個30px高的半透明條,顯示標籤「發生了什麼」)。同時,UITableView的contentInset在頂部設置爲30px,contentOffset設置爲-30px。
所有這一切都發生在UIView動畫中,該動畫很好地將視圖上的條柱向下移動一點,而不會丟失在稍後將半透明條柱後面的內容滾動的能力。
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addMessageView:) name:@"SomethingHappened" object:nil];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.tableView flashScrollIndicators];
}
- (void)addMessageView {
self.statusMessageView = [[FFStatusMessageView alloc] initWithFrame:CGRectMake(0, -kMessageViewHeight, self.view.frame.size.width, kMessageViewHeight)];
self.statusMessageView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
void (^animations)(void) = ^{
[self.view addSubview:self.statusMessageView];
self.statusMessageView.frame = CGRectMake(0, 0, self.view.frame.size.width, kMessageViewHeight);
self.tableView.contentInset = UIEdgeInsetsMake(kMessageViewHeight, 0,0,0);
if (self.tableView.contentOffset.y == 0) self.tableView.contentOffset = CGPointMake(0, -kMessageViewHeight);
};
[UIView animateWithDuration:0.4 animations:animations];
}
結果看起來非常好。這裏是問題:通常在桌面視圖閃爍滾動指示符的同時發佈/觀察「發生的事情」。這使得滾動指示器的閃爍行爲非常奇怪 - 從左側滑入並覆蓋整個內容,然後落到應該出現的右側邊緣上。
我是否應該延遲其中一個動畫(指示燈閃爍或條形放置)?我怎麼知道開始第二秒鐘是否安全?