cuốn sách gpt4 ai đã làm

ios - Trải nghiệm UIScrollView được phân trang không liên tục

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:40:22 28 4
mua khóa gpt4 Nike

Tôi quan tâm đến việc triển khai trải nghiệm UIScrollView được phân trang, rất giống với ứng dụng Twitter hiện tại, trong đó có UIScrollView được phân trang chính (cuộn ngang) ở đầu phân cấp Chế độ xem và một số UIScrollView hoặc UITableView (cuộn dọc) khác phục vụ dưới dạng các bản xem trước của UIScrollView được phân trang.

tôi đã trích dẫn video WWDC nàyỞ đó, họ mô tả cách chúng ta có thể thêm một/một số ScrollView "thu phóng" dưới dạng các bản xem phụ của ScrollView "phân trang" lớn hơn.


Trong thiết lập hiện tại của tôi, tôi có: Một ViewController trong Storyboard với hệ thống phân cấp sau: Xem > ScrollView (contentScrollView) > một số lượt xem phụ (UIImageViews, UIButtons và UILabels).

Khi Chế độ xem tải, tôi gọi một phương thức trong viewDidAppear của nó thiết lậpPagingScrollView 方法。

- (void)setupPagingScrollView
{
// Thiết lập 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 = CÓ;
self.pagingScrollView.backgroundColor = [UIColor blackColor];

// Xóa NỘI DUNG UIScrollView (khỏi bảng phân cảnh) khỏi chế độ xem.
// Thêm NỘI DUNG UIScrollView (từ bảng phân cảnh), làm chế độ xem phụ của PAGING UIScrollView mới được tạo
[self.contentScrollView xóaFromSuperview];
[self.pagingScrollView addSubview:self.contentScrollView];
[self.view addSubview:self.pagingScrollView];


//Tạo trang thứ 2 là UITableView
self.tableView = ({
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(340, 0, 320, self.view.frame.size.height) style:UITableViewStylePlain];
tableView.delegate = self;
bảngView.dataSource = tự;
tableView.backgroundColor = [UIColor whiteColor];
tableView.tableFooterView = [UIView mới];
tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
bảngView;
});
[self.pagingScrollView addSubview:self.tableView];


// UINavigationBar cho UITableView ở trang 2.
self.likeCommentsNavBar = ({
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];
SegmentControl.selectedSegmentIndex = 0;

navItem.titleView = SegmentControl;
navBar.items = @[navItem];

thanh điều hướng;
});

[self.pagingScrollView addSubview:self.likesCommentsNavBar];\
}

Kết quả cuối cùng mà tôi mong đợi sẽ tương tự như ứng dụng Twitter, ngoại trừ thay vì xoay giữa 3 UITableView, Chế độ xem đầu tiên của tôi sẽ là Chế độ xem tùy chỉnh với một số hình ảnh, nhãn và nút, còn Chế độ xem thứ hai và thứ ba sẽ là UITableView.

Tôi đã tạo mô hình với kết quả như mong đợi

nhập mô tả hình ảnh ở đây

Hiện tại, tôi có thể đạt được kết quả như mong muốn, nhưng tôi nhận thấy hiệu suất hơi chập chờn. Phân bổ bộ nhớ cho quá nhiều Chế độ xem hoặc điều gì đó, tôi có đang làm gì sai ở đây không?

Cảm ơn bạn rất nhiều!

câu trả lời hay nhất

Trong trường hợp vấn đề tải hình ảnh trên luồng chính ở đây thì đây là một cách đơn giản để tải hình ảnh trên luồng nền

UIImageView *imageView = [[UIImageView alloc] init] // có thể là IBOutlet của bạn hoặc thứ gì đó thay thế

công văn_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

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

công văn_sync(dispatch_get_main_queue(), ^{

imageView.image = image; //có thể thêm một số hiệu ứng mờ dần hoặc thứ gì đó ở đây
});
});

Về ios - trải nghiệm UIScrollView phân trang không liên tục, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21528641/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress