Ilk*_*aev 1 iphone uitableview uiview ios swift
While I try to convert coordinates of a subview in UITableViewCell inside UIWindow, it gives result without adding UINavigationBar's height, as if it is situated on top of the screen, but it is situated inside UINavigationController. Maybe I'm doing something wrong.
open var targetView: UIView? {
didSet {
if let tView = targetView {
targetFrame = self.convert(self.frame, to: tView)
}
}
}
Run Code Online (Sandbox Code Playgroud)
self is a subview inside UITableViewCell, targetView is UIApplication.shared.keyWindow
我创建了一个最简单的应用程序来进行测试,并且效果很好。您可能会丢失对的调用,superview尽管这似乎很奇怪,但导航栏的高度却完全不同。无论如何尝试:
targetFrame = self.superView!.convert(self.frame, to: tView) // TODO: remove the force-unwrap
Run Code Online (Sandbox Code Playgroud)
我使用的是带有委托方法的导航栏中的表格视图:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let view = tableView.cellForRow(at: indexPath)
// let view = tableView.cellForRow(at: indexPath)?.textLabel // Also works
let parent = UIApplication.shared.keyWindow
let converted = view?.superview?.convert(view!.frame, to: parent)
print("\(converted)")
}
Run Code Online (Sandbox Code Playgroud)
打印的值确实包含导航栏。
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |