<分区>
标签 ios objective-c
<分区>
在我的 UIViewController
的 viewDidLoad
中,我创建了:
一个 UIScrollView
,代码如下:
- (void)generateScrollView {
_scrollView = [[UIScrollView alloc] initWithFrame:_containerView.frame];
[_containerView addSubview:_scrollView];
[self generateContentView];
}
_containerView
是通过 Interface Builder 创建的 UIView
,具有以下约束:
然后我生成另一个 UIView
,我将它用作所有 UI 元素的容器:
- (void)generateContentView {
_contentView = [[UIView alloc] initWithFrame:_scrollView.frame];
[_scrollView addSubview:_contentView];
}
然后我生成了 N 个 UI 元素(UITextView
、UIImageView
ecc..),最后我重新计算了 contentView
和 scrollView
使用以下代码:
- (void)recalculateScrollViewHeight {
CGRect contentRect = CGRectZero;
for (UIView *view in _contentView.subviews) {
contentRect = CGRectUnion(contentRect, view.frame);
NSLog(@"ContentRect height: %f", contentRect.size.height);
}
_contentView.frame = CGRectMake(_contentView.frame.origin.x, _contentView.frame.origin.y, _contentView.frame.size.width, contentRect.size.height + [[UIApplication sharedApplication] statusBarFrame].size.height + self.navigationController.navigationBar.frame.size.height);
NSLog(@"_contentView height: %f", _contentView.frame.size.height);
_scrollView.contentSize = _contentView.frame.size;
}
问题是 _scrollView
剪切了一些内容,因为计算的高度似乎不正确。我正在为这个问题苦苦挣扎,但似乎找不到解决方案,有人知道为什么计算的高度不正确吗?我是否缺少 UIScrollView
或 UIView
的属性?
编辑:
这是 2 NSLog
的结果:
ContentRect height: 180.000000
ContentRect height: 360.000000
ContentRect height: 540.000000
_contentView height: 604.000000
我添加了 3 个高度为 180
的 UIImageView
所以结果是正确的,540 + 20(状态栏高度)+ 44(导航栏高度),但 scrollView
仍然从最后一张图像中剪切了一些像素。图片之间也没有额外的间距,它们是一张一张的
最佳答案
我见过 UIScrollView 会尝试通过偏移自身来提供帮助以合并导航栏的情况,即使它是隐藏的。您是否尝试过禁用此属性?
self.automaticallyAdjustsScrollViewInsets
我假设您已将 scrollEnabled 设置为 YES?这有点摸不着头脑,但我注意到其他人通过禁用和重新启用滚动来解决类似的问题:
Large Text Being Cut Off in UITextView That is Inside UIScrollView
关于ios - 无法从其 subview 中获取正确的 UIScrollView 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37164282/
相关文章:
ios - 在 iPad 上编辑时编辑表格 View 缺少背景颜色
objective-c - 具有 iPad 视网膜显示屏的模拟器
iphone - 如何检查 Facebook 帐户是否存在?
ios - 为不同的设备调整 UItableview 的大小
php - 如何使用 p8 授权 key 文件通过 PHP 连接到 apn
ios - 我们可以通过我的应用程序访问任何 iphone 应用程序中播放的任何声音并应用均衡器吗
ios - 更改 TableView 的设计 - Objective C