2013-09-13 2 views
0

Привет всем, мне нужно добавить увеличение в uiscrollview, содержащее несколько изображений uiimageviews. Вот мой код, как я делаю это, но он не работает должным образомUIscrollview, если изображения видят, как добавить увеличение?

- (void)setupPage 
{ 
    scrollView.delegate = self; 

    [self.scrollView setBackgroundColor:[UIColor blackColor]]; 
    [scrollView setCanCancelContentTouches:NO]; 

    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
    scrollView.clipsToBounds = YES; 
    scrollView.scrollEnabled = YES; 
    scrollView.pagingEnabled = YES; 

    NSUInteger nimages = 0; 
    CGFloat cx = 0; 
    for (; ; nimages++) { 
     //Maquette final_Print 2.png 
     NSString *imageName = [NSString stringWithFormat:@"rint %d.png", (nimages + 1)]; 
     UIImage *image = [UIImage imageNamed:imageName]; 
     if (image == nil) { 
      break; 
     } 
     imageView = [[UIImageView alloc] initWithImage:image]; 
     [imageView setContentMode:UIViewContentModeScaleToFill]; 
     CGRect rect = imageView.frame; 
     rect.size.height = 1004; 
     rect.size.width = 768; 
     rect.origin.x = ((scrollView.frame.size.width - 768)/2) + cx; 
     rect.origin.y = ((scrollView.frame.size.height - 1004)/2); 

     imageView.frame = rect; 

     [scrollView addSubview:imageView]; 
     [imageView release]; 

     cx += scrollView.frame.size.width; 

    } 


    [scrollView setContentSize:CGSizeMake(cx, 1004)]; 

    scrollView.minimumZoomScale = scrollView.frame.size.width/768; 
    scrollView.maximumZoomScale = 2.0; 
    [scrollView setZoomScale:scrollView.minimumZoomScale]; 
} 

// Код для обработки масштабированием:

#pragma mark - 
#pragma mark UIScrollView ZOOM 

//- (void)scrollViewDidZoom:(UIScrollView *)scrollView { 
// imageView.frame = [self centeredFrameForScrollView:scrollView andUIView:imageView];; 
//} 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return imageView; 
} 

- (CGRect)centeredFrameForScrollView:(UIScrollView *)scroll andUIView:(UIView *)rView { 
    CGSize boundsSize = scroll.bounds.size; 
    CGRect frameToCenter = rView.frame; 

    // center horizontally 
    if (frameToCenter.size.width < boundsSize.width) { 
     frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width)/2; 
    } 
    else { 
     frameToCenter.origin.x = 0; 
    } 

    // center vertically 
    if (frameToCenter.size.height < boundsSize.height) { 
     frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height)/2; 
    } 
    else { 
     frameToCenter.origin.y = 0; 
    } 

    return frameToCenter; 
} 

Когда я пытаюсь увеличить ее не работает, как ожидалось. А также я не могу проведите пальцем влево или вправо ...

ответ

0

.m File

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return self.theImageView; 
} 

- (CGRect)centeredFrameForScrollView:(UIScrollView *)scroll andUIView:(UIView *)rView { 
    CGSize boundsSize = scroll.bounds.size; 
    CGRect frameToCenter = rView.frame; 
    // center horizontally 
    if (frameToCenter.size.width < boundsSize.width) { 
    frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width)/2; 
    } 
    else { 
    frameToCenter.origin.x = 0; 
    } 
    // center vertically 
    if (frameToCenter.size.height < boundsSize.height) { 
    frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height)/2; 
    } 
    else { 
    frameToCenter.origin.y = 0; 
    } 
    return frameToCenter; 
} 

-(void)scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    self.theImageView.frame = [self centeredFrameForScrollView:self.theScrollView andUIView:self.theImageView];        
} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    [self.resourceData setLength:0]; 
    self.filesize = [NSNumber numberWithLongLong:[response expectedContentLength]]; 
} 

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [self.resourceData appendData:data]; 
    NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[self.resourceData length]]; 
    self.progressBar.progress = [resourceLength floatValue]/[self.filesize floatValue]; 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    self.theImage = [[UIImage alloc]initWithData:resourceData]; 
    self.theImageView.frame = CGRectMake(0, 0, self.theImage.size.width, self.theImage.size.height); 
    self.theImageView.image = self.theImage; 
    self.theScrollView.minimumZoomScale = self.theScrollView.frame.size.width/self.theImageView.frame.size.width; 
    self.theScrollView.maximumZoomScale = 2.0; 
    [self.theScrollView setZoomScale:self.theScrollView.minimumZoomScale]; 
    self.theScrollView.contentSize = self.theImageView.frame.size; 
    self.theLabel.hidden = YES; 
    self.progressBar.hidden = YES; 
} 

