2013-03-20 98 views
0

它只是一个星期,这是进入ios偏移,并面临一些问题,我不能用gridview格式显示滚动视图中的图像...我不知道如何设置框架大小以适当的gridview格式显示图像..如何在ios中的uiscrollview中以gridview格式显示图像?

这里是我的代码

,在滚动视图

for(int i=1;i<6;i++) 
      { 
       UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(x+0, 0, 320, 460)]; 
       [image setImage:[UIImage imageNamed:[NSString stringWithFormat:@"e1%d.png",i]]]; 
       [scr addSubview:image]; 
       x+=320; 
       UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
       tapGesture.numberOfTapsRequired = 1; 
       tapGesture.delegate = self; 
       image.userInteractionEnabled = YES; 
       [image addGestureRecognizer:tapGesture]; 
      } 

      scr.pagingEnabled=YES; 
      scr.contentSize = CGSizeMake(320*5, 300); 
      [self.view addSubview:scr]; 

加5张图片,但所有5个图片显示在一个水平线上,但我想在每行2倍的图像显示。

+1

改为使用UICollectionView。 – DrummerB 2013-03-20 09:31:14

+0

实际上它只是一个星期我进入这个...所以如果你可以指导我与上述代码的一些变化,那么它将有所帮助.. – 2013-03-20 09:34:18

+0

我现在没有时间,现在,对不起,这就是为什么我没有发布完整的答案,也许别人可以。查看UICollectionView上的WWDC视频:https://developer.apple.com/videos/wwdc/2012/?id = 205 – DrummerB 2013-03-20 09:38:13

回答

1

这里是解决方案,我已经在我的应用程序中实现了它。这里是我的代码sv_port是我的scrollView。下载SDWebImageDownloader类文件并将其导入到您的项目中。在您的项目中添加 相关框架。像imageIO.framework,QuartzCore

如果你的图像没有从url中获取,那么你不需要使用asyncImage视图,所以不需要下载SDWebImageDownloader。现在

,在您的m添加

#import "UIImageView+WebCache.h" 
#import "SDImageCache.h" 
#import "SDWebImageCompat.h" 

//function for adding image in your scrollview 
-(void)populateImages 
{ 
    int x=6,y=6; 

    for(UIView * view in sv_port.subviews) 
    { 
     if([view isKindOfClass:[UIImageView class]]) 
     { 
      [view removeFromSuperview]; view = nil; 
     } 
     if([view isKindOfClass:[UIButton class]]) 
     { 
      [view removeFromSuperview]; view = nil; 
     } 
    } 

    for(int p=0;p<[Manufacturer count];p++) 
    { 
     UIButton *btnImageButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     btnImageButton.frame = CGRectMake(x,y,70,70); 
     [btnImageButton setTag:p]; 
     [btnImageButton addTarget:self action:@selector(nextview:) forControlEvents:UIControlEventTouchUpInside]; 

     UIActivityIndicatorView *spinny = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    spinny.frame=CGRectMake(btnImageButton.frame.origin.x+25,btnImageButton.frame.origin.y+25, 20, 20); 
     spinny.backgroundColor=[UIColor clearColor]; 
     [spinny startAnimating]; 

     [sv_port setScrollEnabled:YES]; 
     [sv_port addSubview:spinny]; 

     UIImageView *asyncImageView = [[[UIImageView alloc] initWithFrame:btnImageButton.frame] autorelease]; 
     asyncImageView.backgroundColor=[UIColor clearColor]; 
     CALayer *layer; 
     layer = asyncImageView.layer; 
     layer.borderWidth = 0.5; 
     layer.cornerRadius = 5; 
     layer.masksToBounds = YES; 


     [asyncImageView setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", yourUrl] ] placeholderImage:[UIImage imageNamed:nil] options:0 andResize:CGSizeMake(btnImageButton.frame.size.width,btnImageButton.frame.size.height) withContentMode:UIViewContentModeScaleAspectFit]; 
     asyncImageView.contentMode = UIViewContentModeScaleAspectFit; 

     [sv_port addSubview:btnImageButton]; 
     [sv_port addSubview:asyncImageView]; 
     int imgCntPort=0; 

     imgCntPort=(sv_port.frame.size.width/(asyncImageView.frame.size.width)); 

     //NSLog(@"imgport %d",imgCntPort); 
     if((p+1)%imgCntPort==0) 
     { 
     x=5; 
     y=y+80; 
     } 
     else 
     { 
     x=x+80; 
     } 
    } 
    sv_port.contentSize = CGSizeMake(0, y); 
    glob_x =0; glob_y =y; 
} 

通过这个代码,你会得到4张成一排,用X的变化共同Ordiante和y可以保持每行图像的数量显示。

希望这会有所帮助。谢谢

+0

thanx为您的帮助.. 。将执行它,让你知道 – 2013-03-20 09:49:07