是否有可能分裂'一个UIViewController并将部件动画化为所选单元格的顶部和底部

时间:2014-09-03 03:17:58

标签: ios uitableview

EDIT1

检查rdelmar的答案,看看这个

的实现

我有一个我们团队希望做的模型。基本上,当用户选择单元格时,所选单元格上方的部分将动画显示在顶部,而单元格下方的部分将动画显示在底部。根据屏幕中所选单元格的位置,它可以滚动到顶部或底部。它将揭示'细节'所选单元的控制器。主要列表上的Hotel Tonight应用程序提供了一个很好的例子。

以下是一个示例:

enter image description here

所以我的问题是,我知道我可以拆分UITableView但是如何?我认为它可以作为UICollectionView完成,因为可以动画各个元素。或者可能是UIView截图。我还没有真正做过这样的事情,所以任何帮助都会得到解决。

THX

3 个答案:

答案 0 :(得分:2)

我没有尝试任何类似于Hotels Tonight应用程序的东西,但我认为你需要完成这些外观的步骤是这样的,

1)从具有黑色主视图的UIViewController中的表视图开始

2)使用renderInContext

创建表视图的图像
- (UIImage *)imageWithView:(UIView *)view {
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.bounds.size.width, view.bounds.size.height), view.opaque, [[UIScreen mainScreen] scale]);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
} 

3)用你喜欢的第一张图片制作两张图片,

-(NSArray *)createHalvedImages:(CGImageRef) image {
    NSMutableArray *arr = [NSMutableArray array];
    for(int i = 0; i < 2; i++){
            float y = i * image.size.height/2.0;
            CGImageRef tmp = CGImageCreateWithImageInRect(image, CGRectMake(0, y, image.size.width, image.size.height/2));
            [arr addObject:[UIImage imageWithCGImage:tmp]];
        }
    }
    return arr;
}

4)用包含两个图像的两个图像视图替换表格视图。

5)为两个图像视图设置动画以显示控制器的黑色主视图

6)使用淡入淡出动画

以模态方式显示细节控制器

答案 1 :(得分:0)

您可以将多个UIView布置在另一个之上,无论该集合是静态还是无。确定每个状态的维度,并找出如何将每个UIView的大小调整为您想要的大小。

在视图控制器中使用UITapGestureRecognizer,并在handleTap:中使用hitTest:withEvent:上的selfpointInside:withEvent:上的UIView来{确定哪个被窃听。然后使用方法展开UIView并折叠其他人......

为了改变动画,我是动画块的忠实粉丝。您可以阅读here

答案 2 :(得分:0)

如果您要显示多个记录,请使用tableview。当用户选择任何单元格到您想要的高度时,增加行高。您可以通过tableview委托方法和编辑tableview来计算所有这些。