我正在提出这样一个人物:
let popoverContent = (self.storyboard?.instantiateViewController(withIdentifier: segueIdentifiers.informationPopover))! as UIViewController
let nav = UINavigationController(rootViewController: popoverContent)
nav.modalPresentationStyle = UIModalPresentationStyle.popover
let popover = nav.popoverPresentationController
popoverContent.preferredContentSize = CGSize(width: 500,height: 600)
popover?.delegate = self
popover?.sourceView = self.view
popover?.sourceRect = CGRect(x: 0, y: 0, width: 100, height: 100)
self.present(nav, animated: true, completion: nil)
和
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
正在创建的popover来自viewController
中创建的storyboard
。
创建viewController
的{{1}}具有以下布局。
popover
我最初遇到的问题是容器顶部和--View
---Scroll View
----View
-----Text View
之间存在大量空间。使用this link我看到我可以移除Text View
。这修复了顶部问题的尴尬间距,但是当Adjusts Scroll View Insets
出现时,它仍然向下滚动了三分之一,并且隐藏了顶部的一些文本。
问题:
scrollView
是呈现时向下滚动的三分之一。
问题:
有没有办法初始化scrollView
使用scrollView
在顶部自动滚动,即运行时属性?如果没有,我怎么能以编程方式执行此操作,因为我通过故事板ID以编程方式创建storyboard
?
更新1
我尝试了对popover
进行子类化并为viewController
创建了一个出口。在我的scrollView
,viewDidLoad
,viewWillAppear
,viewDidLayoutSubviews
和viewDidAppear
中,我尝试了以下代码。这并没有解决我的问题。
viewWillLayoutSubviews
答案 0 :(得分:0)
解决方案:textView
需要在viewDidLoad
中关闭其滚动功能,然后在viewDidAppear
class AboutUsViewController: UIViewController {
@IBOutlet weak var aboutUsTextView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
aboutUsTextView.isScrollEnabled = false
}
override func viewDidAppear(_ animated: Bool) {
aboutUsTextView.isScrollEnabled = true
}
}
将问题保持开放 - 想知道是否有更好的方法来做到这一点。