2013-09-01 6 views
0

Глядя, чтобы сделать пользовательскую анимацию, которая будет делать следующее:IOS: Флип UIImageView в UITableView

Начните с видом изображения -> Отразить по горизонтали в Tableview, который имеет тот же размер. Это должно выглядеть так, как показано на столе.

Я попытался это:

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

Но это просто переворачивает SuperView, который не помогает. Мне нужно каким-то образом реализовать контейнерный вид? Кажется, что это излишний (но это может быть из-за того, что я не знаю, как их использовать).

Я новичок в анимации.

ответ

0

Да, вам нужно использовать контейнер.

Я считаю, что transitionFromView:toView делает то же самое, что и transitionWithView с некоторыми дополнительными манипуляциями над «в» и «из» подзонов. В документации это не сказано. Это только мой вывод из экспериментов.

+0

Вам не нужен вид контейнера. Вы можете использовать View Viewer с subviews для UIImageView и UITableView. См. Мой ответ;) – JWK

+0

Прочтите вопрос :) «что просто переворачивает супервизор, который не помогает» –

+0

Да, я использовал вид контейнера. Это намного проще, чем я ожидал, я просто не совсем понял это вначале. Но это то же самое решение, что и у меня в вопросе, теперь контейнер - это супервизор. – JoshDG

0

Раскадровка:

Убедитесь взаимодействие пользователя включен на представлении изображения.

enter image description here

Интерфейс:

// 
// 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