Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UIScrollView移除子视图动画_Objective C_Ios_Cocoa Touch_Uiscrollview - Fatal编程技术网

Objective c UIScrollView移除子视图动画

Objective c UIScrollView移除子视图动画,objective-c,ios,cocoa-touch,uiscrollview,Objective C,Ios,Cocoa Touch,Uiscrollview,我所拥有的: 基本上,我有水平滚动视图中显示的UIView集合。UIScrollView启用了分页功能,并且每个项目都不是全屏的,所以我可以看到上一个和下一个视图的一部分 每个视图本身都有删除按钮 我需要的是: 我需要找到一个好主意,在删除其中一个子视图后,为重新加载UIScrollView内容制作动画。正如我所想,将有4种不同类型的删除: 1.删除最后一个视图 2.删除第一视图 3.删除中间视图-最难的视图 4.删除唯一的视图-最简单的一个,只是视图的动画消失 我需要一些建议/解决方案。 谢谢

我所拥有的: 基本上,我有水平滚动视图中显示的UIView集合。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都带有delete按钮和delegate,delegate从viewsArray中删除视图并暂时运行此方法。

我建议您使用
+(void)animateWithDuration:(NSTimeInterval)duration动画:(void(^)(void))animations completion:(void(^)(BOOL finished))completion
方法。只需从
UIScrollView
中获取要删除的
UIView
,并在
动画
块中设置
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.
   }];

}

我建议您使用
+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations completion:(void(^)(BOOL finished))completion
UIView的方法。只需从
UIScrollView
中获取要删除的
UIView
,并在
动画
块中设置
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.
   }];

}

你能发布你的代码(相关部分)吗?注意你的编辑。给每个视图一个标记ID,这样你就可以找到视图并相应地删除它们了。我有一个方法来确定我要删除哪个视图,问题是删除这个视图后如何处理其他视图(如何在scrollView中使它们平滑地处于正确的位置)你能发布你的代码(相关部分)吗?请注意你的编辑。给每个视图一个标记ID,这样您就可以定位视图并相应地删除它们了。我有一个方法可以确定要删除哪个视图,问题是删除这个视图后如何处理其他视图(如何在scrollView中使它们平滑地处于正确位置)我知道如何制作动画,但我需要重新加载UIScrollView的清晰动画(如果我不重新加载它,将有洞,如果我这样做,将没有在空洞中移动视图的动画),这对我有帮助(需要编辑它以处理所有4种删除)。Thanks@user1315378,是,此代码将移动所有子视图。请支持我的答案并接受:)我知道如何制作消失动画,但我需要重新加载UIScrollView的干净动画(如果我不重新加载它,将有洞,如果我这样做,将没有在空洞中移动视图的动画),这对我有帮助(需要编辑它以处理所有4种删除)。Thanks@user1315378,是,此代码将移动所有子视图。请投我的票并接受它:)