2013-08-23 4 views
0

"슬라이더를 잠금 해제하는"요소와 같은 UISlider를 작성했습니다. 필자가 작성한 애니메이션은 슬라이더 하나만 가리킬 때 잘 작동합니다. 하지만 슬라이더를 동적으로 생성하려면 for 루프를 사용해야합니다. 그리고이 같은 슬라이더가 for 루프에서 슬라이더 태그를 추가하고 슬라이더에 애니메이션 기능을 추가 생성 할 때 애니메이션이 작동하지 않습니다for 루프로 만든 슬라이더에 애니메이션을 추가 할 수 있습니까?

for (int i = 0; i < rowCount; i++){ 
    ... 
    UISlider *slider=[[UISlider alloc] initWithFrame:CGRectMake(5+ xInc, 25+yInc, 322, 40)]; 
    //give a id tag to the slider 
    [slider setTag:i*10]; 
    //set a action to the slider 
    [slider addTarget:self action:@selector(UnlocklinkSlider:) forControlEvents:UIControlEventTouchUpInside]; 
    ... 

그리고 애니메이션 기능입니다 :

- (void)UnlocklinkSlider:(UISlider*)slider 
{ 
    for (int i = 0; i < rownumber; i++){ 
     UIImageView *frontimg = (UIImageView *)[self.view viewWithTag:i*10+1]; 
     ... 
     if (slider.tag==i*10) { 
      if(slider.value >= 0.5){ 
       // user did not slide far enough, so return back to 0 position 
       [UIView beginAnimations: @"SlideCanceled" context: nil]; 
       [UIView setAnimationDelegate: self]; 
       [UIView setAnimationDuration: 0.35]; 
       // use CurveEaseOut to create "spring" effect 
       [UIView setAnimationCurve: UIViewAnimationCurveEaseOut]; 
       ... 
       [UIView commitAnimations]; 
       ... 
      } 
      else{ 
       ... 
      } 
     } 
    } 
} 

하지만 애니메이션이 이런 방식으로 작동하지 않습니다. 왜 아무도 알지 못해?

+0

루프의 목적은 무엇입니까? 어떤 속성으로 애니메이션을 적용하려고합니까? 어떤 방법으로 작동하지 않습니까? – Wain

+0

사실, 슬라이더 버튼을 만들기 위해 왼쪽면으로 밀고 클릭하면 웹 페이지 1로 이동합니다. 오른쪽면으로 밀면 클릭하면 웹 페이지 2로 이동합니다. 슬라이더를 왼쪽 또는 오른쪽으로 돌리지 않으면 왼쪽 또는 오른쪽으로 돌아갑니다. 이 버튼은 웹 페이지 1과 웹 페이지 2의 두 가지 액세스 권한이있는 특정 웹 사이트에 대한 링크입니다. 다른 웹 사이트에 버튼을 추가 할 수 있습니다. –

+0

좋습니다. 물론 슬라이더를 건네 줘야합니다. 슬라이더를 사용하여 무엇을 해야할지 생각하는 대신 루핑을하는 이유는 무엇입니까? – Wain

답변

0

[UIView beginAnimations][UIView commitAnimations]을 루프 외부에 배치 해보십시오.

그래도 문제가 해결되지 않으면보기의 레이어에서 CoreAnimations을 사용해보세요.

0

슬라이더의 값을 설정하는 동안 당신은 시간을 제어하는 ​​새로운 블록 기반의 애니메이션 API를 사용한다 : 또한

[UIView animateWithDuration:2 animations:^{ 
    [slider setValue:1]; 
} 

을, 당신은 2 개 개의 다른 루프를 가지고 있지만 아마 당신은 단지 당신이 원하는 1을 가져야한다 루프를 사용하여 모든 슬라이더를 만들고보기에 추가하십시오. 그러나 슬라이더 중 하나에서 콜백을 받으면 루프가 필요하지 않습니다. 대신 액션을 호출 한 슬라이더 (사용자가 상호 작용하는 슬라이더)와 만 상호 작용해야합니다.

+0

은 아직 작동하지 않습니다. 애니메이션이 for 루프에서 작동하는지는 의심 스럽습니다. –

+0

for 루프에서 작업하지 않아도됩니다. 나는 아직도 for 반복문이있는 이유를 모르겠다. 애니메이션을 명시 적으로 비활성화하는 무언가가있을 가능성이 더 큽니다 (어떤 코드가 ... 섹션에 있습니까?). – Wain

+0

원인 sqlite 데이터베이스의 모든 웹 사이트에 대해 슬라이더를 만들어야하므로 for 루프를 사용하여 모든 행을 읽고 각 행의 슬라이더를 만들어야합니다. –

관련 문제