ios中图片的ScrollView [英] ScrollView of images in ios

查看:24
本文介绍了ios中图片的ScrollView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的要求是在 scrollview 中显示图像,同时它应该显示 nextprevious 按钮.用户也可以滚动图像使用按钮移动图像.

Hi my requirement is showing image in scrollview along with that it should display next and previous button.User can scroll the image as well as use buttons to move images.

我怀疑如何在用户滚动时获取 index/tag/imagename 或其他任何值按钮应该是更新了.

I have doubt about how to get the index/tag/imagename or anything else when user scroll based on that values buttons should be updated.

这是我的代码

[self arrayInitiaisation];  
scrollview.pagingEnabled = YES;
scrollview.alwaysBounceVertical = NO;
scrollview.alwaysBounceHorizontal = YES;
NSInteger numberOfViews = 4;

for (int i = 0; i < numberOfViews; i++) {

    CGFloat xOrigin = i*320;
    imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image%d",i+1]];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    [self.scrollview addSubview:imageView];
    imageView.tag = i;
    ...  

数组初始化方法

-(void) arrayInitialisation {

  count=0;
  [super viewDidLoad];
  images=[NSMutableArray arrayWithObjects : [UIImage imageNamed:@"image1.png"],
    [UIImage imageNamed :@"image2.png"],
    [UIImage imageNamed :@"image3.png"],
    [UIImage imageNamed :@"image4.png"],nil];
    [imageView setImage:[images objectAtIndex:0]];
    NSLog(@"Array Length :%d",images.count);
    [previous setEnabled:NO];
} 

动作方法

- (IBAction)nextButton:(id)sender {}
- (IBAction)prevButton:(id)sender {}

scroll 工作正常,但是当用户点击 prevnext 图像没有在imageview"上更新

scroll is working correctly but when user clicks on prev and next image is not updating on 'imageview'

这是我更新的代码

    int count=0;

    - (void)viewDidLoad
    {
    [super viewDidLoad];
    [self arrayInitialisation];
    [scrollview setScrollEnabled:YES];
    self.scrollview =[[UIScrollView alloc] initWithFrame:CGRectMake(30 , 30, 320, 412)];
    self.scrollview.delegate=self;
    scrollview.pagingEnabled = YES;
    scrollview.alwaysBounceVertical=NO;
    scrollview.alwaysBounceHorizontal=YES;
    scrollview.showsHorizontalScrollIndicator=NO;
    NSInteger numberOfViews = 4;
    for (int i = 0; i < numberOfViews; i++) {
    CGFloat xOrigin = i*320;
    imageView = [[UIImageView alloc]initWithFrame:CGRectMake(xOrigin, 0, 320, 412)];
    imageView.image = [images objectAtIndex:i];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    [self.scrollview addSubview:imageView];
    imageView.tag=i;


}

scrollview.contentSize = CGSizeMake(320*numberOfViews, 412);
scrollview.contentOffset = CGPointMake(0,0);
[self.view addSubview:self.scrollview];
}

    - (void)didReceiveMemoryWarning
      {
         [super didReceiveMemoryWarning];
         }
      -(void) arrayInitialisation{
       count=0;
        [super viewDidLoad];
       images=[NSArray arrayWithObjects :  [UIImage imageNamed:@"image1.png"],
        [UIImage imageNamed :@"image2.png"],
        [UIImage imageNamed :@"image3.png"],
        [UIImage imageNamed :@"image4.png"],nil];
     [imageView setImage:[images objectAtIndex:0]];
     NSLog(@"Array Length :%d",images.count);
    [previous setEnabled:NO];
    }


   - (IBAction)nextButton:(id)sender {
    if(count==0){
    count++;
    NSLog(@"Next Button : if Loop %d",count);
    [imageView setImage:[images objectAtIndex:count]];
    [previous setEnabled:YES];

      }
       else{

    [previous setEnabled:YES];
    count++;
     NSLog(@"Next Button : else Loop %d",count);
    if(count <images.count){
        [imageView setImage:[images objectAtIndex:count]];
    }
    else{
        [next setEnabled:NO];

    }
    }

     }

      - (IBAction)prevButton:(id)sender {
       if(count==0){
      //count--;
       NSLog(@"prev Button : if Loop %d",count);
     [imageView setImage:[images objectAtIndex:count]];
     [previous setEnabled:NO];
    [next setEnabled:YES];
    }
    else{
    count--;
     NSLog(@"prev Button : else Loop %d",count);
    [imageView setImage:[images objectAtIndex:count]];
    [previous setEnabled:YES];
    //[next setEnabled:YES];
   }
  }
    #pragma mark - ScrollView Delegate

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:    (BOOL)decelerate{
    //NSLog(@"scrollViewDidEndDragging");
    /* count=count+1;
    NSLog(@"scrollViewDidEndDragging : %d",count);*/
   }
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    //NSLog(@"scrollViewDidScroll");

    }
     - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0){
    //NSLog(@"scrollViewWillEndDragging");
    count=count+1;
    NSLog(@"scrollViewWillEndDragging : %d",count);

       }  

推荐答案

我有左右键滚动图片,imageview 宽度一样.

I have left and right button for scroll images, and imageview width is same.

我正在编写按按钮滚动图像的代码.

I am writing code for scroll image at pressing button.

int pos=0;//ViewDiaLoad

int pos=0;// ViewDiaLoad

- (IBAction)OnClickLeftButton:(UIButton*)sender
{
    if(pos>0)
    {
        pos -=1;
        [scrlDemandMenu scrollRectToVisible:CGRectMake(pos*scrlDemandMenu.frame.size.width, 0, scrlDemandMenu.frame.size.width, scrlDemandMenu.frame.size.height) animated:YES];

    }
}

- (IBAction)OnClickRightButton:(UIButton*)sender
{
    if(pos<numberOfImages)
    {
        pos +=1;
        [scrlDemandMenu scrollRectToVisible:CGRectMake(pos*scrlDemandMenu.frame.size.width, 0, scrlDemandMenu.frame.size.width, scrlDemandMenu.frame.size.height) animated:YES];
    }
} 

设置滚动视图委托

滚动视图委托方法

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
   pos=scrollView.contentOffset.x/scrollView.frame.size.width;
}

这篇关于ios中图片的ScrollView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