【问题标题】:Adjust UIScrollView's contentSize with an embedded UIView?使用嵌入式 UIView 调整 UIScrollView 的 contentSize?
【发布时间】: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 的底部。

标签: ios swift uiview uiscrollview


【解决方案1】:

你试过设置 UIScrollView 的var contentSize: CGSize 吗?文档说

讨论
大小单位是点。默认大小为 CGSizeZero。


如果您不知道内容视图的大小,那么我建议您设置

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleHeight);

scrollView.autoresizesSubviews = YES;

很好的衡量标准。

【讨论】:

  • 问题是我不知道内容的大小是由contentView里面的views决定的。
猜你喜欢
  • 2020-07-20
  • 2011-09-25
  • 2017-10-13
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多