将UIView固定到屏幕顶部

时间:2020-05-02 20:11:17

标签: ios swift nslayoutconstraint iqkeyboardmanager

这可能是一个简单的问题,但我正在努力寻找一个可以在互联网上解释自己的答案。从CSS设置元素的“位置:固定”的快捷方式等同于什么?我正在尝试将UIView固定在屏幕顶部,以便即使滚动也可以在屏幕顶部看到该视图。谢谢您的任何建议或指向教程的链接!

编辑: 我可能应该提到,我的视图最初是viewController的子视图,而tableview也是放置在其下的viewController的子视图。我正在使用IQKeyboardManagerSwift可可豆荚,它会将包括我的标题的整个视图上移。

4 个答案:

答案 0 :(得分:1)

一种简便的方法是使用带有标题的UITableView。表格视图标题在默认情况下是粘性的。 Here是文档的链接。

答案 1 :(得分:0)

要将视图固定到某个位置,可以使用Layout Anchors。试试:

yourView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true

如果您想进一步了解它:

答案 2 :(得分:0)

听起来您想要浮动标头。您无法在collectionView或tableView上添加视图,因此,如果不通过透视视图显示单独的弹出窗口,就无法固定视图。必须取消此弹出窗口才能显示警报或显示其他视图控制器,所以我认为这不是可行的解决方案。

也许这篇文章会对您有所帮助(我怀疑您会希望为标题设置样式): How to make Supplementary View float in UICollectionView as Section Headers do in UITableView plain style

答案 3 :(得分:0)

自动布局不需要框架,您可以在viewDidLoad中执行以下操作: 首先在yourView上禁用默认约束:

yourView.translatesAutoresizingMaskIntoConstraints = false

在控制器视图中显示yourView之后:

view.addSubview(yourView)

现在使用自动布局在控制器视图的顶部安全区域上设置位置,宽度为视图宽度,高度为100,如注释中的框架示例所示:

yourView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
yourView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
yourView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
yourView.heightAnchor.constraint(equalToConstant: 100).isActive = true

这是将yourView放在顶部的自动布局方法...使其适应您的项目,将“ yourView”替换为要放在顶部的视图的名称。有关更精确的信息,下次请在应用程序中输入代码...祝您有美好的一天:)