gpt4 book ai didi

iOS:热点指示器抛出的 View 定位

转载 作者:可可西里 更新时间:2023-11-01 02:05:09 25 4
gpt4 key购买 nike

当我们遇到错误时,我们在表格 View 上显示一个带有标签的矩形:

enter image description here

使用这段代码:

    // Fix location of message bar even as user scrolls table - per http://stackoverflow.com/q/7537858/47281
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
let newY = self.tableView.contentOffset.y + self.navigationController!.navigationBar.frame.size.height + UIApplication.shared.statusBarFrame.height
// Show rectangle using 0 and newY ...

它运行良好,但在某些情况下不起作用,例如启用个人热点时。导航栏和状态矩形之间有一个空隙:

enter image description here

始终将某些内容置于导航栏下方的正确方法是什么?

在第一种情况下,状态栏高度为 20,但在第二种情况下为 40。在这两种情况下,导航栏和内容偏移量相同。即:

  • 案例 #1:偏移:-64.0,导航栏高度:44.0 状态栏高度:20.0
  • 案例 #2:偏移:-64.0,导航栏高度:44.0 状态栏高度:40.0

根据状态栏中高度的变化,偏移量似乎没有增加。

更新:查看(我的)接受的答案。我确信有更好的方法.. 如果您知道,请添加到线程中。

最佳答案

属性 view.frame 能够捕获这种变化。因此,对任何位置使用 view.frame.height 都可以防止重新定位。

它在有和没有热点栏的情况下找到合适的 View 高度的方式:

//with hotspot bar
print (view.frame.height) //540.0
//without hotspot bar
print (view.frame.height) //560.0

//setting a navigation bar at top using height of view frame
let navigationBar : UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width:view.frame.width, height: view.frame.height/10))
navigationBar.backgroundColor = .gray
navigationBar.setItems([UINavigationItem(title: "navigaion bar")], animated: true)

let statusbar = UITableView()
//placing the status bar below the navigation bar
statusbar.frame = CGRect(x: 0, y: navigationBar.frame.size.height, width:view.frame.width, height: view.frame.height/10) //any choice for height:
view.addSubview(statusbar)
view.addSubview(navigationBar)

关于iOS:热点指示器抛出的 View 定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43461803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com