UIScrollView - 缩放问题(在任何缩放后切断UIScrollView内部的UIView底部)

时间:2011-11-20 21:55:12

标签: uiview uiscrollview uibutton zoom

因此,在问题出现之前我的视图有一些解释,页面加载了一组可点击进入contentView的按钮,这是我的scrollView的子视图。

我有一个UIViewController,里面我有我的 UIScrollView scrollView用于处理滚动和缩放 UIView contentView我将所有UIButtons添加到。

好吧,我会尝试只放置我认为可能需要更改的代码。

在viewDidLoad

scrollView.contentSize = CGSizeMake(320, (20+totalRows*OFFSET_Y) );
[scrollView setMaximumZoomScale:4];
[scrollView setMinimumZoomScale:1];
[scrollView setDelegate:self];

[contentView setFrame:CGRectMake(0, 0, 320, (20+totalRows*OFFSET_Y) )];

[self.scrollView addSubview:contentView];

进行一些计算以查看我需要多大的内容大小以适应所有按钮,然后我将contentView作为subView添加到我的scrollView。 然后我将所有UIButtons添加为我的contentView的子视图

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return [self contentView];
}

获得了用于缩放返回contentView的委托方法。

好吧所以一切都是可滚动的,可缩放的,就像它应该是......所有我的UIButtons仍然可以点击并按照应有的方式工作。

问题是我放大/缩小后,当我一直滚动到我的scrollView底部时,它被从底部切掉,所以最后一排按钮被切成两半。即使我以1:1的比例重新上场,它仍然会被切断。

我在应用程序中有一个44像素的NavigationController,不确定是否会以某种方式搞砸了。

我正在检查scrollView和contentView的contentSize,在完成任何缩放之前,我的scrollView的高度比contentView大44个像素,但在任何缩放后,比率为1:1,这似乎是问题。 我不是在代码中的任何地方改变大小。

任何帮助表示赞赏! 感谢


就像我之前想的那样,我添加了这段代码

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale (float)scale
{    
    self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, self.scrollView.contentSize.height + (44 * scale));
}

现在,Zooming没有削减任何东西,似乎工作正常。

我仍然不相信这是我应该做的,但我想它现在有效。

仍然希望有人有更好的答案!


在玩我的应用程序后,我意识到缩放从来都不是问题。实际问题出在我的UIView * contentView上。在更改了我的scrollView和我的contentView的背景颜色(改为2种非常不同的颜色)后,我注意到我的contentView不够长,无法覆盖所有按钮。

所以在第一次加载时,scrollView足够大,可以看到所有内容,但一旦你缩放,它就需要内容视图的大小,它没有被正确调整!

所有这一切,它最终应该如何应用!哈哈没有回复,但希望有人可能会觉得这很有用!最好的提示是改变背景颜色。

1 个答案:

答案 0 :(得分:0)

美好的一天, 我意识到游戏的时间已经很晚了,但是如果有其他人遇到这个问题,我想更新我发现的内容。

所有做的都是将UIImageView和UIScrollView设置为" Aspect Fit"这解决了我的问题。这可能是一个Xcode 7功能,但它可以工作。