在 UIScrollView 中未正确加载 XIB
Posted
技术标签:
【中文标题】在 UIScrollView 中未正确加载 XIB【英文标题】:XIB isn't loaded properly in UIScrollView 【发布时间】:2017-09-17 10:44:37 【问题描述】:我有一个带分页的滚动视图。在这个滚动视图中,我动态加载 xibs。但是xib的高度应该和滚动视图一样。我的问题是xib的高度没有正确加载:
如果我加载一个 xib 文件(几乎是全屏的,除了每个边框上的约束为 10)它没有正确加载,因为高度太大。
所以我必须对底部进行约束,使其适合我的滚动视图:
有人有解决办法吗?
【问题讨论】:
您使用的是哪个版本的 Xcode? Apple 在Xcode 9
中对自动布局进行了很多更改。如果您也可以用它来更新您的问题,可能会有所帮助。
尝试添加一个约束,将您的内容视图设置为与滚动视图相同的高度。
【参考方案1】:
尝试使用下面的代码。这种通用方法适用于我的项目。您的问题是高度属性的模糊定义。注意在你的 .xib 中找到不必要的约束。
@IBOutlet weak var yourCustomScrollView: UIScrollView!
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
// Firstly, define scrollview's position and size
yourCustomScrollView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
// Load .xib with custom class from main bundle.
guard let xib = Bundle.main.loadNibNamed("YourXibName", owner: self, options: nil)?.first as? YourCustomXibClass else
fatalError("YourXibName is not found. ??")
self.yourCustomScrollView.addSubView(xib)
// Define .xib's position and size
xib.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
yourCustomScrollView.contentSize = CGSize(width: self.view.frame.width, height: xib.frame.height)
【讨论】:
以上是关于在 UIScrollView 中未正确加载 XIB的主要内容,如果未能解决你的问题,请参考以下文章
将 XIB 的 UIScrollView 添加到视图时设置 contentSize
在 xib 中定义的 SubView 中定义的 TableView 中未调用 didSelectRowAtIndexPath
UIStackView:从xib加载视图和更新subView的高度约束没有反映任何变化?