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

//
//  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

最佳答案

我正在经历类似的事情;缩放后平移将停止工作。发现在委托(delegate)函数 '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 不可滚动的原因。

关于iphone - UIScrollView 缩放后无法平移,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3467812/

10-15 20:51