gpt4 book ai didi

iOS Swift float 操作按钮在更改屏幕时移动

转载 作者:行者123 更新时间:2023-11-30 10:55:58 26 4
gpt4 key购买 nike

我在 Swift 中使用 float 操作按钮时遇到一些问题。我正在使用在这里找到的 Floaty:https://github.com/kciter/Floaty 。因此,当我第一次单击“通话”屏幕时,它运行良好,但是当我切换到另一个选项卡时,它会位于选项卡栏后面。我用来设置 FAB 的代码可以在下面找到。

我认为发生的情况是,每当切换选项卡时, View 都会在识别 tabBar 和安全插入区域之间交替,但有时不会,并且仅支持我在开始时提供的 paddingX 和 paddingY 值。

我尝试在 TableViewController 和带有 tableView 的 ViewController 之间切换,但这似乎并不是真正的问题。我还尝试重置每个 viewWillAppear() 上的填充,以确保它处于正确的高度,但这也不起作用。最后,我尝试给 FAB 添加约束。这是一个复杂的过程,我认为我做得不对,所以它最终也没有成功。我使用的代码如下所示。

有人对为什么会发生这种情况有什么建议,或者我可以做些什么来让它发挥作用吗?现在,我的另一个选择是完全摆脱 FAB,或者切换到其他库(例如 Google 的 Material Design Components)并使用该 FAB。

enter image description here

import UIKit
import Floaty
import Material

class CallCreationViewController: UIViewController, UISearchResultsUpdating, UISearchBarDelegate {

@IBOutlet weak var tableView: UITableView!

let floaty : Floaty = Floaty()

var connections: [User] = []
var filteredConnections : [User] = []
var selectedIds: [String] = []

let inset : CGFloat = 34
let blue : Color = Color(red:0.09, green:0.04, blue:0.35, alpha:1.0)

override func viewDidLoad() {
super.viewDidLoad()

floaty.buttonColor = blue
floaty.plusColor = .white

let voiceItem : FloatyItem = FloatyItem()
voiceItem.title = "Start Voice Call"
voiceItem.icon = UIImage(imageLiteralResourceName: "baseline_phone_white_24pt")
voiceItem.iconTintColor = .white
voiceItem.buttonColor = blue
voiceItem.handler = { item in
self.performSegue(withIdentifier: "startVoiceCall", sender: self)
self.floaty.close()
}

let videoItem : FloatyItem = FloatyItem()
videoItem.title = "Start Video Call"
videoItem.icon = UIImage(imageLiteralResourceName: "baseline_video_call_white_24pt")
videoItem.iconTintColor = .white
videoItem.buttonColor = blue
videoItem.handler = { item in
self.performSegue(withIdentifier: "startVideoCall", sender: self)
self.floaty.close()
}

let broadcastItem : FloatyItem = FloatyItem()
broadcastItem.title = "Start Broadcast"
broadcastItem.icon = UIImage(imageLiteralResourceName: "baseline_settings_input_antenna_white_24pt")
broadcastItem.iconTintColor = .white
broadcastItem.buttonColor = blue
broadcastItem.handler = { item in
self.performSegue(withIdentifier: "startBroadcast", sender: self)
self.floaty.close()
}

floaty.addItem(item: voiceItem)
floaty.addItem(item: videoItem)
floaty.addItem(item: broadcastItem)

floaty.respondsToKeyboard = false
//let constraint = NSLayoutConstraint(item: floaty, attribute: NSLayoutConstraint.Attribute.bottomMargin, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.tabBarController?.tabBar, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 100)

floaty.sticky = true
floaty.paddingX = inset
floaty.paddingY = inset
self.view.addSubview(floaty)

//let constraint = NSLayoutConstraint(item: floaty, attribute: .bottomMargin, relatedBy: .equal, toItem: self.navigationController?.navigationBar, attribute: .top, multiplier: 1, constant: 100)

//floaty.addConstraint(constraint)

self.tableView.dataSource = self

// Do any additional setup after loading the view.
}

}

最佳答案

虽然我不熟悉 Floaty,但我的猜测是您的桌面 View 位于选项卡栏下方,导致其位置波动。

例如,如果我添加一个像这样的通用 UIView:

    let greenView : UIView = UIView(frame: CGRect(x: self.view.frame.size.width - 100, y: self.view.frame.size.height - 100, width: 100, height: 100))
greenView.backgroundColor = UIColor.green
self.view.addSubview(greenView)

它将位于标签栏下方。

如果您正在寻找快速解决方案,并且不一定需要将表格 View 延伸到选项卡栏后面,那么您应该能够添加此行:

self.edgesForExtendedLayout.remove(UIRectEdge.bottom)

在 viewDidLoad 中设置 Floaty 之前,您的 tableview 不会延伸到底部标签栏下方。

关于iOS Swift float 操作按钮在更改屏幕时移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53951389/

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