UIScrollView水平分布UIButtons

时间:2013-09-10 09:38:17

标签: iphone ios objective-c uiscrollview uibutton

我有一个UIScrollView将根据显示的按钮数量进行扩展。它将始终向上舍入到最接近的320倍。

所以,如果UIScrollView将收到3个按钮,它将是320px水平,如果它收到6然后640px,9是960。

我需要做的是将UIButtons平均分配到此UIScrollView。但我似乎无法弄清楚如何执行此操作。

我的UIButtons水平测量80像素。

有人可以帮助我解决这个问题吗?

更新/澄清:设置UIScrollView的宽度没有问题。这已经完成了。我正在寻找有关如何在'UIScrollView'中分发'UIButtons'的信息..

4 个答案:

答案 0 :(得分:0)

[theScrollView setContentSize:CGSizeMake(320/640/960, theScrollView.frame.size.height)];

答案 1 :(得分:0)

   //considering a margin of 10 pts on either edges and a additional 10 pts on each side of button 

添加如下按钮:

for(int i=0; i< buttonCount;i++){
    CGRect buttonFrame = CGRectMake( 10 + i*(80+10+10) +10 , buttonY, 80, buttonHeight );
    UIButton *button = [UIButton buttonWithType:<type>];
    button.frame = buttonFrame;
}

//To set the scrollable area

[scrollView setContentSize:CGSizeMake( 10 + buttonCount*(80+10+10) +10, 0 )];
//left margin +  buttonCount x (buttonWidth + leftButtonMargin+rightButtonMargin) + right margin

这可以根据按钮的数量为您提供几乎均匀分布的按钮。

答案 2 :(得分:0)

您可以像这样使用:使用MyScrollView.pagingEnabled = YES。

int PageNum=0;

if(TotalButtons%3 >0)
{
  pageNum=TotalButtons/3;
  pageNum++; 
}
else{
PageNum=TotalButtons/3;
}

[MyScrollView setContentSize:CGSizeMake(320*pageNum, MyScrollView.frame.size.height)];

根据滚动视图中所需的宽度和间距添加按钮。

修改

 int x=56;
    int y=60;

    for(int i=1;i<= 60;i++)
    {
        UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame=CGRectMake(x, y, 200, 120);
        button.tag=i;
        // [button setTitle:[NSString stringWithFormat:@"Video-%d",i+1] forState:UIControlStateNormal];
        [button setBackgroundImage:[UIImage imageNamed:@"220x200.png"] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(ButtonAction:) forControlEvents:UIControlEventTouchUpInside];
        [VideoStoreScroll addSubview:button];

        if(i%6==0)
        {
            count++;

            x=(count-1)*VideoStoreScroll.frame.size.width+56;

            y=50;
        }
        else
        {
            if(i%3==0)
            {
                x=(count-1)*VideoStoreScroll.frame.size.width+56;
                y=y+190;
            }
            else
            {
                x=x+256;
            }
        }
    }

    VideoStoreScroll.contentSize=CGSizeMake(x-56, 480);
    VideoStoreScroll.contentOffset=CGPointMake(0, 0);

这里我每页滚动使用六个水平按钮。你可以在这之后工作三个。

答案 3 :(得分:0)

首先取一个数组中的所有按钮..小时说buttonsArray

int spacing = 10;       // Adjust according to you requirement
int buttonWidth = 100;  // Adjust according to you requirement
int buttonHeight = 100; // Adjust according to you requirement
int count = 0;

for (UIButton *thisButton in buttonsArray) {
    [thisButton setFrame:CGRectMake(spacing*(count+1)+count*buttonWidth, 20, buttonWidth, buttonHeight)];
    count++;
}

[theScrollView setContentSize:CGSizeMake([[buttonsArray lastObject]frame].origin.x+[[buttonsArray lastObject]frame].size.width+spacing, 0)];

希望这会对你有所帮助。 我测试过它......工作正常......