缩放后UIScrollView无法平移

时间:2010-08-12 12:52:23

标签: iphone uiscrollview

我似乎在这里实现了所有正确的代码。我的代码中是否缺少某些内容?

//
//  ScrollyiPadViewController.m
//  ScrollyiPad
//
//  Created by Sidwyn Koh on 5/19/10.
//  Copyright __MyCompanyName__ 2010. All rights reserved.
//

#import "ScrollyiPadViewController.h"

@implementation ScrollyiPadViewController

-(void)viewDidLoad{
    [self.view addSubview:scrollView];
    [scrollView addSubview:imageView];

    UIImage *image = [UIImage imageNamed:@"hardware-01-20100127.jpg"];
    scrollView.contentSize = [image size];
    scrollView.maximumZoomScale = 2.0;
//  scrollView.delegate = self;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
}

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



/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/


/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}
*/


/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end

4 个答案:

答案 0 :(得分:12)

我正在经历类似的事情;放大后,平移将停止工作。想一想在委托函数'scrollViewDidEndZooming:withView:atScale:'我需要根据传递的'atScale'来更新ScrollView的contentsize属性。

像: self.scrollView.contentSize = CGSizeMake(self.imageView.image.size.width * scale,self.imageView.image.size.height * scale);

self.imageView.frame自动相对于缩放比例进行更新;所以你不需要根据比例调整框架。

如果没有显式设置scrollView的contentsize;然后它只是被赋予imageView框架大小...这使得imageView不可滚动。

答案 1 :(得分:1)

也许你必须在UIScrollView中设置ImageView的框架;

imageView.frame = CGRectMake(0, 0, imageViewer.image.size.width, imageViewer.image.size.height);

答案 2 :(得分:0)

我会

scrollView.contentSize = imageView.frame.size;

而不是

scrollView.contentSize = [image size];

答案 3 :(得分:-1)

找到它,我忘了设置clipstoBounds = YES