UIScrollView高度变化
问题描述:
我有一个包含地图列表的UITableView。选择某个项目时,将在主窗口中添加一个新的子视图,并显示该地图。在我的地图视图控制器查看下面的方法获取每个显示时称为:每次UIScrollView高度变化
- (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;}
一个新的UIImageView添加到的UIScrollView并在视图中消失了的UIImageView被删除。计算zoomScale以便根据纵横比来匹配图像。
现在,我第一次点击一个项目时,一切正常,地图图像填充UIScrollView的全部高度,但下次单击某个项目时,UIScrollView的高度会更小。我还应该注意到,主窗口包含一个标签栏。
所以现在我的问题:
- 的UIScrollView中如何可以改变它的大小呢?
- 是否有任何其他动态的方式来检索targetHeight?
在此先感谢!
答
好吧,我设法找到了一个解决方案我的自我,也许不是最好的,但它是动态的,它的工作原理。
但我仍然不明白为什么UIScrollView的高度会改变。如果有人知道为什么请评论。
NSInteger scrollViewHeight = 0;
- (void)showMap {
if (scrollViewHeight == 0) {
scrollViewHeight = scrollView.frame.size.height;
} else {
scrollView.frame.size.height = scrollViewHeight;
}
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:mapImage]];
float imageWidth = tempImageView.image.size.width;
float imageHeight = tempImageView.image.size.height;
float targetWidth = scrollView.frame.size.width;
float targetHeight = scrollViewHeight - mapNavigationController.navigationBar.frame.size.height;
float scale = targetHeight/imageHeight;
if (scale * imageWidth < targetWidth) {
scale = targetWidth/imageWidth;
}
scrollView.contentSize = tempImageView.image.size;
scrollView.maximumZoomScale = 1.0;
scrollView.minimumZoomScale = scale;
scrollView.clipsToBounds = YES;
self.imageView = tempImageView;
[tempImageView release];
[scrollView addSubview:imageView];
scrollView.zoomScale = scale;}
}
答
我有类似的问题。事实证明,问题在于我为UIViewController
的主视图划分UIScrollView
,并且UIViewController
对滚动视图的正确大小有自己的想法。
我通过使主视图子类UIView
,而不是UIScrollView
,再加入UIScrollView* content_view
到视图,并加入我的子视图content_view
而不是self
固定它。
不知道这是否对你有帮助,但是...
你可能已经想通了,我只是把我的想法放在这里。正如我想可能是因为你改变scrollView的zoomScale的高度得到改变,并在所有情况下,它变得越来越小:) – 2012-11-01 07:13:02