使用UIScrollView水平滚动包含20个文本框的视图

时间:2013-08-08 07:17:10

标签: ios uiscrollview

我必须水平实现20个文本框。当我向左滚动时,如何添加滚动条以查看所有文本框。

2 个答案:

答案 0 :(得分:2)

请尝试以下代码:

UIScrollView *scrlView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    scrlView.scrollEnabled=YES;
    int x=5;
    int y=5;
    for (int i=0;i<20;i++ ) {
        UITextField *txtField=[[UITextField alloc] initWithFrame:CGRectMake(x,y , 100,40 )];
        txtField.tag=i;
        txtField.delegate=self;
        [scrlView addSubview:txtField];
        x+=105;
    }

    scrlView.contentSize=CGSizeMake(x, 50);
    [self.view addSubview:scrlView];

我希望这段代码可以帮到你。

答案 1 :(得分:1)

你可以找到很多关于这个主题的问题(例如Calculate the contentsize of scrollview),但是这是我的解决方案:

您想使用UIScrollView执行任务。事实上,使用它很简单。

首先,您需要在屏幕的某处初始化并显示UIScrollView。我将假设您在UIViewController,并且您想要创建300px width200px height的滚动视图。为此,您可以执行以下操作:

UIScrollView *aScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 300, 200)];
[[self view] addSubview:aScrollView];
[aScrollView setScrollEnabled:YES];

现在是时候把内容放在里面了。 这里要考虑的关键思想如下。虽然'UIScrollView'本身有一个大小,但它的内容也有内部大小,这实际上是可滚动的。 假设您有20个项目,每个项目的大小为“40px宽度”和“200px高度”。我还假设您希望在每个文本框之间留出10px的空间。因此,我们想要在'UIScrollView'中拥有的区域的总可滚动宽度如下:(20(项目)*(40(每个项目的大小)+10(每个项目之间的距离))) -10 即可。然后我们将执行以下操作:

[aScrollView setContentSize:CGSizeMake((20*(40 + 10))-10), 200];

好吧,我们差不多完成了。现在我们要做的就是将每个文本项添加到滚动视图中。我不会一个接一个地做,而是假设你将它们放在一个集合中,例如NSArray(可能是NSMutableArray)。

NSArray *textFields; // the array with the collection of text boxes

int x = 0;
for (UITextField *aTextField in textFields){
    [aTextField setFrame:CGRectMake(x, 0, 40, 200)];
    [[self view] addSubview:aTextField];
    x += 40 + 10; // incrementing the X coordinate to correctly place the next item
}

就是这样!