我的UI结构如下:
- View
- Scroll View
- Container View
- Dynamically added UI element
- Dynamically added UI element
- Dynamically added UI element
- ....
- UIButton
添加所有UI元素(包括带有UITapGestureRecognizer的UIButton)并使用以下方法更新UIScrollView大小...
func updateScrollViewSize() {
var contentRect = CGRect.zero
for view in containerView.subviews {
contentRect = contentRect.union(view.frame)
}
contentRect.size = CGSize(width: scrollView.contentSize.width, height: contentRect.height + TRAILING_SCROLLVIEW_SPACE)
scrollView.contentSize = contentRect.size
}
...我注意到只有在视图顶部添加UIButton才能使用 - 我只能通过滚动来触及(例如底部的那个)。
嗯,我想,所以按钮会在容器视图之外创建'框架,因此我将以下行添加到我的updateScrollViewSize
方法。
containerView.frame.size = contentRect.size
可悲的是,这并没有解决我的问题。
我试过很长一段时间才找到解决方案,但没有人可以帮助我。我仍然99%确定它与我的Container Views'有关。框架,但我根本无法弄清楚如何解决这个问题。任何帮助将不胜感激!
答案 0 :(得分:1)
layoutIfNeeded()
。
确保scrollView的contentSize
与containerView.frame
(不是.bounds
匹配,因为这不会告诉您例如您的帧y位置是否低于零。