2

配列から作成しているボタンの数に応じて、スクロール ビューのコンテンツ サイズを動的に設定するアプリケーションがありました。

for(int i =0;i<[sarray count];i++) 

    {

        NSMutableDictionary *dicttable=[sarray objectAtIndex:i];

        NSString *head=[dicttable objectForKey:@"cat"];
        btn= [UIButton buttonWithType:UIButtonTypeCustom];
        int j=i+1;
        btn.frame = CGRectMake((j-1)*87,0,87, 44);
        [btn setBackgroundImage:[UIImage imageNamed:@"bar.png"] forState:UIControlStateNormal];
        [btn setBackgroundImage:[UIImage imageNamed:@"bar_hvr.png"] forState:UIControlStateSelected];

        btn.backgroundColor = [UIColor clearColor];

        btn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];

        btn.titleLabel.textColor = [UIColor whiteColor];
       [btn setTitle:head forState:UIControlStateNormal];
        btn.tag = i;
        [btn setShowsTouchWhenHighlighted:YES];

            [Scroller addSubview:btn];
                [btn addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];

        if(btn.tag==0)
          {
            sendActionsForControlEvents:UIControlEventTouchUpInside];

           }
       else
          {
               btn.selected=NO;



          }


    }

    }


        [Scroller setContentSize:CGSizeMake([sarray count]*85, 44)];

`しかし、ここで問題は、最後のボタンの後でスクロールビューもスクロールします.それが起こる必要はありません.ビューの最後のボタンでスクロールが終了する必要があります.誰か助けてもらえますか

4

3 に答える 3

1

スクロールビューのバウンスを NO に設定する

scrollView.bounces = NO;

はい、あなたが言ったように、滑らかさが失われます。しかし、他に選択肢はありません。ソルを見つけた場合は、回答を更新してください。

于 2013-08-07T12:27:07.663 に答える
0

ボタンを動的に作成し、コンテンツ サイズのスクロールビューをカウント数に設定するための完全な例をお送りします。ボタンのフレームのサイズを必要に応じて設定する必要がある 1 つのサンプル コードを示しました。

    UIScrollView *scroll_View=[[UIScrollView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:scroll_View];


int y=0;

for(int i =1;i<10;i++)

{

   // NSMutableDictionary *dicttable=[sarray objectAtIndex:i];

   // NSString *head=[dicttable objectForKey:@"cat"];
   UIButton* btn= [UIButton buttonWithType:UIButtonTypeRoundedRect];

    btn.frame = CGRectMake(y,89,100, 50);
    [btn setBackgroundImage:[UIImage imageNamed:@"bar.png"] forState:UIControlStateNormal];
    [btn setBackgroundImage:[UIImage imageNamed:@"bar_hvr.png"] forState:UIControlStateSelected];

    btn.backgroundColor = [UIColor clearColor];

    btn.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
    NSString *str=[NSString stringWithFormat:@"%d",i];
    btn.titleLabel.textColor = [UIColor whiteColor];
    [btn setTitle:str forState:UIControlStateNormal];
    btn.tag = i;
    [btn setShowsTouchWhenHighlighted:YES];

    [scroll_View addSubview:btn];
    [btn addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];

    y=110*i;

}




   [scroll_View setContentSize:CGSizeMake(y, 400)];

コーディングを楽しむ

于 2013-08-07T11:55:05.643 に答える