ios - 如何保持 UIScrollView 内容大小的最小高度?

标签 ios objective-c uiscrollview

我有一个 UIScrollView A(实际上是一个 UICollectionView)在 UINavigationController B 中填充屏幕。 Controller B 的 adjustScrollViewInsets 设置为 true。

我想在用户向上滚动时隐藏导航栏,并在向下滚动时显示它。以下是我的代码:

func scrollViewDidScroll(scrollView: UIScrollView) {
    if (self.lastContentOffset < scrollView.contentSize.height - scrollView.frame.size.height && self.lastContentOffset > scrollView.contentOffset.y) {
        //  dragging down
        if self.navigationController!.navigationBarHidden {
            self.navigationController?.setNavigationBarHidden(false, animated: true)
        }
    } else if (self.lastContentOffset > 0 && self.lastContentOffset < scrollView.contentOffset.y) {
        //  dragging up
        if !self.navigationController!.navigationBarHidden {
            self.navigationController?.setNavigationBarHidden(true, animated: true)
        }
    }

    self.lastContentOffset = scrollView.contentOffset.y
}

现在的问题是,由于iPhone 6+的屏幕太大,当导航栏隐藏时, ScrollView A的contentSize小于它的frame(即全屏frame)。在这种情况下, ScrollView 将无法滚动,导航栏将永远不会再次返回。

我想手动保持 A 的 contentSize 到屏幕的高度至少为 height + 1,但不知道该怎么做。有人能帮忙吗?或者提供更好的解决方案?

顺便说一句,我使用的是 iOS 8 和 Swift。

最佳答案

假设您需要将 ScrollView 的最小内容大小保持为 100(当然这将是动态的并且会因设备而异)

NSInteger minScrollViewContentHeight = 100;

用内容填充 ScrollView 后,您需要检查 ScrollView 的内容大小是否小于所需的最小 ScrollView 内容大小。如果它小于所需的内容大小,则需要按如下方式设置 ScrollView 的最小内容大小 -

if(scrollView.contentSize.height < minScrollViewContentHeight)
    [scrollView setContentSize:CGSizeMake(scrollView.frame.size.width, minScrollViewContentHeight)];

关于ios - 如何保持 UIScrollView 内容大小的最小高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28453072/

相关文章:

ios - Obj-C controller.view.frame 获得真实大小

ios - 无法呈现 Swifty Button 实例 : dlopen(SwiftyButton. 框架,1):未加载库

objective-c - 要在 objective-c 中使用 UTType 要包含什么 header ?

ios - 分配只读属性

objective-c - 子类化 UITextField

iphone - 遍历iphone中文件夹的所有子文件夹

iphone - 当方向改变时如何将ScrollView定位在键盘后面

UIScrollview 不滚动我做错了什么

objective-c - 从命令行更改项目的代码签名

ios - 从容器 View 的 View Controller 中,如何访问包含容器的 View Controller ?