2013-08-07 104 views
2

我有一個應用程序,其中我動態,根據該我是從一個array.like此`如何動態設置滾動視圖內容?

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)]; 

` 但這裏的問題是創建的按鈕的數量設置滾動視圖的內容大小最後一個按鈕也。它不需要被happend滾動視圖滾動後,我需要用滾動視圖上最後一個按鈕結束後,任何人可以幫助我在此

+0

檢查此:-http://stackoverflow.com/questions/10518790/how-to-set-content-size-of-uiscrollview-dynamically –

+0

chnge以下並檢查。 CGRectMake((j-1)* 87,0,85,44); [Scroller setContentSize:CGSizeMake([sarray count] * 87,44)]; – vamsi575kg

+0

@Gup thats已經工作,但我的問題是,如果它到達第一個按鈕,然後需要停止滾動到右側,如果它到達最後一個按鈕,那麼我需要停止滾動left.thats真正的pbm.in我的情況下,它滾動在這兩種情況下略高一點 – hacker

回答

1

設置滾動視圖反彈到沒有

scrollView.bounces = NO; 

是的,就像你說的那樣失去平滑度。但沒有其他選擇。如果你發現任何溶膠,請更新答案。

-1

你只需要聲明CGFloat類型的一個yMargin變量並初始化它與一些要求的值爲0.現在每當你添加一個新的子視圖垂直做y+=lbl.frame.size.height;

現在setContentSize:CGSizeMake([sarray count]*85, y margin+someRequiredMargin)];

(someRequiredMargin - 要在下面添加)

0

嘿,我差你完整的例子,使按鈕dynamicay和塞汀的計數數量的內容大小滾動視圖,我剛剛給ü一個示例代碼u必須設置按鈕的幀的大小爲u requried

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)]; 

享受編碼