iOS创建UIButtons矩阵

时间:2011-11-15 16:24:00

标签: ios matrix uibutton scrollview

我正在从服务器加载预览图像(缩略图)并将它们保存到本地文档目录。对于每个图像,都有一个核心数据条目。

现在我需要将此缩略图渲染到ScrollView中。我不知道将来会有多少缩略图,为什么我需要以编程方式将鼠标渲染到ScrollView中。我知道我必须根据缩略图的数量设置scrollView的高度。

缩略图需要可触摸,因为点击缩略图应打开另一个对话框。

第一个问题:用于显示缩略图的正确控件是什么?将UIButton作为自定义按钮,缩略图设置为背景图像吗?

第二个问题:如何设置动态矩阵以将拇指(按钮)渲染到。

由于

1 个答案:

答案 0 :(得分:1)

第一个答案:为了这个目的,我建议使用UIButton,这就是我在这种情况下会做的事情

第二个答案:假设你有一个所有缩略图的数组,那么你可以简单地迭代它们以类似于这样的方式创建所有按钮:

NSArray *thumbnailImages;
UIScrollView *scrollView;
//Scrollview is linked up through IB or created dynamically...whatever is easier for you
//The thumbnailImages array is populated by your list of thumbnails

//Assuming that your thumbnails are all the same size:
const float thumbWidth = 60.f;//Just a random number for example's sake
const float thumbHeight = 90.f;
//Determine how many thumbnails per row are in your matrix.
//I use 320.f as it is the default width of the view, use the width of your view if it is not fullscreen
const int matrixWidth = 320.f / thumbWidth;

const int contentHeight = thumbHeight * (thumbnailImages.count / matrixWidth);

for ( int i = 0; i < thumbnailImages.count; ++i )
{

    int columnIndex = i % matrixWidth;
    int rowIndex = i / matrixWidth;//Intentionally integer math

    UIImage* thumbImage = [thumbnailImages objectAtIndex:i];
    UIButton* thumbButton = [[UIButton alloc] initWithFrame:CGRectMake(columnIndex*thumbWidth, rowIndex*thumbHeight, thumbWidth, thumbHeight)];

    thumbButton.imageView.image = thumbImage;

    [scrollView addSubView:thumbButton];

    [thumbButton release];
}

[scrollView setContentSize: CGSizeMake(320.f, contentHeight)];

不一定把这个单词作为代码,我只是在记事本中写下来,但它应该给你一般的想法如何做到