Как я могу использовать UIScrollView для перекрывающихся изображений iphone - PullRequest
1 голос
/ 29 июня 2011

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

Вот мой код:

    myScrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
    myScrollView.maximumZoomScale = 3.0;
    myScrollView.minimumZoomScale = 1.0;
    myScrollView.clipsToBounds = YES;
    myScrollView.delegate = self;

    [myScrollView addSubview:imageView];

спасибо


Привет, Маккворт; Я сделал это, но если я не максимизировал изображение, я не могу никуда переместить представление прокрутки, но если я увеличил его, я смогу увидеть остальное. Работа. Можете ли вы взглянуть на следующий код?

- (void)viewDidLoad{
    [super viewDidLoad];
    UIImage *image = [UIImage imageNamed:@"ucd.png"];
    //creating a view for UCD image
    ucdView = [[UIImageView alloc] initWithImage:image];
    //setting the frame for the ucdView as the same size of ucd image
    [ucdView setFrame:CGRectMake(0, 0, image.size.width, image.size.height)];


    //for the red pin to display in specific loc
    UIImageView *Health = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"redPin.png"]];
    [Health setCenter:CGPointMake(310,135)];
    //adding helathView to ucdview
    [ucdView addSubview:Health];
    //everything for scroll view
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, ucdView.frame.size.width, ucdView.frame.size.height)];
    [scrollView setMinimumZoomScale:1.0];
    [scrollView setMaximumZoomScale:3.0];
    scrollView.clipsToBounds = YES;
    [scrollView setContentSize:CGSizeMake(image.size.width, image.size.height)];
    [scrollView setDelegate:self];
    [scrollView addSubview:ucdView];//adding ucd view to scroll view
    [self.view addSubview:scrollView]; // adding scrollview to self.view main view
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {//apply zooming for scrollview
    return scrollView;
}    

1 Ответ

0 голосов
/ 29 июня 2011

Реализовали ли вы:

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

Кроме того, вы знаете, что, установив scrollView contentSize в ваш imageSize, он не может расти больше, чем это, верно? Это увеличит масштаб, обрезая внешние пиксели соответственно. Кроме того, если это ваш план, почему бы просто не установить его напрямую?

myScrollView.contentSize = imageView.frame.size;

===== Дальнейший ответ, ответ на дополнительный источник

Ну, главное, что я заметил, это то, что вам нужно возвращать imageView ucdView в viewForZoomingInScrollView, а не scrollView. Похоже, вы уже создали ucdView как свойство (так что оно живет столько же, сколько ваш вид), но на всякий случай ...

1) В вашем .h файле:

UIImageView * ucdView;
@property (nonatomic, retain) UIImageView * ucdView;

2) В вашем .m файле;

@synthesize ucdView;

3) измените свою строку:

ucdView = [[UIImageView alloc] initWithImage:image];

до

 self.ucdView = [[UIImageView alloc] initWithImage:image];

4) изменить строку

 return scrollView

до:

 return self.ucdView;

5) Добавьте следующее к вашей процедуре dealloc:

self.ucdView = nil;

Кроме того, вы добавили протокол <UIScrollViewDelegate> в определение ViewController (в файле .h)?

Наконец, у вас есть утечка прокрутки и здоровья; добавить [релиз scrollView]; и [Health release] в конце viewDidLoad

...