ios - WKWebView 不会出现在自定义 UIView 中
问题描述
我有一个带有 xib 的自定义 UIView。除内容视图外,xib 为空。
在相应的类中我加载了 xib,然后我尝试像这样创建一个 WKWebView:
@IBOutlet var contentView: UIView!
...
Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: self.frame, configuration: webConfiguration)
webView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(webView)
webView.backgroundColor = UIColor.orange // Just to check visually
在我的 UIViewController 中:
let v = CustomView.init(frame: frame)
self.view.addSubview(v)
当我运行我的项目时,当视图控制器出现时,我可以看到带有橙色背景的 Web 视图,但它立即消失了,我的代码有什么问题?
解决方案
注意,webView.backgroundColor
没有按预期工作。尝试使用load
url 函数或调用loadHTMLString
来验证。
只是为了确保它不是布局问题,请使用“调试视图层次结构”(在调试运行应用程序时单击 Xcode 中的双矩形图标)来检查子视图的边界/框架。如果您在那里看到问题,那么您需要添加适当的布局约束。
如果是这样,您还可以对上述所有 addSubview 调用使用以下实用程序函数。它通过将子视图边缘拉伸到另一个视图中(全宽和高度)来在另一个视图内添加一个子视图。
public static func add(_ subView: UIView, in containerView: UIView) {
containerView.addSubview(subView)
subView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
subView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
subView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
subView.topAnchor.constraint(equalTo: containerView.topAnchor),
subView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
]
)
}
推荐阅读
- python - 按日期期间拆分数据框
- c++ - 分段故障链表归并排序
- html - 如何将图片移动到网页的右下角
- jquery - 使用 Javascript/Jquery (Tampermonkey) 单击 Angular JS 元素
- javascript - 使用for循环并获取:“无法读取未定义的属性'getAttribute''
- c# - GridView显示查询到的数据,但主键为null时不显示所有数据
- python - Python - 在 Mac 上使用 pypsrp 时协议 kerberos 不可用
- c - HAS_SUBNORM 为 0:FTZ(清零)应该在细度检测之前还是细度检测之后进行?
- angular - 角度ngrx效果
- crystal-reports - 在运行时将 Crystal Reports ParameterField 设置为 NULL