用于创建文本编辑的递归函数

时间:2012-10-30 13:32:09

标签: c++ objective-c ios recursion

我的观点中有控件。所有物体都有不同的宽度和高度。我有一组这些对象。我需要编写递归函数,如果它们不适合当前行(类似于记事本或textedit),它将移动到我的对象的新行。

我想我们需要在循环中检查数组中的当前对象,如果它适合宽度,我们不做任何操作,如果它不适合当前视图(行)的宽度,我们应该进行递归。我对吗?当我们在数组中有对象时,将我们的对象移动到新行。

1 个答案:

答案 0 :(得分:1)

你可以这样做(假设所有开头都是0.0):

    NSArray* your_elements = ... //your elements in an NSArray (labels, buttons any type of views)

    CGFloat currentX = 0.0;
    CGFloat currentY = 0.0;

    CGFloat maxX = 320.0;
    CGFloat lineHeight = 12.0;

    for (UIView* some_view in your_elements) {
        CGRect newframe = some_view.frame;
        newframe.origin.x = currentX;
        newframe.origin.y = currentY;

        currentX += newframe.size.width;
        some_view.frame = newframe;

        if (currentX>maxX) {
            currentX = 0.0;
            currentY += lineHeight;
        }
    }