как динамически изменить размер UIScrollview - PullRequest
2 голосов
/ 14 мая 2011

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

1 Ответ

3 голосов
/ 14 мая 2011

Это должно работать: -)

  1. Создать UIImage
  2. Сделать UIImageView, содержащий изображение
  3. Поместить UIImageView в UIScrollView
  4. Установите для contentSize UIScrollView размер UIImage
  5. Не забудьте вернуть UIimageView в viewForZoomingInScrollView

Вставьте это в свой файл .h:

UIImageView *imageView;

@property (nonatomic, retain) UIImageView *imageView;

И не забудьте синтезировать и выпустить imageView

Поместите это туда, где вы хотите сделать представление прокрутки:

UIImage *image = [UIImage imageNamed:@"myImage.jpg"];
imageView = [[UIImageView alloc] initWithImage:image];
[imageView setFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[scrollView setMinimumZoomScale:0.5];
[scrollView setMaximumZoomScale:3.0];
[scrollView setContentSize:CGSizeMake(image.size.width, image.size.height)];
[scrollView setDelegate:self];
[scrollView addSubview:imageView];
[[self view] addSubview:scrollView];
[scrollView release];

Добавьте метод делегата UIScrollView

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

ОБНОВЛЕНИЕ:

Я неправильно понял вопрос при добавлении вышеуказанного решения.Это должно сделать это: -)

kScrollViewAddSize - это константа, которая определяет сумму, добавляемую к размеру UIScrollView.

В вашем .h файле вы должны добавить следующее:

UIImageView *imageView;
UIScrollView *scrollView;

Не забудьте синтезировать и выпустить их.

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImage *image = [UIImage imageNamed:@"apple.jpg"];
    imageView = [[UIImageView alloc] initWithImage:image];
    [imageView setFrame:CGRectMake(kScrollViewAddSize / 2, kScrollViewAddSize / 2, image.size.width, image.size.height)];
    int width = imageView.frame.size.width + kScrollViewAddSize;
    int height = imageView.frame.size.height + kScrollViewAddSize;
    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake((self.view.frame.size.width - width) / 2, (self.view.frame.size.height - height) / 2, width, height)];
    [scrollView setMinimumZoomScale:0.5];
    [scrollView setMaximumZoomScale:3.0];
    [scrollView setBackgroundColor:[UIColor redColor]];
    [scrollView setContentSize:CGSizeMake(image.size.width, image.size.height)];
    [scrollView setDelegate:self];
    [scrollView addSubview:imageView];
    [[self view] addSubview:scrollView];
}

- (void)scrollViewDidZoom:(UIScrollView *)_scrollView {
    int width = imageView.frame.size.width + kScrollViewAddSize;
    int height = imageView.frame.size.height + kScrollViewAddSize;
    [scrollView setFrame:CGRectMake((self.view.frame.size.width - width) / 2, (self.view.frame.size.height - height) / 2, imageView.frame.size.width + kScrollViewAddSize, imageView.frame.size.height + kScrollViewAddSize)];
}

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

Добавьте часть в viewDidLoad, где вы хотите создать свой UIScrollView, и добавьте два метода делегата.

...