Ios 在UIScrollView或UITableView顶部附加UIButton
在Ios 在UIScrollView或UITableView顶部附加UIButton,ios,swift,Ios,Swift,在UIScrollView或UITableView上方附加UIButton的最佳方法是什么,以便在滚动视图时,按钮保持原位 以下是一些例子: 滚动视图时,ui按钮停留在右下角 有很多方法可以做到这一点,但我最常用的两种方法如下 一种方法是将视图控制器嵌入导航控制器中。这将在顶部和底部设置一个栏,如果您选择可以在其上放置栏按钮项目 另一种方法是沿顶部放置UIView,并将约束捕捉到左侧、右侧和顶部,不留边距。然后设置高度。我通常使用40px的高度,但你可以使用适合你的需要。之后,您可以在该视图中
UIScrollView
或UITableView
上方附加UIButton
的最佳方法是什么,以便在滚动视图时,按钮保持原位
以下是一些例子:
滚动视图时,ui按钮
停留在右下角
有很多方法可以做到这一点,但我最常用的两种方法如下
有很多方法可以做到这一点,但我最常用的两种方法如下
根据我的经验,这与scrollView本身是不可靠的 我的解决方案通常是将需要浮动在tableView/scrollView上方的任何内容放在一个普通的ViewController中,该控制器也包含tableView/scrollView父级
如果将情节提要与UITableViewController场景一起使用,这可能意味着您需要将另一个场景与UIViewController一起使用,并使用一个包含UITableViewController的容器。根据我的经验,这在scrollView本身中是不可能实现的 我的解决方案通常是将需要浮动在tableView/scrollView上方的任何内容放在一个普通的ViewController中,该控制器也包含tableView/scrollView父级
如果将情节提要与UITableViewController场景一起使用,这可能意味着您需要将另一个场景与UIViewController一起使用,并使用包含UITableViewController的容器。对于UITableView,请使用tableHeaderView。对于UIScrollView,您需要创建不在滚动视图层次结构中的单独视图。对于UITableView,请使用tableHeaderView。对于UIScrollView,您需要创建一个不在滚动视图层次结构中的单独视图。另一个解决方案是将您的
ui按钮
放在ui工具栏
中,然后使工具栏成为UINavigationController
视图的子视图。之后,在viewDidLayoutSubviews
中,您可以将工具栏的rect
设置为位于导航栏的正下方,并偏移UIScrollView
或UITableView
的顶部。另一种解决方案是将UIButton
放在UIToolbar
中,然后使工具栏成为UINavigationController
视图的子级。之后,在viewDidLayoutSubviews
中,您可以将工具栏的rect
设置为位于导航栏的正下方,并偏移UIScrollView
或UITableView
的顶部。我认为这应该可以实现。将按钮放置在tableviewcontroller外部的视图中。然后将一个出口拖动到tableviewcontroller文件。然后将其添加到代码中。这段代码将把它放在屏幕的顶部
@IBOutlet var buttonView: UIView!
override func viewDidLayoutSubviews() {
self.view.addSubview(buttonView)
}
override func scrollViewDidScroll(scrollView: UIScrollView) {
var rect = self.buttonView.frame
rect.origin.y = max(0,scrollView.contentOffset.y + scrollView.contentInset.top)
self.buttonView.frame = rect
}
我认为这应该行得通。将按钮放置在tableviewcontroller外部的视图中。然后将一个出口拖动到tableviewcontroller文件。然后将其添加到代码中。这段代码将把它放在屏幕的顶部
@IBOutlet var buttonView: UIView!
override func viewDidLayoutSubviews() {
self.view.addSubview(buttonView)
}
override func scrollViewDidScroll(scrollView: UIScrollView) {
var rect = self.buttonView.frame
rect.origin.y = max(0,scrollView.contentOffset.y + scrollView.contentInset.top)
self.buttonView.frame = rect
}
谢谢你们的回答! 通过将按钮从scrollView移动到View本身,我在故事板中实现了这一点。这样它就附加在UIView上,并且独立于scrollview 所以现在的结构是:
- View
- ScrollView
- Button
在此之前:
- View
- ScrollView
- Button
谢谢你们的回答! 通过将按钮从scrollView移动到View本身,我在故事板中实现了这一点。这样它就附加在UIView上,并且独立于scrollview 所以现在的结构是:
- View
- ScrollView
- Button
在此之前:
- View
- ScrollView
- Button
我的第一反应是将按钮放在您想要的uiscrollview或uitableview之外,然后滚动将不会对其产生影响。这样你就可以把它放在其中任何一个上面,但是因为它不在它们里面,所以它不会和它们一起滚动。这使得解决这个问题更加清晰。谢谢很高兴这有帮助。祝你好运。我的第一反应是将按钮放在你想要的uiscrollview或uitableview之外,然后滚动将不会对其产生影响。这样你就可以把它放在其中任何一个上面,但是因为它不在它们里面,所以它不会和它们一起滚动。这使得解决这个问题更加清晰。谢谢很高兴这有帮助。祝你好运