我希望根据从url获取的图像设置UICollectionView单元格的高度。谁能帮我?我已经检查了一些库,因为他们给了单元格随机高度。 In this one随机高度给予细胞。当我尝试提供图像高度like this时,它会给出result。细胞之间有空间。
答案 0 :(得分:1)
Write in ViewDidLoad Method
for (int i=0; i<[imageURLArray count]; i++)
{
//Declare Globally
IMGArray1=[[NSMutableArray alloc] init];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[imageURLArray objectAtIndex:i]]];
NSOperationQueue *urlQue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:urlQue completionHandler:^(NSURLResponse *response,
NSData *MoblieDatadata, NSError *error)
{
if ([MoblieDatadata length] >0 && error == nil)
{
UIImage *image = [[UIImage alloc]initWithData:MoblieDatadata];
[IMGArray1 addObject:image];
}
else if ([MoblieDatadata length] == 0 && error == nil)
{
NSLog(@"Nothing was downloaded.");
}
else if (error != nil)
{
NSLog(@"Error happened = %@", error);
dispatch_async(dispatch_get_main_queue(), ^{
});
}
}];
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
examplemycell *myCell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"cell"
forIndexPath:indexPath];
UIImage *image;
int row = [indexPath row];
image = [UIImage imageNamed:IMGArray1[row]];
myCell.imageView.image = image;
return myCell;
}
#pragma mark -
#pragma mark UICollectionViewFlowLayoutDelegate
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *image;
int row = [indexPath row];
image = [UIImage imageNamed:IMGArray1[row]];
return image.size;
}
//For setting spacing between collectionview cells
//use the delegate method like
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 10; // This is the minimum inter item spacing, can be more
}
And Use this for verticle line spacing between cells
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 5;
}
答案 1 :(得分:0)
您可以将高度设置为变量
Serializable
如果您的图片已下载,请致电:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: 100, height: myHeight)
}
}
问题是陈旧的,但仍然是实际的