Как реализовать Pinch в Pinch Out в uiimageview, который находится внутри uiscrollview в iphone? - PullRequest
1 голос
/ 03 мая 2011

Здравствуйте. Я реализовал фотослайд-шоу на примере прокрутки Apple. Ниже приведен код:

- (void)viewDidLoad {

    appDelegate=[(FoodAppDelegate *)[UIApplicationsharedApplication]delegate];
    kNumImages=[parray count];
    self.view.backgroundColor=[UIColor viewFlipsideBackgroundColor];
    [scrollView1 setBackgroundColor:[UIColor blackColor]];
    [scrollView1 setCanCancelContentTouches:NO];
    scrollView1.indicatorStyle=UIScrollViewIndicatorStyleWhite;
    scrollView1.clipsToBounds=YES;
    scrollView1.scrollEnabled=YES;   
        scrollView1.pagingEnabled=YES;
    scrollView1.minimumZoomScale=0.5;
    scrollView1.delegate=self;
    scrollView1.maximumZoomScale=6.0;
    scrollView1.bouncesZoom=YES;
    NSLog(@"view did load called");
    NSUInteger i;
    for(i=0;i<kNumImages;i++)
    {
        NSLog(@"for loop of view did load called");
        NSURL *url=[NSURL URLWithString:[parray objectAtIndex:i]];
        NSLog(@"url object at index %i is %@",i,url);
        UIImage *image=[UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
        imageView=[[UIImageView alloc] initWithImage:image];
        CGRect rect=imageView.frame;
        rect.size.height=kScrollObjHeight;
        rect.size.width=kScrollObjWidth;
        imageView.frame=rect;
        imageView.tag=i+1;
        [scrollView1 addSubview:imageView];

    }
    [scrollView1 setContentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)];
    [self layoutScrollImages];
    [super viewDidLoad];
}



-(void)layoutScrollImages
{
    int c=appDelegate.selectedphoto-1;
    kNumImages=[parray count];
    view=nil;
    NSArray *subviews=[scrollView1 subviews];
    CGFloat curXLoc=0;
    for(view in subviews)
    {
        if([view isKindOfClass:[UIImageView class]] && view.tag>0)
        {
            CGRect frame=view.frame;
            frame.origin=CGPointMake(curXLoc, 0);
            view.frame=frame;
            curXLoc+=(kScrollObjWidth);
        }}
    [scrollView1 setContentSize:CGSizeMake((kNumImages *kScrollObjWidth),200)];
    CGPoint lastFrame = CGPointMake(( c* kScrollObjWidth), 0.0f);
    [scrollView1 setContentOffset:lastFrame];
    scrollView1.showsHorizontalScrollIndicator=NO;
    scrollView1.showsVerticalScrollIndicator=NO;

}

Теперь я хочу реализовать уменьшение масштаба. Как я могу это сделать - любой пример кода или пример?

1 Ответ

0 голосов
/ 03 ноября 2011

создать представление uiscroll в просмотре uiscroll с представлением uiimage в этом.внешний вид uiscrollview прокручивается горизонтально, а внутренний настроен на масштабирование и масштабирование.IOS на самом деле достаточно умен, чтобы задействовать родительский uiscrollview, когда внутренний скроллер полностью уменьшен или находится на краю.

Существует множество примеров создания приложения uiscrollview для масштабирования и увеличения.

scrollView=[[UIScrollView alloc] initWithFrame:[BFCoords sharedBFCoords].APP_RECT];
scrollView.scrollEnabled=YES;
scrollView.maximumZoomScale=1;
scrollView.minimumZoomScale=.5;
scrollView.delegate=self;
scrollView.clipsToBounds=YES;



contentView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, [BFCoords sharedBFCoords].APP_WIDTH*2, [BFCoords sharedBFCoords].APP_HEIGHT*2)];
scrollView.contentSize=CGSizeMake([BFCoords sharedBFCoords].APP_WIDTH*2, [BFCoords sharedBFCoords].APP_HEIGHT*2);

[scrollView addSubview:contentView];

[self addSubview:scrollView];

scrollView.zoomScale=.5;
[scrollView setBackgroundColor:[UIColor blueColor]];
self.hidden=NO;
self.alpha=1;

[contentView release];
[scrollView release];

для масштабирования прокрутки, не забудьте реализовать UIScrollViewDelegate

и добавить:

-(UIView *) viewForZoomingInScrollView:(UIScrollView *)inScroll {
return contentView;}
...