问题
我正在尝试将xib中的自定义视图添加到UIScrollView中。
我将UIScrollView添加到了故事板上的空ViewController中。我还为安全区域添加了4个约束,分别用于前导,尾随,顶部,底部,并将它们全部设置为0。
现在在代码中,我想向现有的UIScrollView添加自定义视图“ EquipmentInfoView”
class EquipmentInfoVC: UIViewController {
@IBOutlet var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
equipmentInfoView = EquipmentInfoView.instantiate()
scrollView.addSubview(equipmentInfoView)
}
}
它不起作用,因为ScrollView不滚动。我应该怎么做呢?
这是自定义视图“ 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创建自定义视图的正常方法。但是,通过这种方式,我不必将文件的所有者设置为“ EquipmentInfoView”,而是将视图的自定义类设置为“ EquipmentInfoView”。 (在进行单元测试时,将文件的所有者设置为“ EquipmentInfoView”会给我EXC_BAD_ACCESS)
为清楚起见,这是将视图添加到普通(非滚动)视图的方法:
equipmentInfoView = EquipmentInfoView.instantiate()
mainView.addSubview(equipmentInfoView)
equipmentInfoView.frame = mainView.bounds
equipmentInfoView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
答案 0 :(得分:0)
您可能缺少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)
}
}