UIScrollView + UIImageView увеличить / уменьшить - PullRequest
0 голосов
/ 26 июля 2011

У меня UIScrollView содержит 3 * UIImageView, каждый UIImageView имеет изображение.Код, который я использовал:

scrollView.delegate = self;

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

scrollView.maximumZoomScale = 4.0;
scrollView.minimumZoomScale = 0.75;

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

NSUInteger nimages = 0;
CGFloat cx = 0;
for (; ; nimages++) {
  NSString *imageName = [NSString stringWithFormat:@"%d.jpg", (nimages + 1)];

  UIImage *image = [UIImage imageNamed:imageName];

  if (image == nil) {
    break;
  }

  imageView = [[UIImageView alloc] initWithImage:image];        
  CGRect rect = imageView.frame;
  rect.size.height = image.size.height;
  rect.size.width = image.size.width;
  rect.origin.x = ((scrollView.frame.size.width - image.size.width) / 2) + cx;
  rect.origin.y = ((scrollView.frame.size.height - image.size.height) / 2);
  [imageView setFrame:CGRectMake(cx, 0, self.view.frame.size.width, self.view.frame.size.height)];

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

  cx += scrollView.frame.size.width;
}

[scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)];

Как настроить масштабирование ScrollView с помощью мультитач?Я использовал этот код:

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

Но он не работал правильно, изображения перекрывались, потому что ScrollView содержит несколько изображений.

Как это исправить?Спасибо

Ответы [ 3 ]

2 голосов
/ 25 августа 2011

Не добавляйте виды изображений непосредственно к просмотру прокрутки, вместо этого сделайте это следующим образом:

Создайте новый объект UIScrollView для каждого UIImageView отдельно и установите фрейм, совпадающий с видом изображения.Добавьте представление изображения в представление прокрутки в качестве подпредставления.Помните, что эти объекты вида прокрутки используются только для масштабирования изображений, поэтому установите zoomScale ,imumZoomScale и MaximumZoomScale, а также установите делегат прокрутки.В контроллере делегата:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return [scrollView.subViews objectAtIndex:0];
} 

Затем добавьте все объекты представления прокрутки в представление прокрутки, которое вы использовали в своем коде.Этот вид прокрутки используется только для прокрутки представленных выше прокруток.

Есть идея?

0 голосов
/ 10 ноября 2013

попробуйте это для ваших 3 изображений:

**.h Controller:**

@interface MyViewController : UIViewController{

IBOutlet UIScrollView *scrollView; 
UIImageView *imageView;

}

@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIImageView *imageView;

.m Контроллер:

@synthesize scrollView, imageView;


-(UIView *)viewForZoomingInScrollView:(UIScrollVi­ew *)scrollView{ 

return imageView;

}

- (void)viewDidLoad
{

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"YourImageName.png"]]; 
self.imageView = tempImageView; 
[tempImageView release]; 
scrollView.maximumZoomScale = 3.0; 
scrollView.minimumZoomScale = 0.6; 
scrollView.clipsToBounds = YES; 
scrollView.delegate = self; 
[scrollView addSubview:imageView];
}

Этот код работал для меня:)

0 голосов
/ 04 апреля 2012

Вы можете использовать PinchGesture для ваших изображений ... Нет необходимости использовать 3 прокрутки.

...