objective-c - UIScrollView 移除 subview 动画

标签 objective-c ios cocoa-touch uiscrollview

我有: 基本上我有水平 ScrollView 中显示的 UIViews 集合。 UIScrollView 启用了分页并且每个项目都不是全屏所以我可以看到上一个和下一个 View 的一部分 based on this. 每个 View 本身都有删除按钮。

我需要: 在删除其中一个 subview 后,我需要找到动画重新加载 UIScrollView 内容的好主意。正如我所想的那样,将有 4 种不同的删除: 1.删​​除最后一个 View 2.删除第一 View 3.删除中间 View -最难的一个 4. 只删除 View ——最简单的一个,只是 View 消失的动画

我需要一些建议/解决方案。 谢谢, 迈克尔

编辑:

好吧,我还没有完全实现它。

这里是重载方法:

- (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 都有带委托(delegate)的删除按钮,委托(delegate)从 viewsArray 中删除 View 并暂时运行此方法。

最佳答案

我建议你使用 + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion UIView 类的方法。只需从 UIScrollView 中获取要删除的 UIView 并在 animations block 中设置 view.alpha = 0 .在 completion block 中,使用 removeFromSuperView 方法从 UIScrollView 中删除此 UIView。将 alpha 设置为 0 将制作渐变动画。

编辑: 迭代所有要移动的 View 并更改它的 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.
   }];

}

关于objective-c - UIScrollView 移除 subview 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154399/

相关文章:

ios - UICollectionView 单元格之间的活力效果

objective-c - 首先尝试对数组进行排序

ios - 呈现另一个 UIViewController 后关闭 UIViewController

ios - 通过将属性设置为 nil 在 Swift 中再次触发惰性初始化器

iphone - 从存储在 NSArray 中的对象获取类/类型

android - 第一次在 Flutter 中构建无状态 widget 时执行一些操作

ios - 如何在SwiftUI中打开ImagePicker?

iphone - 如何为网络浏览器创造历史

ios - UITableViewCell 顶部阴影被 UITableView header view 覆盖

objective-c - block 将在闭包中保留什么类型的对象?