-(void)setImageInImageView 
{ 
    NSURLRequest *req = [[NSURLRequest alloc]initWithURL:[NSURL URLWithString:self.imageLink]]; 
    NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:req delegate:self]; 
    if (conn) 
    { 
    self.resourceData = [NSMutableData data]; 
    } 
    else 
    { 
    NSLog(@"Connection failed: IMageViewerViewController"); 
    } 
} 

-(void)loadView 
{ 
    self.filesize = [[NSNumber alloc]init]; 
    self.progressBar = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar]; 
    self.progressBar.frame = CGRectMake(20, 240, 280, 40); 
    [self.progressBar setProgress:0.0]; 
    self.theImageView = [[[UIImageView alloc]initWithFrame:[[UIScreen mainScreen]applicationFrame]]autorelease]; 
    self.theScrollView = [[[UIScrollView alloc]initWithFrame:[[UIScreen mainScreen]applicationFrame]]autorelease]; 
    self.theScrollView.delegate = self; 
    [self.theScrollView addSubview:self.theImageView]; 
    self.view = self.theScrollView; 
    self.theLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 200, 320, 40)]; 
    self.theLabel.font = [UIFont boldSystemFontOfSize:15.0f]; 
    self.theLabel.text = @"Please wait, file is being downloaded"; 
    self.theLabel.textAlignment = UITextAlignmentCenter; 
    self.theLabel.hidden = NO; 
    [self.view addSubview:self.progressBar]; 
    [self.view bringSubviewToFront:self.progressBar]; 
    [self.view addSubview:self.theLabel]; 
    [self.view bringSubviewToFront:self. theLabel]; 
    [self performSelectorOnMainThread:@selector(setImageInImageView) withObject:nil waitUntilDone:NO]; 
} 

.h файла

@interface ImageViewerViewController : UIViewController<UIScrollViewDelegate, NSURLConnectionDelegate, NSURLConnectionDataDelegate> 

@property (nonatomic, retain) IBOutlet UIImageView *theImageView; 
@property (nonatomic, retain) IBOutlet UIScrollView *theScrollView; 
@property (nonatomic, retain) NSString *imageLink; 
@property (nonatomic, retain) UIImage *theImage; 
@property (nonatomic, retain) UILabel *theLabel; 
@property (nonatomic, retain) UIProgressView *progressBar; 
@property (nonatomic, retain) NSMutableData *resourceData; 
@property (nonatomic, retain) NSNumber *filesize; 
@end 
0

Все, что вам нужно сделать, это добавить UIImageView (или любой вид вы хотите для увеличения) внутри вашего UIScrollView.

Установите maxZoomScale на свой UIScrollView на любое значение выше 1.0f.

Назначьте себя как делегат вашего UIScrollView и верните UIImageView в методе делегата viewForZooming.

Все. Никаких жестких усилий не требовалось, ничего. UIScrollView Ручки масштабирования масштабирования для вас.

+0

1. Я добавляю его здесь \t \t imageView = [[UIImageView alloc] initWithImage: image]; \t \t [imageView setContentMode: UIViewContentModeScaleToFill]; \t \t CGRect rect = imageView.frame; \t \t rect.size.height = 1004; \t \t rect.size.width = 768; \t \t rect.origin.x = ((scrollView.frame.size.width - 768)/2) + cx; \t \t rect.origin.y = ((scrollView.frame.size.height - 1004)/2); \t \t imageView.frame = rect; \t \t [scrollView addSubview: imageView]; – veereev

+0

2. scrollView.minimumZoomScale = scrollView.frame.size.width/imageView.frame.size.width; scrollView.maximumZoomScale = 2.0; [scrollView setZoomScale: scrollView.minimumZoomScale]; – veereev

+0

3. Делегат: UIViewController veereev

Смежные вопросы