gpt4 book ai didi

ios - 断断续续的分页 UIScrollView 体验

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:22 28 4
gpt4 key购买 nike

我有兴趣实现分页 UIScrollView 体验,与当前的 Twitter 应用程序非常相似,其中在 View 层次结构的顶部有一个主分页 UIScrollView(水平滚动),以及其他几个(垂直滚动)UIScrollView 或UITableViews 作为分页 UIScrollView 的 subview 。

我引用了 this WWDC video他们在那里描述了我们如何添加一个/几个“缩放” ScrollView 作为更大的“分页” ScrollView 的 subview 。


在我当前的设置中,我有: Storyboard中的 ViewController 具有如下层次结构:View > ScrollView (contentScrollView) > 几个 subview (UIImageViews、UIButtons 和 UILabels)。

加载该 View 时,我在其 viewDidAppear 中调用方法 setupPagingScrollView 方法。

- (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];\
}

我预期的最终结果将类似于 Twitter 应用程序,只是不是在 3 个 UITableView 之间平移,我的第一个 View 将是一个带有一些图像、标签和按钮的自定义 View ,而第二和第三页将是 UITableView .

我已经创建了预期结果的模型

enter image description here

目前,我能够得到我想要的结果,但我意识到性能有些不稳定。将内存分配给这么多 View 或其他东西,我在这里做错了什么吗?

非常感谢!

最佳答案

万一主线程上的图像加载是这里的问题,这里有一个在后台线程上加载图像的简单方法

UIImageView *imageView = [[UIImageView alloc] init]; // can be your IBOutlet or something instead

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

UIImage *image = [UIImage imageNamed:@"imageName"];

dispatch_sync(dispatch_get_main_queue(), ^{

imageView.image = image; //can add some fade in animation or something here too
});
});

关于ios - 断断续续的分页 UIScrollView 体验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21528641/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com