Я заинтересован в реализации пейджингового UIScrollView, очень похожего на текущее приложение Twitter, где есть основной подкачки UIScrollView (горизонтальная прокрутка) в верхней части иерархии представлений и несколько других (вертикальные прокрутка) UIScrollViews или UITableViews как подстраница подкачки UIScrollView.Choppy Paging UIScrollView Experience
Я принимал ссылку от this WWDC video, где они описали, как мы могли бы добавить/несколько «масштабирования» scrollViews в качестве подсмотра большего «прокручиваемого» прокрутки.
В моей текущей настройки, у меня есть: ViewController в раскадровке с иерархией следующим образом: View> ScrollView (contentScrollView)> Несколько подвидов (UIImageViews, UIButtons и UILabels).
Когда этот вид загружается, я вызываю метод setupPagingScrollView
в своем представленииDidAppear.
- (void)setupPagingScrollView
{
// Setup the PAGING UIScrollView
self.pagingScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 340, self.view.frame.size.height)];
self.pagingScrollView.contentSize = CGSizeMake(680, self.view.frame.size.height);
self.pagingScrollView.pagingEnabled = YES;
self.pagingScrollView.backgroundColor = [UIColor blackColor];
// Remove the CONTENT UIScrollView (from storyboard) from the view.
// Add the CONTENT UIScrollView (from storyboard), as a subview of the newly created PAGING UIScrollView
[self.contentScrollView removeFromSuperview];
[self.pagingScrollView addSubview:self.contentScrollView];
[self.view addSubview:self.pagingScrollView];
// Create the 2nd page, which is a UITableView
self.tableView = ({
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(340, 0, 320, self.view.frame.size.height) style:UITableViewStylePlain];
tableView.delegate = self;
tableView.dataSource = self;
tableView.backgroundColor = [UIColor whiteColor];
tableView.tableFooterView = [UIView new];
tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
tableView;
});
[self.pagingScrollView addSubview:self.tableView];
// UINavigationBar for the UITableView in the 2nd page.
self.likesCommentsNavBar = ({
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(340, 0, 320, 44)];
UINavigationItem *navItem = [[UINavigationItem alloc] init];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Likes", @"Comments"]];
[segmentedControl addTarget:self action:@selector(toggleLikesCommentsWithSegmentedControl:) forControlEvents:UIControlEventValueChanged];
segmentedControl.selectedSegmentIndex = 0;
navItem.titleView = segmentedControl;
navBar.items = @[navItem];
navBar;
});
[self.pagingScrollView addSubview:self.likesCommentsNavBar];\
}
Мой предназначен конечный результат будет что-то вроде приложения щебет, только что вместо панорамирование между 3 UITableViews, мой первый взгляд был бы настраиваемое представление с некоторыми изображениями, этикетки и кнопки, и Вторая и третья страницы будут UITableViews.
Я создал макет моего предполагаемого результата
В настоящее время я могу получить результат, я хочу, но я понимаю, что есть некоторая зыбь в исполнении. Я делаю что-то неправильно здесь, выделяя память на столько просмотров или что-то еще?
Большое спасибо!
изображения загружаются при прокрутке может быть виновником (если это произойдет в все) при загрузке изображений вы можете загрузить их в фоновом потоке, а затем представить их в основном потоке, чтобы поток пользовательского интерфейса не был заблокирован при загрузке изображений, не уверен, что это фактическая причина вашей проблемы, но у меня была эта проблема до и это сделало мой опыт прокрутки намного более плавным. – Fonix
У вас есть больше кода для этого примера, в котором вы работаете? Я действительно интересен в чем-то вроде приложения Twitter. Спасибо – mikemike396
@ Pyraego.com Я понял, что тот, кто делает все порывистым, был self.likesCommentsNavBar. Я похвалил этот кусок, и производительность вернулась к норме. Однако я не знаю, почему. – Ryan