开发者

apply zoom event with array of images of image view in UIScrllView

开发者 https://www.devze.com 2023-03-18 11:59 出处:网络
- (void)viewDidLoad { UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
- (void)viewDidLoad 
{

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
tapGesture.numberOfTapsRequired = 1;
tapGesture.numberOfTouchesRequired = 1;


scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];

int numberOfImages = 32;
CGFloat currentX = 0.0f;

for (int i=1; i <= numberOfImages; i++) {

    // create image
    NSString *imageName = [NSString stringWithFormat:@"page-%d.jpg", i];
    UIImage *image = [UIImage imageNamed:imageName];
    imageView = [[UIImageView alloc] initWithImage:image];

    // put image on correct position
    CGRect rect = imageView.frame;
    rect.origin.x = currentX;
    imageView.frame = rect;

    // update currentX
    currentX +=454; //mageView.frame.size.width;

    [scrollView addSubview:imageView];
    [imageView release];
}
[scrollView addGestureRecognizer:tapGesture];

scrollView.contentSize = CGSizeMake(currentX, 800);
scrollView.pagingEnabled=YES;
scrollView.userInteractionEnabled = YES;
scrollVie开发者_StackOverflow社区w.maximumZoomScale = 15;
scrollView.minimumZoomScale = 0.5;
scrollView.bounces = NO;
scrollView.bouncesZoom = NO;
scrollView.delegate = self;

scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[self.view addSubview:scrollView];
[scrollView release];
[super viewDidLoad];

}
}

in above code when i apply zoom or tap event with a single image then it work for that. But when same event apply for array of image then not working. why is it happened?


Its quiet complex to implement zoom in this kind of image flow. Anyway i wil suggest you one idea,

Add the gesture to each imageView. In the method, add a new scrollview, with the respective imageView.. then implement zoom.

EDIT:

In the tapgesture method,

1.Find out the which imageView is visible at that time.

2.Then create a new scrollview,with that single imageview.

3.Implement zoom functionality in that new scrollview.

4.During zoom out,If the new scrollview size is equal to the actual value,remove the new scrollview fro the super view so that the array of images is visible.


Simplest way is create a big wrapper view first, and insert it into ScrollView.
And then add all your imageViews to the wrapper view.

0

精彩评论

暂无评论...
验证码 换一张
取 消