2011-07-20 11 views
0

Dans un de mes viewController, j'ai un ScrollView, un UIView qui contient et UIImageView, UITextView etc. pour le scrollview est ici le code que je l'ai écrit:Comment travailler avec UIScrollView?

overViewScroll = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0,screenFrame.size.width,screenFrame.size.height)]; 
     [overViewScroll setCanCancelContentTouches:NO]; 
     overViewScroll.pagingEnabled = YES; 
     overViewScroll.clipsToBounds = NO; 
     overViewScroll.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
     [overViewScroll setContentSize:CGSizeMake(screenFrame.size.width, screenFrame.size.height-25)]; 
     [overViewScroll setScrollEnabled:YES]; 
     [overViewScroll setAlwaysBounceVertical:YES]; 
     [overViewScroll setShowsVerticalScrollIndicator:YES]; 

UIView * completeView = [[UIView alloc]initWithFrame:CGRectMake(0,0,screenFrame.size.width,screenFrame.size.height)]; 
    UILabel* heading1 = [[UILabel alloc]initWithFrame:CGRectMake(5,0,310,30)]; 
    heading1.text = name; 
    heading1.backgroundColor = [UIColor clearColor]; 
    UIFont * headingFont = [UIFont fontWithName:@"HelVetica" size:15]; 
    heading1.font = headingFont; 
    [completeView addSubview:heading1]; 
    //NSSet * imageString = [projectHeroData valueForKey:@"imageURL"]; 
    NSString * urlString = @""; 
    NSURL * url = [NSURL URLWithString:urlString]; 
    NSData * imageData = [NSData dataWithContentsOfURL:url]; 
    UIImage * projImage = [[UIImage alloc]initWithData:imageData]; 
    UIImageView * imgView = [[UIImageView alloc]initWithFrame:CGRectMake(screenFrame.size.width/70,screenFrame.size.height/50,screenFrame.size.width-((screenFrame.size.width/70)*2),screenFrame.size.height/3)]; 
    imgView.image = projImage; 
    imgView.backgroundColor = [UIColor blueColor]; 
    [completeView addSubview:imgView]; 

    UILabel * abstract = [[UILabel alloc]initWithFrame:CGRectMake(screenFrame.size.width/41,screenFrame.size.height/31 + screenFrame.size.height/3,screenFrame.size.width/4,screenFrame.size.height/30)]; 
    abstract.text = @"Abstract-"; 
    abstract.font = [UIFont boldSystemFontOfSize:fontSize]; 
    abstract.backgroundColor = [UIColor clearColor]; 
    [completeView addSubview:abstract]; 

    UILabel * lastUpdated = [[UILabel alloc]initWithFrame:CGRectMake(screenFrame.size.width/41 + screenFrame.size.width/5,screenFrame.size.height/31 + screenFrame.size.height/3,screenFrame.size.width-screenFrame.size.width/4,screenFrame.size.height/30)]; 
    NSString * string = modDate ; 
    NSString * updated = [NSString stringWithFormat:@"Last Updated-%@",string]; 
    lastUpdated.text = updated; 
    lastUpdated.backgroundColor = [UIColor clearColor]; 
    lastUpdated.font = [UIFont boldSystemFontOfSize:fontSize]; 
    [completeView addSubview:lastUpdated]; 

    UITextView * textView2 = [[UITextView alloc]initWithFrame:CGRectMake(screenFrame.size.width/70,(screenFrame.size.height/31 + screenFrame.size.height/3)+screenFrame.size.height/30,screenFrame.size.width-screenFrame.size.width/70*2,screenFrame.size.height)]; 
    textView2.text = abst; 
    textView2.editable = NO; 
    textView2.font = [UIFont systemFontOfSize:fontSize]; 
    textView2.backgroundColor = [UIColor clearColor]; 
    [completeView addSubview:textView2]; 

    [overViewScroll addSubview:completeView]; 
    [self.view addSubview:overViewScroll]; 

tout est addded au UIView et UIView est ajouté à l'UIScrollView. Mais le problème est qu'il se comporte bizarrement, l'image ne défile pas tout le long et le texte dans Textview défile lui-même. S'il vous plaît aider !!

+0

changez le contenu de votre scrollview – ajay

+0

que devrais-je augmenter ou diminuer ?? – Ashutosh

+0

chaque fois que vous voulez faire défiler alors le contenu scrollview doit être supérieur à sa sous-vue.means dans votre cas uiview taille de l'image est inférieure à l'uiscrollview – ajay

Répondre

0

