滚动时,hidesBarsOnSwipe从不再显示导航栏

And*_*etz 23 objective-c swift ios8

所以我想在向下滚动时隐藏导航栏并在向上滚动时将其拉回来.隐藏它完美地与

self.navigationController?.hidesBarsOnSwipe = true
Run Code Online (Sandbox Code Playgroud)

但我希望在向上滚动时再次显示它.我做了一个测试项目,其中视图控制器只有一个覆盖整个屏幕的UICollectionView.然后显示导航栏按预期再次显示,直到我将此行添加到viewDidLoad(将单元格添加到集合视图):

self.collectionView.delegate = self
Run Code Online (Sandbox Code Playgroud)

这就是整个视图控制器的样子

class ViewController: UIViewController,UICollectionViewDataSource, UICollectionViewDelegate {

@IBOutlet var collectionView: UICollectionView!
override func viewDidLoad() {
    super.viewDidLoad()
    self.collectionView.dataSource = self
    self.collectionView.delegate = self
    self.collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Test")
    self.navigationController?.hidesBarsOnSwipe = true
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 3
}

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    return collectionView.dequeueReusableCellWithReuseIdentifier("Test", forIndexPath: indexPath) as UICollectionViewCell
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSizeMake(300, 300)
}
}
Run Code Online (Sandbox Code Playgroud)

那么当我将单元格添加到我的集合视图时,为什么显示导航栏会停止工作呢?

Ole*_*man 43

我有同样的问题,但有一个Web视图.问题是Web视图的顶部约束是"Top Layout Guide.Top",在将顶部约束更改为"Superview.Top"后问题得以解决.


iOS*_*dev 10

扩展Oleg的答案 ......

如果使用Interface Builder将约束设置为视图控制器的主视图,则Xcode默认显示用于针对顶部布局指南设置垂直约束的选项.但是,如果按"选项",您将看到一组备用约束."顶级空间到容器"的约束是您正在寻找的.