0

希望制作一个将执行以下操作的自定义动画:

从图像视图开始-> 水平翻转到相同大小的表格视图。它应该看起来像表格视图在图像的背面。

我试过这个:

  [UIView transitionFromView:imgView      
                        toView:tbl
                      duration:1
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    completion:nil];

但这只是翻转了无济于事的超级视图。我是否需要以某种方式实现容器视图?这似乎有点矫枉过正(但这可能是因为我不知道如何使用它们)。

我是动画新手。

4

2 回答 2

0

故事板:

确保在图像视图上启用了用户交互。

在此处输入图像描述

界面:

//
//  ViewController.h
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@end

执行:

//
//  ViewController.m
//

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // This assumes a static table with 3 rows; update accordingly.
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath: indexPath];

    // Cell 1, Cell 2, Cell 3, etc.
    cell.textLabel.text = [NSString stringWithFormat: @"Cell %d", indexPath.row];

    return cell;
}

// Listen for touches and call "flipToTable" when the image view is tapped.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];

    if (touch.view == _imageView)
    {
        [self flipToTable];
    }
}

- (void)flipToTable
{
    [UIView transitionFromView: _imageView
                        toView: _tableView
                      duration: 1
                       options: UIViewAnimationOptionTransitionFlipFromLeft
                    completion: nil];
}

@end
于 2013-09-01T02:05:23.863 回答
0

是的,您需要使用容器。

我相信这与对“to”和“from”子视图的一些额外操作是transitionFromView:toView一样的。transitionWithView文档没有这样说。这只是我的实验结论。

于 2013-09-01T02:07:02.573 回答