UIScrollView高度更改

时间:2010-07-21 21:43:37

标签: iphone uiscrollview uiimageview

我有一个包含地图列表的UITableView。选择项目后,会在主窗口中添加新的子视图,并显示地图。在我的地图视图控制器中,每次显示时都会调用以下方法:

- (void)showMap {
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:mapImage]];

float imageHeight = tempImageView.image.size.height;
float targetHeight = scrollView.frame.size.height - mapNavigationController.navigationBar.frame.size.height;

scrollView.contentSize = tempImageView.image.size;
scrollView.maximumZoomScale = 1.0;
scrollView.minimumZoomScale = targetHeight / imageHeight;
scrollView.clipsToBounds = YES;

self.imageView = tempImageView;
[tempImageView release];

[scrollView addSubview:imageView];
scrollView.zoomScale = scrollView.minimumZoomScale;}

每次向UIScrollView添加一个新的UIImageView,当视图消失时,UIImageView被删除。计算zoomScale,使图像根据宽高比进行拟合。

现在我的问题是第一次单击一个项目时一切正常,地图图像填充UIScrollView的整个高度,但下次单击一个项目时,UIScrollView的高度会更小。我还应该注意,主窗口包含一个标签栏。

现在问我的问题:

  • UIScrollView如何改变它的大小?
  • 还有其他动态方法来检索targetHeight吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。事实证明,问题是我为UIScrollView的主视图创建了UIViewController的子类,而UIViewController对滚动视图的正确大小有自己的想法。

我通过制作主视图子类UIView而不是UIScrollView来修复它,然后在视图中添加UIScrollView* content_view,并将我的子视图添加到content_view而不是self

不确定这是否对你有帮助,但是......

答案 1 :(得分:0)