2012-10-31 88 views
0

我有什麼: 基本上我有水平scrollView呈現的UIViews集合。 UIScrollView啓用分頁功能,每個項目不是全屏,因此我可以看到前一個和下一個視圖的一部分based on this. 每個視圖都有刪除按鈕。UIScrollView刪除子視圖動畫

我需要的是: 我需要找到一個好主意,在刪除其中一個子視圖後動畫重新加載UIScrollView內容。正如我想到的那樣,會有4種不同的刪除: 1.刪除最後一個視圖 2.刪除第一個視圖 3.刪除中間視圖 - 最困難的一個 4.刪除唯一視圖 - 最簡單的一個,只是視圖消失的動畫

我需要一些建議/解決方案。 謝謝, 米哈爾

編輯:

好吧,我還沒有完全實現它。

這裏是重裝方法:

- (void)loadScrollView{ 
for(UIView* view in [_scrollView subviews]) 
{ 
    [view removeFromSuperview]; 
} 

CGRect frame = self.scrollView.frame; 
frame.origin.x = 0; 
frame.origin.y = 0; 
int i = 0; 

_scrollView.clipsToBounds = NO; 
_scrollView.pagingEnabled = YES; 
_scrollView.showsHorizontalScrollIndicator = NO; 

for(MPContact* contact in self.items) 
{ 
    frame.origin.x = self.scrollView.frame.size.width*i; 
    MyView *view = [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0]; 
    [view setFrame:frame]; 

    i++; 
    [view.nameAndSurnameLabel setText:@"view text"]; 
    [view setDelegate:self]; 
    [self.scrollView addSubview:view];[self.viewsArray addObject:view]; 
}[self.scrollView setContentSize:CGSizeMake(frame.size.width*[self.items count], frame.size.height)];} 

每個MyView的具有代表刪除按鈕時,代表去除viewsArray視圖,執行該方法目前是這樣。

+2

你可以發佈您的代碼(相關部分)嗎? – Raptor

+0

指出你的編輯。如何爲每個視圖提供一個標籤ID,以便您可以找到視圖並相應地刪除它們? – Raptor

+0

我有創建哪個視圖的方法,我想刪除,問題是刪除這個之後如何處理其他視圖(如何在scrollView中以良好的位置平滑地動畫) – user1315378

回答

4

我建議你使用+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion方法UIView類。只需從UIScrollView中獲取要刪除的UIView並在animations區塊中設置view.alpha = 0即可。在completion塊中使用removeFromSuperView方法從UIScrollView中刪除此UIView。將alpha設置爲0將使淡出動畫。

編輯: 迭代所有您想要移動的視圖並更改它的x座標。

for(UIView *view in scrollview.subviews) 
{ 
    [UIView animateWithDuration:0.1 animations:^{ 
     [view setFrame:CGRectMake(view.x-(/*HERE YOU NEED TO PUT WIDTH OF TOUR DELETING VIEW*/),view.y,view.width,view.heigh)]; 
    } 
    completion:^(BOOL finished){ 
    //remove view from superview and change your uiscrollview's content offset. 
    }]; 

} 
+0

我知道如何做消失的動畫,但我需要很好的清潔動畫重裝UIScrollView(如果我不會重新加載它會有洞,如果我這樣做將沒有動畫的空洞移動意見) – user1315378

+0

@ user1315378看到我編輯的答案 –

+0

這幫了我(需要編輯它以工作的所有4種刪除)。 謝謝 – user1315378