Я пытался сделать это, делая изображение в верхнем виде заголовка таблицы, но не мог получить, что работать.
То, как это работает, заключалось в том, чтобы добавить прокрутку в верхнюю часть представления 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));
}
}
}
Для iOS существует множество приложений для CNN, поэтому, пожалуйста, дайте лучшее объяснение того, что вы хотите, или более конкретную информацию о том, какое приложение вы говорите. – rdelmar
Я говорю об этом приложении https://itunes.apple.com/us/app/cnn-app-for-iphone/id331786748?mt=8. Я хочу сделать, чтобы создать представление таблицы и над ним (например, заголовок) изображение. Когда пользователь прокручивает вниз по представлению таблицы вниз, изображение масштабируется, изменяя высоту кадра, поэтому он будет связан с первой ячейкой таблицы. – AdiC
Посмотрев на это приложение, я не думаю, что изображение наверху представляет собой представление заголовка таблицы. Представления заголовка таблицы прокручиваются вместе с таблицей, и в этом приложении таблица прокручивается поверх этого изображения при прокрутке вверх, в то же время изображение прокручивается медленнее. Надпись над изображением, а также серая полоса, в которой говорится, что «Дом» в ней может быть заголовком таблицы. – rdelmar