我想开发一个iOS应用程序,它可以从我的wordpress博客中获取所有文章,并将它们正确地列出来。每篇文章都有标题,图像和一些内容。对于第一个屏幕,我想制作类似于自定义UITableView的东西,但我不确定这是否是实现它的正确方法。
这是我想要在没有搜索栏的情况下做的事情。但是每篇文章都会以这种方式展示其图像,并且图像下方有标题(不需要内容预览)。如果我使用UITableView,我会有一个"分离"在所有图像之间,这不完全是在这里完成的方式。你知道我怎么能做到这样的事吗?我是否必须以编程方式创建我的图形对象,或者使用storyboard /界面构建器工具是否可行?
答案 0 :(得分:2)
您应该使用自定义的UITableViewCell。以下是资源:
http://www.idev101.com/code/User_Interface/UITableView/customizing.html
http://www.appcoda.com/customize-table-view-cells-for-uitableview/
您可以使用从UITableViewCell继承的XIB创建CustomCell类。我们将以下列方式在tableview类.m文件中添加类别。我认为这是应用于自定义单元格创建的最简单方法。
@interface UITableViewCell(NIB) @property(nonatomic,readwrite,copy) NSString *reuseIdentifier; @end - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 30; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *identifier=@"cell"; CustomCell *cell=[tableView dequeueReusableCellWithIdentifier:identifier]; if(cell==nil) { NSLog(@"New Cell"); NSArray *nib=[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; cell=[nib objectAtIndex:0]; cell.reuseIdentifier=identifier; }else{ NSLog(@"Reuse Cell"); } cell.lbltitle.text=[NSString stringWithFormat:@"Level %d",indexPath.row]; id num=[_arrslidervalues objectAtIndex:indexPath.row]; cell.slider.value=[num floatValue]; return cell; } @end
答案 1 :(得分:0)
对于这种事情,UICollectionView
是最好的。与UITableView
完全相同的委托,更加灵活和可配置。你可以有正方形单元格,你可以设置单元格宽度,你可以向左或向右滚动等。它用于上面的截图,以及Instagram等。这是如何实现它。
在.h:
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>
在.m:
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
UICollectionView *myCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) collectionViewLayout:flowLayout];
[myCollectionView setDelegate:self];
[myCollectionView setDataSource:self];
[myCollectionView setIndicatorStyle:UIScrollViewIndicatorStyleBlack];
[myCollectionView setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, -4)];
[myCollectionView setBackgroundColor:[UIColor whiteColor]];
[myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"CustomCell"];
[self.view addSubview:myCollectionView];
然后是委托方法:
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;