changez le contenu de votre scrollview.votre taille de UIview et la taille de uiscrollview est la même si le contenu de UIScrollview est supérieur à sa taille de sous-vue puis défilez changez la ligne [overViewScroll setContentSize: CGSizeMake (screenFrame.size.width, screenFrame. size.height-25)]; comme ceci [overViewScroll setContentSize: CGSizeMake (screenFrame.size.width, (screenFrame.size.height-25) * 2)] ;. il vous permettra de faire défiler horizontalement et par défaut textview ayant la propriété de défilement de son auto.

+0

ok donc si je ne veux pas que textView ait une scrollview horizontale et ne le veux pas faites défiler en soi plutôt que de faire défiler avec toute la vue. Que dois-je faire/ – Ashutosh

+0

ok got it ..... Merci, – Ashutosh

0
overViewScroll =[[UIScrollViewalloc]initWithFrame:CGRectMake(0,0,screenFrame.size.width,screenFrame.size.height)]; 
    [overViewScroll setCanCancelContentTouches:NO]; 
    overViewScroll.pagingEnabled = YES; 
    overViewScroll.clipsToBounds = NO; 
    overViewScroll.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
    [overViewScroll setContentSize:CGSizeMake(320,600)]; 
    [overViewScroll setScrollEnabled:YES]; 
    [overViewScroll setAlwaysBounceVertical:YES]; 
    [overViewScroll setShowsVerticalScrollIndicator:YES]; 

UIView * completeView = [[UIView alloc]initWithFrame:CGRectMake(0,0,screenFrame.size.width,screenFrame.size.height)]; 
UILabel* heading1 = [[UILabel alloc]initWithFrame:CGRectMake(5,0,310,30)]; 
heading1.text = name; 
heading1.backgroundColor = [UIColor clearColor]; 
UIFont * headingFont = [UIFont fontWithName:@"HelVetica" size:15]; 
heading1.font = headingFont; 
[completeView addSubview:heading1]; 
//NSSet * imageString = [projectHeroData valueForKey:@"imageURL"]; 
NSString * urlString = @""; 
NSURL * url = [NSURL URLWithString:urlString]; 
NSData * imageData = [NSData dataWithContentsOfURL:url]; 
UIImage * projImage = [[UIImage alloc]initWithData:imageData]; 
UIImageView * imgView = [[UIImageView alloc]initWithFrame:CGRectMake(screenFrame.size.width/70,screenFrame.size.height/50,screenFrame.size.width-((screenFrame.size.width/70)*2),screenFrame.size.height/3)]; 
imgView.image = projImage; 
imgView.backgroundColor = [UIColor blueColor]; 
[completeView addSubview:imgView]; 

UILabel * abstract = [[UILabel alloc]initWithFrame:CGRectMake(screenFrame.size.width/41,screenFrame.size.height/31 + screenFrame.size.height/3,screenFrame.size.width/4,screenFrame.size.height/30)]; 
abstract.text = @"Abstract-"; 
abstract.font = [UIFont boldSystemFontOfSize:fontSize]; 
abstract.backgroundColor = [UIColor clearColor]; 
[completeView addSubview:abstract]; 

UILabel * lastUpdated = [[UILabel alloc]initWithFrame:CGRectMake(screenFrame.size.width/41 + screenFrame.size.width/5,screenFrame.size.height/31 + screenFrame.size.height/3,screenFrame.size.width-screenFrame.size.width/4,screenFrame.size.height/30)]; 
NSString * string = modDate ; 
NSString * updated = [NSString stringWithFormat:@"Last Updated-%@",string]; 
lastUpdated.text = updated; 
lastUpdated.backgroundColor = [UIColor clearColor]; 
lastUpdated.font = [UIFont boldSystemFontOfSize:fontSize]; 
[completeView addSubview:lastUpdated]; 

UITextView * textView2 = [[UITextView alloc]initWithFrame:CGRectMake(screenFrame.size.width/70,(screenFrame.size.height/31 + screenFrame.size.height/3)+screenFrame.size.height/30,screenFrame.size.width-screenFrame.size.width/70*2,screenFrame.size.height)]; 
textView2.text = abst; 
textView2.editable = NO; 
textView2.font = [UIFont systemFontOfSize:fontSize]; 
textView2.backgroundColor = [UIColor clearColor]; 
[completeView addSubview:textView2]; 

[overViewScroll addSubview:completeView]; 
[self.view addSubview:overViewScroll]; 

Essayez ceci cela va fonctionner. Une autre façon est uYse interface builder et sélectionnez scoll view et faites glisser et déposez d'autres vues d'étiquettes sur la vue déroulante.