我正在使用各种社交媒体应用程序。在这里,我必须完成一项任务,例如在其他社交媒体应用程序(例如Facebook,Twitter)中提供新闻。
请为我提供有效使用滚动视图的最佳方式。它应该向上和向下滚动,我可能需要延迟加载以获得更好的用户体验
提前致谢
答案 0 :(得分:2)
我使用UITableView创建了类似的东西。为了避免繁重的网络使用和较长的加载时间,我将10个帖子加载到表中。然后,当用户滚动到倒数第3个帖子时,它将另外10个加载到表中,所以当用户到达原始10个帖子的底部时,另外10个等待。
它是一种不错的流畅方法,也是Facebook和Twitter如何实现新闻提要的连续滚动。
你需要的所有方法都可以在iOS框架中获得,所以不要与第三方代码及其包含的错误作斗争!
答案 1 :(得分:1)
您可以使用UITableView
。在这里,您可以将每个新闻Feed表示为tableview单元格。
对于延迟加载,请参阅apple's example。
用于为表格视图单元格see this tutorial创建自定义视图。
希望这会有所帮助.. :)
答案 2 :(得分:1)
您可以使用UITableView / UICollectionView来显示您的数据。 对于加载,你应该看一下AFNetworking 2,这是一个简单的框架,有很多扩展用于延迟图像加载和异步请求。
https://github.com/AFNetworking/AFNetworking
希望这有帮助。
查看AFNetworking入门指南如何通过CocoaPod将AFNetworking安装到您的项目中。
所以,你的ViewController.m
// Import relevant Headers
#import "ViewController.h"
#import "AFNetworking.h"
#import "MyTableViewCell.h" // Custom TableViewCell
#import "UIImageView+AFNetworking.h"
@interface ViewController ()
@property (nonatomic, strong) NSArray *dataArray; // Array to store JSON - results
@end
@implementation ViewController
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self parseData];
}
- (void) parseData
{
[self clearResults];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager GET:@"https://itunes.apple.com/lookup?amgArtistId=468749,5723&entity=song&limit=5&sort=recent" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (responseObject)
{
[self handleJson:responseObject];
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (error)
{
NSLog(@"error %@", error);
}
}];
}
- (void) handleJson:(NSDictionary *)dict
{
self.dataArray = [dict objectForKey:@"results"];
[self.tableView reloadData];
}
- (void) clearResults
{
self.dataArray = nil;
[self.tableView reloadData];
}
#pragma mark - TableViewDatasource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.dataArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
NSDictionary *dataDict = [self.dataArray objectAtIndex:indexPath.row];
cell.artistLabel.text = [dataDict objectForKey:@"artistName"];
[cell.thumbImageView cancelImageRequestOperation];
NSURL *imageURL = [NSURL URLWithString:[dataDict objectForKey:@"artworkUrl100"]];
// replace placeholderimage with something like [UIImage imageNamed:@"superPlaceholder.png"]
[cell.thumbImageView setImageWithURL:imageURL placeholderImage:[UIImage new]];
return cell;
}
小样本:)
答案 3 :(得分:0)
你必须使用UITableView
。使用自定义tableViewCell创建表。您搜索教程以使用autolayout创建自定义UITableViewCell
。 iOS隐式地为tableView提供兑现。如果表行超过100,您还应该实现额外的缓存架构。