2014-03-29 4 views
0

메신저 scrollview에서 작동하고 페이징을 사용하도록 설정해야하지만 사용자가 너비를 내가 기울이지 않는 내용으로 설정하려고하면 도움이 필요합니다. 감사합니다!ScrollView 내용의 너비는 어떻게 설정할 수 있습니까?

Heres는 임하려고 무엇을 :

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { 

    int PageNum = (int)(scrollView.contentOffset.x/140); 
    targetContentOffset->x = PageNum * (int)(targetContentOffset->x/PageNum); 

} 

scrollViewDidScroll: 내가 올바르게 현재 페이지 A NSlog 및 그것의 인쇄를 추가 할 때, 무엇을 작동하지 않습니다 페이징 폭에 대한 정의입니다 :

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

    int PageNum = (int)(scrollView.contentOffset.x/140); 
    NSLog(@"%d", PageNum); 

} 

희망 누군가 나를 도울 수있어, 고마워!

답변

0

UIScrollViewpaging을 사용하려면 scrollViewWillEndDragging:withVelocity:targetContentOffset: 메서드를 구현할 필요가 없습니다. 이렇게하려면, 당신은 단지 필요

  • 설정 YES로있는 ScrollView의 pagingEnabled 속성을. 설명서에이 속성에 대한 설명이 있습니다. 이 속성의 값이 YES이면 사용자가 스크롤 할 때 스크롤보기의 배수에서 스크롤보기가 중지됩니다.
  • 하위보기 (페이지)를 스크롤보기에 추가하십시오. 수평 페이징 된 스크롤 뷰를 검색하려면 해당 width이 스크롤 뷰의 너비와 같아야합니다.
  • 스크롤보기의 contentSize 속성을 설정하십시오.

그래서 코드는 다음과 같이해야한다 :

[scrollView setPagingEnabled:YES]; 
NSInteger numberOfPages = 100; 

CGFloat pageWidth = scrollView.bounds.size.width; 
CGFloat pageHeight = scrollView.bounds.size.height; // can be something else 

for(NSInteger i = 0; i < numberOfPages; i++) 
{ 
    UIView * view = [[UIView alloc] initWithFrame:CGRectMake(i * pageWidth, 0, pageWidth, pageHeight)]; 
    // do somethings with the page view 
    [scrollView addSubview:view]; 
} 

[scrollView setContentSize:CGSizeMake(numberOfPages * pageWidth, scrollView.bounds.size.height)]; 
0

솔직히 나는 당신의 코드와 당신이하는 일을 정말로 이해하지 못합니다. 이 답변은 문제와 관련이 없지만 어쨌든 도움이 될 수 있습니다.

targetContentOffset->x = PageNum * (int)(targetContentOffset->x/PageNum); 

많이 있지만, 일부 반올림을하지 않는 것

targetContentOffset->x = (int)(targetContentOffset->x); 

에 꽤 동일합니다. 반올림의 부작용에 대해 이렇게하면 내 대답을 무시합니다.

+0

내가 원하는 폭을 먹으 렴 때문에 (그게 전부는 당신이 이해 해달라고하면), 나는 당신이 무엇을하려고 내가 140에 scrollView.contentOffset.x 분할 저와 같은 것을 말하면 : S, 감사합니다 –

+0

물론 동일합니다. 당신은 x = x하고 있습니다. 그 임무에서 당신은 무엇을 기대합니까? 다시 말하지만, 이것이 당신의 문제와 관련이 있는지 확실하지 않습니다. 최선의 경우 그것은 단지 CPU 사용의 허스트입니다. –

관련 문제