0

我有一个带有图像作为子视图的滚动视图。我想将滚动视图的边界设置为图像视图的大小,这样您就看不到任何背景。

在此处输入图像描述

我不想再发生这种事了。

奇怪的是,在您放大或缩小图像后,边界似乎会自行固定,您无法再将图像移开并看到背景。

这就是我想要的代码:

-(UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    // return which subview we want to zoom
    return self.imageView;
}


-(void)viewDidLoad{

    [super viewDidLoad];

    [self sendLogMessage:@"Second View Controller Loaded"];

    //sets the initial view to scale to fit the screen
    self.imageView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds));

    //sets the content size to be the size our our whole frame
    self.scrollView.contentSize = self.imageView.image.size;

    //setes the scrollview's delegate to itself
    self.scrollView.delegate = self;

    //sets the maximum zoom to 2.0, meaning that the picture can only become a maximum of twice as big
    [self.scrollView setMaximumZoomScale : 2.5];

    //sets the minimum zoom to 1.0 so that the scrollview can never be smaller than the image (no matter how far in/out we're zoomed)
    [self.scrollView setMinimumZoomScale : 1.0];

    [imageView addSubview:button];

}

我以为这条线会解决我的问题

//sets the content size to be the size our our whole frame
self.scrollView.contentSize = self.imageView.image.size;

但就像我说的,它只有在我放大或缩小后才有效。


编辑:当我切换

self.scrollView.contentSize = self.imageView.image.size;

self.scrollView.frame = self.imageView.frame;

它就像我想要的那样工作(你看不到背景),除了顶部的工具栏被图像覆盖。

4

2 回答 2

1

imageView.image.size 不一定是 imageView 本身的框架,尝试设置 scrollview.frame = imageView.frame

进而

scrollView.contentSize = imageView.image.size

然后你将看不到任何边框。如果您希望图像是开始时的最大尺寸,请执行

imageView.frame = image.size;

[imageView setImage:image];

scrollView.frame = self.view.frame; //or desired size

[scrollView addSubView:imageView];

[scrollView setContentSize:image.size]; //or imageView.frame.size

于 2012-07-12T18:25:27.450 回答
0

为了解决这个问题,我最终声明了一个新的CGRect,将其原点设置为我的滚动视图的原点,将其大小设置为我的视图边界,然后将此 CGRect 分配回我的滚动视图框架

CGRect scrollFrame;
scrollFrame.origin = self.scrollView.frame.origin;
scrollFrame.size = CGSizeMake(CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds));
self.scrollView.frame = scrollFrame; 
于 2012-07-13T14:57:14.380 回答