在UIScrollViews中定位UIViews

时间:2011-11-22 13:57:35

标签: objective-c ios uiscrollview

我添加了9个UIViews作为UIScrollView的子视图,其代码如下:

-(void)constructedViewsForArray:(NSArray*)_listOfItems {
    [_scrollView setContentSize:CGSizeMake(_listOfItems.count * 160, _scrollView.frame.size.height)];
    CGRect frame = CGRectMake(10, 5, 100, 90);
    for (int i = 0; i<[_listOfItems count];i++) {
        UIView *aView = [[UIView alloc]init];
        UILabel *test = [[UILabel alloc]initWithFrame:CGRectMake(0, 20, 100, 20)];
        test.text = [NSString stringWithFormat:@"%@",[_listOfItems objectAtIndex:i]];
        [aView addSubview:test];
        [aView setBackgroundColor:[UIColor redColor]];
        frame.origin.x=((frame.size.width+5)*i+5);
        aView.frame = frame;
        [_scrollView addSubview:aView];
    }
}

视图被正确添加到scrollview.But滚动后UIView没有对齐。请参考下面的图片:

5px space before the first view

5px space missing after scrolling

滚动后,第一个视图和屏幕边缘之间的5px空间丢失。 滚动后如何设置视图位置。

PS:已启用分页。

感谢您的帮助。

此致

iSee的

2 个答案:

答案 0 :(得分:2)

我认为你缺少的是需要10到3之间的3到4,以及6和7等,以便分页工作就像你想要的那样。

所以更改行

frame.origin.x=((frame.size.width+5)*i+5);

这样的事情

frame.origin.x=((frame.size.width+5)*i+5 + (i/3) * 5);

答案 1 :(得分:0)

看起来你没有注意到第4列需要10 px的余量。所以你需要在第3列之后添加5个额外的像素。

if((i%3)==0)
 frame.origin.x=(((frame.size.width+5)*i+5)+ (i*5));
else
 frame.origin.x=((frame.size.width+5)*i+5);

我希望这会有所帮助。