2013-05-13 3 views
1

UIScrollView의 하위 뷰를 컨테이너 중심에서 얼마나 멀리 떨어져 있는지에 따라 크기를 조정하려고합니다. 나는 내가 가까이 있다고 생각하지만, 그렇지 않다. 중심선의 왼쪽에있는 뷰는 오른쪽에있는 뷰보다 약간 축소됩니다.UIScrollView Subview Scaling

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    for(unsigned int i=0; i<[scrollView.subviews count]; i++) 
    { 
     UIView *v = [scrollView.subviews objectAtIndex:i]; 

     // not quite right here 
     float scale = 1. - (abs(scrollView.center.x - (v.center.x - scrollView.contentOffset.x))/scrollView.contentSize.width/2); 

     v.alpha = scale; 

     v.transform = CGAffineTransformIdentity; 
     v.transform = CGAffineTransformScale(v.transform, scale, scale); 

    } 
} 

누군가가 어떤 생각을 가지고 있다면, 나는 이것과 긴 싸움을 해왔으므로 크게 감사 할 것입니다.

답변

0

척도 계산을 테스트하면 처음 부분에 이상이 있음을 알 수 있습니다. 다음 값을 상상해 있는 ScrollView 센터 X = 10 있는 ScrollView contentOffset X = 30 V1 센터 X = 5 V2 중심 X = 15

V1 및 V2는 중앙 좌측 및 5 내지 (5 개 픽셀 미러링 가운데의 오른쪽), 그래서 그들은 같은 스케일 값을 반환해야합니다. 코드를 사용하여 계산을 수행하면 35와 25가 반환되므로 계산이 올바르지 않습니다.

나는 당신이 당신의 규모가 정확히 작동하려면 어떻게 모르겠지만 제안은 다음과 같습니다

float scale = 1. - ((scrollView.contentOffset.x - abs(v.center.x - scrollView.center.x))/scrollView.contentSize.width/2); 

편집 :의

float scale = 1. - (abs(v.center.x - scrollView.center.x))/scrollView.contentSize.width/2); 

있습니다 많은 방법 : 이 하나를 시도 귀하의 계산을 수행합니다. 내 요점은 당신의 작업이 당신에게 위조 된 값으로 예상되는 결과를 제공하는지 확인해야하며, 당신의 작업은 그렇지 않다는 것입니다. 귀하의 배당금이 잘못된 결과를 제공하고 있습니다.

+0

그게 내가하려는 일이 아닌 것 같습니다. 나는 "중심"에서보기를 원합니다 (단일 페이지와 같이 페이지 된 scrollview, 하위보기를 자르지 않음). 왼쪽에서 오른쪽으로, 오른쪽에서 멀리 떨어지게 오른쪽으로보기를 원합니다. 뭔가 (나쁜 아스키) :'_- | -_' 그것들은 5 개의 전망, 중간에 규모 1, 다음에 .7, 그리고 .5, 그것은 의미가 있습니다. – Josh

+0

내 대답을 다른 예제 – k20

+0

으로 편집했습니다. 여전히 작동하지 않습니다. 이제는 스크롤보기의 내용 창 왼쪽 끝에서 감소합니다. – Josh