2013-08-08 2 views
0

! [Введите описание изображения здесь] [1] (приложение iOS) Я хочу создать контроллер табличного представления, который имеет представление таблицы и представление изображения в представлении заголовка таблицы , Когда я просматриваю представление таблицы, я хочу увеличить изображение (например, в приложении CNN для iOS). Я пробовал много вещей, но никого из них не хотел, как хочу. Может, кто-то может мне помочь. Благодаря!Изображение в контроллере табличного вида увеличится при просмотре таблицы прокрутки

Все экран будет выглядеть это изображение, как на этой картинке:

http://a3.mzstatic.com/us/r30/Purple6/v4/5a/20/55/5a2055c3-5cf2-fb5b-568a-cbc627d827d5/screen568x568.jpeg

+0

Для iOS существует множество приложений для CNN, поэтому, пожалуйста, дайте лучшее объяснение того, что вы хотите, или более конкретную информацию о том, какое приложение вы говорите. – rdelmar

+0

Я говорю об этом приложении https://itunes.apple.com/us/app/cnn-app-for-iphone/id331786748?mt=8. Я хочу сделать, чтобы создать представление таблицы и над ним (например, заголовок) изображение. Когда пользователь прокручивает вниз по представлению таблицы вниз, изображение масштабируется, изменяя высоту кадра, поэтому он будет связан с первой ячейкой таблицы. – AdiC

+0

Посмотрев на это приложение, я не думаю, что изображение наверху представляет собой представление заголовка таблицы. Представления заголовка таблицы прокручиваются вместе с таблицей, и в этом приложении таблица прокручивается поверх этого изображения при прокрутке вверх, в то же время изображение прокручивается медленнее. Надпись над изображением, а также серая полоса, в которой говорится, что «Дом» в ней может быть заголовком таблицы. – rdelmar

ответ

0

Я пытался сделать это, делая изображение в верхнем виде заголовка таблицы, но не мог получить, что работать.

То, как это работает, заключалось в том, чтобы добавить прокрутку в верхнюю часть представления UIViewController с представлением изображения внутри него. Затем я добавил табличное представление и сделал его того же размера, что и представление контроллера, так что он находится поверх верхнего представления прокрутки, которое содержит изображение (это было сделано в раскадровке с отключенной автоматической компоновкой). В коде я добавляю представление заголовка таблицы, которое является прозрачным и имеет метку, которая действует как подпись для изображения. Он имеет ту же высоту, что и малый вид прокрутки. Когда вы просматриваете содержимое таблицы вверх, я также просматриваю небольшой прокрутки, но в половине скорости. Если вы потянете контент вниз, я изменил рамку небольшого вида прокрутки, чтобы он расширялся и оставался центрированным. Вот код:

@interface ViewController() 
@property (strong,nonatomic) NSArray *theData; 
@property (weak,nonatomic) IBOutlet UITableView *tableView; 
@property (weak,nonatomic) IBOutlet UIScrollView *imageScrollView; 
@property (nonatomic) CGRect svFrame; 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.tableView.dataSource = self; 
    self.tableView.delegate = self; 
    self.imageScrollView.delegate = self; 
    self.imageScrollView.contentSize = CGSizeMake(500, 500); 
    self.svFrame = self.imageScrollView.frame; 
    self.theData = @[@"One",@"Two",@"Three",@"Four",@"Five",@"Six",@"Seven",@"Eight",@"Nine"]; 

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 135)]; 
    headerView.backgroundColor = [UIColor clearColor]; 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, headerView.frame.size.width, 24)]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.textAlignment = NSTextAlignmentCenter; 
    label.textColor = [UIColor whiteColor]; 
    label.text = @"This is a Picture Caption"; 
    [headerView addSubview:label]; 
    self.tableView.tableHeaderView = headerView; 

    [self.tableView reloadData]; 
} 

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    UIView *bgView = [[UIView alloc] init]; 
    bgView.backgroundColor = [UIColor whiteColor]; 
    cell.backgroundView = bgView; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return self.theData.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    cell.textLabel.text = self.theData[indexPath.row]; 
    return cell; 
} 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (! [scrollView isEqual:self.imageScrollView]) { 
     if (scrollView.contentOffset.y > 0) { 
      self.imageScrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y/2); 
     }else{ 
      self.imageScrollView.frame = CGRectMake(scrollView.contentOffset.y, scrollView.contentOffset.y, self.svFrame.size.width - (scrollView.contentOffset.y * 2), self.svFrame.size.height - (scrollView.contentOffset.y * 2)); 
     } 
    } 
} 
Смежные вопросы