1

我有一个UIScrollView会根据要显示的按钮数量来扩展。它总是四舍五入到最接近的 320 倍数。

因此,如果UIScrollView将收到 3 个按钮,它将是 320 像素水平,如果收到 6 则 640 像素,9 是 960。

我需要做的是平均分配UIButtons这个UIScrollView。但是我似乎无法弄清楚如何做到这一点。

UIButtons水平测量 80 像素。

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

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

4

4 回答 4

0
[theScrollView setContentSize:CGSizeMake(320/640/960, theScrollView.frame.size.height)];
于 2013-09-10T09:44:53.647 回答
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);

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

于 2013-09-10T10:10:10.980 回答
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)];

希望这会帮助你。 我已经测试过了。。工作正常。。。

于 2013-09-10T10:10:41.453 回答
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

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

于 2013-09-10T09:56:25.983 回答