2013-04-16 16 views
8

Mam pytanie, jak dodać UIScrollView w UIView, aby UIScrollView mógł działać poprawnie.Dodaj UIScrollView w UIView programowo

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, container.frame.size.width/2, container.frame.size.height/2)]; 
scroll.pagingEnabled = YES; 
scroll.scrollEnabled = YES; 
[scroll setBackgroundColor:[UIColor redColor]]; 
NSInteger numberOfViews = 3; 
for (int i = 0; i < numberOfViews; i++) 
{ 
    CGFloat xOrigin = i * container.frame.size.width/2; 
    UIView *awesomeView = [[UIView alloc] initWithFrame:CGRectMake(xOrigin, 0, container.frame.size.width, container.frame.size.height)]; 
    awesomeView.backgroundColor = [UIColor colorWithRed:0.5/i green:0.5 blue:0.5 alpha:1]; 
    [scroll addSubview:awesomeView]; 
    [awesomeView release]; 
} 
scroll.contentSize = CGSizeMake(container.frame.size.width/2 * numberOfViews, container.frame.size.height); 
[container addSubview:scroll]; 

Powyższy kod jest z samouczka: http://idevzilla.com/2010/09/16/uiscrollview-a-really-simple-tutorial/ Ale to nie działa dla mnie.

EDIT:

Jeśli masz wątpliwości, które utworzyły Scrollview poprawnie, ale to nie działa, upewnij się, że nie jest nakładanie się z innym UIView Twój Scrollview. To był mój problem. Rozwiązany!

+0

u nie widać czerwony kolor przewijania widoku? –

+1

Widzę pierwszy ekran UIView colorWithRed: 0.5/i. – PiotrCh

+0

zgadnij, twój awesomeView ma większą szerokość i wysokość niż sam widok przewijania ... co oznacza, że ​​widok przewijania jest dodawany, spróbuj zwiększyć rozmiar ramki i zawartości widoku przewijania. –

Odpowiedz

1

swój

scroll.contentSize = CGSizeMake(container.frame.size.width * numberOfViews, container.frame.size.height); 
1
[container addSubview:scroll]; 

Dodaj tę linię zanim do pętli.

+0

To nie pomaga. Widzę widok przewijania i jest on treścią, ale nie mogę się przesuwać. – PiotrCh

+1

zmienić zawartość – vshall

6

Spróbuj tego:

{ 
    scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,480)]; 
    scrollview.showsVerticalScrollIndicator=YES; 
    scrollview.scrollEnabled=YES; 
    scrollview.userInteractionEnabled=YES; 
    [self.view addSubview:scrollview]; 
    scrollview.contentSize = CGSizeMake(width,height); 
    [scrollview release]; 
} 
1

Możesz skorzystać z poniższego kodu, aby dodać UIScrollView na yourView: -

Krok 1:

Delegate "UIScrollViewDelegate" to your ViewController.h 

for example: 
    @interface yourViewController:UIViewController<UIScrollViewDelegate> 

Krok 2:

//create you UIScrollView 
UIScrollView *MyScrollVw= [[UIScrollView alloc]initWithFrame:CGRectMake(0 ,0 ,320 ,480)]; 
MyScrollVw.delegate= self; 
[MyScrollVw setShowsHorizontalScrollIndicator:NO]; 
[MyScrollVw setShowsVerticalScrollIndicator:YES]; 
MyScrollVw.scrollEnabled= YES; 
MyScrollVw.userInteractionEnabled= YES; 
[yourView addSubview:MyScrollVw]; 
MyScrollVw.contentSize= CGSizeMake(320 ,1500);//(width,height) 

Krok 3:

chcesz realizować Scrollview Delegatów ViewController.m

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ 
    return imgView; 
} 
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 
    NSLog(@"Did end decelerating"); 
    //do your code here 
} 
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    NSLog(@"Did scroll"); 
    //do your code here 
} 
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 
    NSLog(@"Did end dragging"); 
    //do your code here 
} 
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ 
    NSLog(@"Did begin decelerating"); 
    //do your code here 
} 
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ 
    NSLog(@"Did begin dragging"); 
    //do your code here 
} 
Powiązane problemy