1

嗨,我在特定位置有一个大图像和一个小图像......我将它们全部添加到 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;
}    
4

1 回答 1

0

您是否实施:

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

此外,您知道通过将 scrollView 的 contentSize 设置为您的 imageSize,它不会变得比这更大,对吧?它会放大,相应地裁剪外部像素。顺便说一句,如果这是您的计划,为什么不直接设置呢?

myScrollView.contentSize = imageView.frame.size;

=====进一步回答,回复其他来源

好吧,我注意到的主要事情是您需要在 viewForZoomingInScrollView 中返回 imageView ucdView,而不是 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 文件中)?

最后,你有滚动视图和健康的泄漏;添加[滚动视图发布];和 viewDidLoad 末尾的 [健康发布]

于 2011-06-29T19:20:57.693 回答