如何停止正在移動的UIView? 或正在減速的視圖。如何停止正在移動的UIView?
的問題是,例如:
我有一個方法變更後的按鈕的點擊事件視圖的位置;同時另一個拖動事件可以改變視圖的位置。如果我先讓拖動事件發生,那麼當視圖減速時,快速點擊B,視圖的位置會根據B後面的方法改變,但它會立即返回到正在減速並繼續減速的位置。該視圖不會回到按鈕B所指示的位置,即使它完成減速。
代碼如下。
首先,我使用KVO使視圖(即_topView是代碼)響應tableView的contentOffset(在tableView被拖動時,視圖將移動)。
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
CGPoint contentOffset = [change[NSKeyValueChangeNewKey] CGPointValue];
CGRect topFrame = _topView.frame;
topFrame.origin.y = -(contentOffset.y + TOP_SECTION_HEIGHT);
_topView.frame = topFrame;
}
然後在buttonB被點擊時,下面的動畫將被觸發。
topFrame = CGRectMakke(...);
[UIView animateWithDuration:1 animations:^{
_topView.frame = topFrame;//topView
targetTableView.contentOffset = targetViewTargetOffset;
}];
顯示您的'UIView'「移動」代碼。 – Raptor
KVO不是動畫視圖的好方法。爲什麼你不只是在動畫塊中一起製作動畫? – SmokeDispenser
@JanGreve因爲我必須使視圖與tableView一起移動,即使後者正在減速 – WhiteTherewasproblem