2013-04-16 11 views
8

Ho una domanda su come aggiungere UIScrollView in UIView, in modo che UIScrollView funzioni correttamente.Aggiungere UIScrollView in UIView a livello di programmazione

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

Sopra codice da tutorial: http://idevzilla.com/2010/09/16/uiscrollview-a-really-simple-tutorial/ Ma non funziona per me.

EDIT:

Se avete un problema che è stato impostato uno ScrollView correttamente, ma non funziona, assicurarsi che non si sta sovrapponendo con un altro UIView tua ScrollView. Questo era il mio problema Risolto!

+0

u può non vedere il colore rosso vista di scorrimento? –

+1

Vedo la prima schermata di UIView colorWithRed: 0.5/i. – PiotrCh

+0

indovina, il tuo awesomeView ha una larghezza e un'altezza maggiori rispetto alla visualizzazione a scorrimento stessa. Ciò significa che la vista di scorrimento viene aggiunta, prova ad aumentare la dimensione del frame e del contenuto della visualizzazione di scorrimento. –

risposta

1

tua

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

Aggiungi questa linea prima del tuo ciclo for.

+0

Non aiuta. Riesco a vedere lo scrollview ed è contenuto ma non riesco a scorrere. – PiotrCh

+1

cambia il contenuto – vshall

6

Prova questo:

{ 
    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

È possibile utilizzare sotto codice per aggiungere UIScrollView sul yourView: -

Fase 1:

Delegate "UIScrollViewDelegate" to your ViewController.h 

for example: 
    @interface yourViewController:UIViewController<UIScrollViewDelegate> 

Fase 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) 

Passaggio 3:

si desidera implementare i delegati ScrollView in 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 
} 
Problemi correlati