2014-10-09 2 views
4

У меня есть uiscrollview, что я загружаю массив изображений, чтобы прокручивать изображения с эффектом, подобным эффекту фотографий в IOS. Я использую этот код:Включить масштабирование в uiscrollview с включенным пейджингом и прокруткой

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *path = [paths objectAtIndex:0]; 
    NSString *imageFilePath = [path stringByAppendingPathComponent:@"newPics"]; 
    fileExists = [[NSFileManager defaultManager] fileExistsAtPath:imageFilePath]; 
    if(fileExists){ 

     imgs=[[NSMutableArray alloc]init]; 


    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic1.png"]]]; 
    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic2.png"]]]; 
    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic3.png"]]]; 
    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic4.png"]]]; 


    CGSize imageSize; 
    imageSize.height = 648; 
    imageSize.width = 927; 
    self.scroll1.frame = CGRectMake(0,0,imageSize.width,imageSize.height); 

    self.scroll1.contentSize = CGSizeMake(imageSize.width * imgs.count, imageSize.height); 
    self.scroll1.minimumZoomScale=1.0; 
    self.scroll1.maximumZoomScale=3.0; 
    self.scroll1.pagingEnabled = YES; 


    self.scroll1.delegate=self; 

    CGFloat xPos = 0.0; 

    for (UIImage *image in imgs) { 
     imageView = [[UIImageView alloc] initWithImage:image]; 
     imageView.frame = CGRectMake(xPos, 0.0, imageSize.width, imageSize.height); 
     [self.scroll1 addSubview:imageView]; 
     xPos += imageSize.width; 

    } 


    } 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    int positionScrollPrim = scrollView.contentOffset.x; 

    int positionScroll = positionScrollPrim/927 ; 

    imageView = [[UIImageView alloc] initWithImage:[imgs objectAtIndex:positionScroll]]; 
    //UIImage *tmep = [imgs objectAtIndex:1]; 

    return imageView; 
} 

Я не могу добиться нужного результата, а я не получаю кучу странного поведения, такие как неправильное масштабирование и не более прокрутки, когда я стараюсь, чтобы увеличить. Я предполагаю, что моя проблема находится в разделе viewForZoomingInScrollView, поэтому я попытался ее решить, используя приведенный выше код. Но я просто не могу заставить его работать. Что мне не хватает?

+0

Вы не должны возвращать новый экземпляр в viewForZoomingInScrollView, вы должны вернуть существующий subview из своего scrollView – fnc12

ответ

5

Общий подход состоит в использовании двух видов прокрутки: внешний прокручивает изображения, и каждое изображение завернуто в другой вид прокрутки, который отвечает за масштабирование.

+0

, я попробую прямо сейчас поблагодарить вас за ур ответ –

+0

вы можете предоставить фрагмент кода, чтобы знать, как обращаться это? \ –

+0

Я попробовал, но это не сработало ... либо я потерялся, либо он не сработает, можете ли вы помочь? –

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