我有一组图片(最多可以是25张)需要并排(他们是访问图标,告诉我们某个位置有什么设施)
我有一个数组中的图像,并在UITableViewCell中使用UIImageView。 (在尝试数组之前,我正在练习静态图像)。但是,它们相互重叠。有没有办法强制图像在前一个图像的右边,而不是每次正确填充+60像素:
if (indexPath.section == 0)
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierImage];
// I am assuming this image never changes and there is one row in this section! If it does change, use viewWithTag to get hold of the image view.
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifierImage] autorelease];
UIImageView *imageView = [[[UIImageView alloc] initWithFrame:CGRectMake(0,0,50,50)]autorelease];
imageView.tag = 1;
imageView.image = [UIImage imageNamed:@"prem.jpg"];
[cell addSubview:imageView];
UIImageView *imageView2 = [[[UIImageView alloc] initWithFrame:CGRectMake(60,0,50,50)]autorelease];
imageView2.tag = 2;
imageView2.image = [UIImage imageNamed:@"prem.jpg"];
[cell addSubview:imageView2];
}
return cell;
}
以上适用于两个图像,但它不是很优雅,并且在超过25个潜在图像(每次图像数量也发生变化)时都显得很傻。
任何提示都会非常感激。
汤姆
答案 0 :(得分:1)
根据ivar整数值创建rects,并将其放入for循环中,每次循环时都会增加xpos ivar。
答案 1 :(得分:1)
使用CGTransform的水平表格视图: http://iosstuff.wordpress.com/2011/06/29/creating-pulse-style-scrolling-horizontally-scrolling-uitableview-as-a-subview-of-uitableviewcell/
答案 2 :(得分:1)
为什么不使用UIScrollView?如果我需要并排放置图像,我只需在UIScrollView上执行此操作。代码看起来像这样
//Let's say your UIScrollView is named 'scrollView' and the array containing your UIImages is called 'imageArray'
CGFloat contentWidth = 0;
for(UIImage *thisImage in imageArray)
{
UIImageView *thisImageView = [[UIImageView alloc] initWithFrame:CGRectMake([imageArray indexOfObject:thisImage]*(thisImage.size.width + PADDING_IF_ANY), 0, thisImage.size.width, thisImage.size.height)];
[scrollView addSubview:thisImageView];
[thisImageView release];
contentWidth += thisImage.size.width + ([imageArray indexOfObject:thisImage]==0)?0:PADDING_IF_ANY;
}
scrollView.contentSize = CGSizeMake(contentWidth, scrollView.frame.size.height);
代码说明:
PADDING_IF_ANY表示两个图像之间所需的像素填充。代码只是一个循环遍历UIImage数组的for循环,为每个图像分配一个UIImageView,并根据数组中UIImage的索引位置设置X-origin。
因此,索引位置0将放置在滚动视图的最左侧位置。索引位置1将放置在1 *(图像宽度+填充),即滚动视图中上一个图像的右侧,依此类推。
要在UITableViewCell中使用scrollView,请在cellForRowAtIndexPath中执行此操作:
//This line gets you the frame of the cell relative to the tableview.
CGRect cellFrame = [tableView rectForRowAtIndexPath:indexPath];
//Set the Y origin to 0. This will get you the frame for the scrollView to be added with to the cell.
cellFrame.origin.y = 0;
//Now add your scrollView
scrollView = [[UIScrollView alloc] initWithFrame:cellFrame];
/*
Do stuff
*/
[cell.contentView addSubview:scrollView];
[scrollView release];
答案 3 :(得分:-1)
我认为您需要更改此行
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];
我知道这可能会增加内存但是没有其他解决方案,或者只是使用scrollview。