我這裏搜索了很多,但似乎無法找到答案,我的問題的同時...動畫2個UIViews在(粘在一起)
我有一個叫子視圖類,這個類有一個簡單的功能,它可以顯示或dissapear動畫
它確實是這樣的:
-(void)showAnimated:(BOOL)animated {
self.active = YES;
//Make topmost
[self.parentView bringSubviewToFront:self];
if (animated) {
[UIView animateWithDuration:0.5
delay:0.0f
options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState
animations:^{
self.frame = self.originalFrame;
if (self.panningBlock) {
self.panningBlock(self.contentView.frame);
}
}
completion:^(BOOL finished){
}];
}
else {
self.frame = self.originalFrame;
if (self.panningBlock) {
self.panningBlock(self.contentView.frame);
}
}
凡self.originalFrame已經存儲了查看的位置,隱藏部分,如果真的類似
的原始值-(void)hideAnimated:(BOOL)animated {
self.active = NO;
//Store the frame
CGRect _frame = self.frame;
//Set the view starting point
switch (self.showingLocation) {
case SubViewShowingLocationRight:
_frame.origin = CGPointMake(_frame.size.width, _frame.origin.y);
break;
case SubViewShowingLocationBottom:
_frame.origin = CGPointMake(_frame.origin.x, _frame.size.height);
break;
case SubViewShowingLocationLeft:
_frame.origin = CGPointMake(-_frame.size.width, _frame.origin.y);
break;
default:
break;
}
if (animated) {
[UIView animateWithDuration:0.5
delay:0.0f
options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState
animations:^{
self.frame = _frame;
if (self.panningBlock) {
self.panningBlock(self.contentView.frame);
}
}
completion:^(BOOL finished){
}];
}
else {
self.frame = _frame;
if (self.panningBlock) {
self.panningBlock(self.frame);
}
}
[self.delegate didDismissSubView:self];
}
//// 所以動畫出現在self.frame = _frame和self.frame = self.originalFrame
也我有self.panningBlock,即一個塊,該父視圖可以給(它的工作原理,因此它可以調整自己到子視圖的框架變化..即子視圖有一個選擇器,它從底部出現,我需要調整表視圖,因此它不會被選擇器遮蔽)
我做的一個例子是
__weak MapViewController * weakSelf = self;
[weakSelf.placesView setPanningBlock:^(CGRect _frame){
if (weakSelf.placesView.isActive) {
CGRect mapFrame = weakSelf.mapView.frame;
mapFrame.origin.x = _frame.origin.x + _frame.size.width;
weakSelf.mapView.frame = mapFrame;
}
else {
CGRect mapFrame = weakSelf.mapView.frame;
mapFrame.origin.x = 0;
weakSelf.mapView.frame = mapFrame;
}
}];
這裏父視圖向右移動,如果子視圖呈現給喜歡動漫推
這一切,瞭解所需的代碼(這是我的第一個問題,所以請原諒這裏的任何海北)
的要點是動畫不會同時發生, 會發生什麼情況是進入的視圖進入速度比父視圖要慢一些,它們不會粘在一起,我真的不知道該怎麼做做...
BTW:他們d o第一次動畫發生時粘在一起,但之後沒有更多..
有什麼建議嗎?
編輯 我現在給一些圖片來解釋發生了什麼
可以原諒的隱藏方法的其他部分......它發送self.frame代替self.contentView .frame ...它並沒有影響真的,因爲我總是發送動畫(我現在會改變它) – 2013-02-10 16:54:14
很難理解你所有的觀點是什麼。你能描述你有什麼樣的觀點,以及你希望他們如何移動?你提到了SubView類,一個選擇器和一個表 - 不清楚它們是如何一起工作的(或者它們是否都包含在同一個超級視圖中)。 – rdelmar 2013-02-10 16:57:18
好的,當然...這裏的子視圖類只是一個有能力隱藏或顯示從側面顯示的視圖,顯示和隱藏方法可以做到這一點,使原點向左,向右或向下消失,或恢復其原始框架以顯示,之後,self.panning塊是子視圖調用的可選塊,以便此視圖的父級可自行調整爲視圖出現或消失(即視圖從左側出現並且我想要父視圖向右移動它騰出空間(如推)...內容視圖具有子視圖的內容謝謝! – 2013-02-10 20:05:14