问题
我正在尝试将 xib 中的自定义 View 添加到 UIScrollView 中。
我将 UIScrollView 添加到 Storyboard中的空 ViewController 中。我还在 Safe Area 中添加了前导、尾随、顶部、底部 4 个约束,并将它们全部设置为 0。
现在在代码中我想将自定义 View “EquipmentInfoView”添加到现有的 UIScrollView
class EquipmentInfoVC: UIViewController {
@IBOutlet var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
equipmentInfoView = EquipmentInfoView.instantiate()
scrollView.addSubview(equipmentInfoView)
}
}
它不起作用,因为 ScrollView 不滚动。我该怎么做呢?
这是自定义 View “EquipmentInfoView”
class EquipmentInfoView: UIView {
@IBOutlet var nameTextView: UITextView!
@IBOutlet var descriptionTextView: UITextView!
@IBOutlet var equipmentImageView: UIImageView!
static func instantiate() -> EquipmentInfoView {
let view: EquipmentInfoView = initFromNib()
return view
}
}
附加说明
我知道这不是从 xib 创建自定义 View 的正常方法。但是,这样我就不必将文件的所有者设置为“EquipmentInfoView”,而是将 View 的自定义类设置为“EquipmentInfoView”。 (当我进行单元测试时,将文件的所有者设置为“EquipmentInfoView”会给我 EXC_BAD_ACCESS)
为了清楚起见,我将此 View 添加到普通(非滚动) View 中的方法如下:
equipmentInfoView = EquipmentInfoView.instantiate()
mainView.addSubview(equipmentInfoView)
equipmentInfoView.frame = mainView.bounds
equipmentInfoView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
最佳答案
您可能缺少 ScrollView 的 contentSize
class EquipmentInfoVC: UIViewController {
@IBOutlet var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
equipmentInfoView = EquipmentInfoView.instantiate()
scrollView.contentSize = equipmentInfoView.frame.size
scrollView.addSubview(equipmentInfoView)
}
}
关于swift - 如何将 xib 中的自定义 View 添加到 UIScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776280/