使用嵌入式 UIView 调整 UIScrollView 的 contentSize?
Posted
技术标签:
【中文标题】使用嵌入式 UIView 调整 UIScrollView 的 contentSize?【英文标题】:Adjust UIScrollView's contentSize with an embedded UIView? 【发布时间】:2015-05-31 15:42:54 【问题描述】:我有一个 UIScroll 视图,它只包含一个子视图。名为contentView
的子视图是一个UIView。这是我在viewDidLoad()
中所做的:
self.scrollView = UIScrollView()
self.view.addSubview(self.scrollView)
self.scrollView.backgroundColor = UIColor.yellowColor()
// pin all edges to the edges of the superview (self.view)
self.scrollView.snp_makeConstraints (make) -> Void in
make.edges.equalTo(self.view)
// create contentView
self.contentView = UIView()
self.contentView.backgroundColor = UIColor.redColor()
self.scrollView.addSubview(self.contentView)
// pin the edges of the contentView to the scrollView
self.contentView.snp_makeConstraints (make) -> Void in
make.edges.equalTo(self.scrollView)
let myView = UIView(frame: CGRectMake(100, 100, 20, 300))
myView.backgroundColor = UIColor.greenColor()
self.contentView.addSubview(myView)
结果是这样的:
如上一个屏幕截图所示,没有红色的 contentView。
接下来,我尝试调整viewDidLayoutSubviews()
中的contenView的大小:
let newSize: CGSize = self.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
println("newSize: \(newSize)")
结果是:
newSize: (0.0, 0.0)
如何设置正确的 contentView 大小或设置 UIScrollView 的 contentSize 的正确大小?
【问题讨论】:
你发现了吗?很想知道你做了什么... 您必须将绿色视图的底部边缘固定到 contentView 的底部。 【参考方案1】:你试过设置 UIScrollView 的var contentSize: CGSize
吗?文档说
讨论 大小单位是点。默认大小为 CGSizeZero。
如果您不知道内容视图的大小,那么我建议您设置
scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleHeight);
和
scrollView.autoresizesSubviews = YES;
很好的衡量标准。
【讨论】:
问题是我不知道内容的大小是由contentView里面的views决定的。以上是关于使用嵌入式 UIView 调整 UIScrollView 的 contentSize?的主要内容,如果未能解决你的问题,请参考以下文章
使用UIToolbar调整UIView的大小不会同时调整大小