首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iPhone - 知道UIScrollView是否达到顶部或底部

iPhone - 知道UIScrollView是否达到顶部或底部

UIScrollView是一个iOS中常用的滚动视图,它可以水平和垂直滚动,以及缩放和移动内容。在iPhone设备中,UIScrollView经常用于实现相册滚动翻页效果、地图App的滚动视图以及新闻App的滚动新闻列表等。

要检查UIScrollView是否达到顶部或底部,可以使用contentOffsetcontentSize属性。contentOffset表示视图当前的位置,contentSize表示视图可以滚动的大小。

如何判断UIScrollView是否达到顶部或底部

在iOS中,可以通过以下方法判断UIScrollView是否达到顶部或底部:

  1. 判断是否到达顶部
代码语言:swift
复制
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let contentOffset = scrollView.contentOffset
    let contentSize = scrollView.contentSize
    let scrollViewBounds = scrollView.bounds
    let contentViewBounds = scrollView.contentView.bounds
    
    // 判断是否到达顶部
    let atTop: Bool = scrollView.contentOffset.y <= contentViewBounds.maxY
    if atTop {
        print("已到达顶部")
    }
}
  1. 判断是否到达底部
代码语言:swift
复制
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let contentOffset = scrollView.contentOffset
    let contentSize = scrollView.contentSize
    let scrollViewBounds = scrollView.bounds
    let contentViewBounds = scrollView.contentView.bounds
    
    // 判断是否到达底部
    let atBottom: Bool = scrollView.contentOffset.y + scrollViewBounds.size.height >= contentSize.height
    if atBottom {
        print("已到达底部")
    }
}

以上示例代码中,scrollViewDidScroll(_:)这个代理方法在每次滚动视图发生滚动时都会被调用。通过检查contentOffsetcontentSize,我们可以确定视图是否到达顶部或底部。如果需要,可以添加更多条件来检查视图中其他部分的滚动状态,例如检查顶部或底部附近的区域。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android开发仿ios的UIScrollView实例代码

刚刚才知道问题在哪边。 好了,说正事,对于ios开发我没接触,不是很了解,百度了半天,差不多就是UIScrollView的把。如果不对,请指证。...具体什么效果呢,我刚才拿朋友的iphone手机看了下,iphone的设置界面,第一个列表往下拉可以继续滚,上拉同理。不过android好像没有自带的这种情况。...下面就来上源码: 首先,最最最重要的就是判断当前视图是否为空,你空视图滚不滚好像没啥区别,除了android 5.0的scrollview自带了那种弧度。...我这边附上view常用的方法,你们可以自行研究,有好多方法我也不知道~~~....其实也是蛮好玩的~ 以上这篇android开发仿ios的UIScrollView实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考。

1K10
  • 兼容 - 纯代码完美适配 iPhoneX

    从图中我们可以看出: status bar 从20 变成了 44 导航条高度依然是 44 顶部的总体高度变成 88 安全区域距离页面底部需要保留 34pt,系统自带的 Tabbar已经适配好了...landscape是风景模式,也就是横屏 看一下各种iPhone尺寸屏幕的分辨率和宽高比 设备 屏幕尺寸 分辨率(pt) Reader 分辨率(px) 宽高比 iPhone 3GS 3.5吋 320x480...X 变化最大的是头部 & 底部iPhone X : StatusBar 高20px,NavigationBar 高44px,底部TabBar高49px iPhone X: StatusBar...高44px,NavigationBar 高44px,底部TabBar高83px 所以,之前项目里写死的 ±49 ±64 都要出问题,下面几个宏挺管用的 #define kStatusBarHeight...if (@available(iOS 11.0, *)){ [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever

    4.5K20

    iOS多设备适配简史以及相应的API支撑实现

    远古的iPhone3和iPhone4时代,设备尺寸都是固定3.5inch,没有所谓的适配的问题,只需要用视图的frame属性进行硬编码即可。...iOS11出来后尤其是iPhoneX设备推出,iPhoneX设备的特殊性表现为顶部的状态栏高度由20变为了44,底部还出现了一个34的安全区,当横屏时还需要考虑左右两边的44的缩进处理。...你需要对所有的布局代码进行重新适配和梳理以便兼容iPhoneX和其他设备,这里面还是状态栏的高度以及底部安全区的的高度尤为棘手。 个人认为这两个版本的发布是iOS开发人员遇到的需要大量布局改版的版本。...为了达到完美适配我们可能需要写大量的if,else以及写很多宏以及版本兼容来进行特殊处理。...h:Regular iPhone4/5/6/7/X 横屏 w:Compact h:Compact iPhone6/7Plus, iPhoneXMax 竖屏 w:Compact h:Regular iPhone6

    1K30

    如何快速定位、分析、解决非Crash的BUG(iOS 11篇)

    底部始终无法选择! 6s模拟器,蓝色箭头指向的区域是无法选择的! 以这个区域为突破口,对比此处区域的高度值和裁剪的偏移值,得到大致是1:2的比例,符合2x屏幕。...对于做过iPhone X适配的开发,对于44这个数值域是非常敏感的(顶部安全区域的高度),猜测是和statusBar有关。 再找到6s的模拟器对比裁剪偏移量,果不其然,大致是22pixel。...(猜测是iOS 11 UIScrollView的contentInsetAdjustmentBehavior属性导致) Bug解决: 裁剪时,隐藏statusBar。...在后台数据返回的接口处断点,确定数据返回是否正常,发现iOS 11的模拟器根本没有返回数据。 据此回溯定位:后台数据没有返回=>客户端没发协议=>下拉刷新没有回调。...再从UIScrollView的delegate回调入手,单步调试定位到问题: ?

    2.4K50

    【IOS开发基础系列】UIScrollView专题

    滚动视图必须知道内容视图的大小,以便于知道什么时候停止;一般而言,当滚动出内容的边界时,它就返回了。         ...为了达到这个目的,它临时中断了一个touch-down的事件,通过建立一个定时器,在定时器开始行动之前,看是否触摸的手指做了任何的移动。...它在这些对象之间保持了松散的配对,视图本身与视图控制器任何其它的控制器对象,委托不是滚轴视图的直接子类,它比起牢固配对的子类更加的松散。...每一个默认的UIScrollView的实例,他的scrollsToTop属性默认为YES,所以要实现某一UIScrollView的实例点击设备状态栏返回顶部,则需要关闭其他的UIScrollView的实例的...很好理解:若多个scrollView响应返回顶部的事件,系统就不知道到底要将那个scrollView返回顶部了,因此也就不做任何操作了。

    57330

    iPhone 检测 iPhone X 设备的几种方式和分辨率终极指南

    方式三:通过底部安全区域的高度来判断 方式四:通过是否支持 FaceID 判断 方式五:通过 UIStatusBar 的高度判断 结语 原文链接 参考连接 ---- 本文是我们前两天发的两条小集的汇总...备注:这里所说的 iPhone X 泛指上述介绍的屏幕大小为 5.8、6.1、6.5 英寸三种尺寸,且带有顶部刘海和底部操作条的 iPhone 设备。...一开始我们采用了一种比较简便的方法:通过获取屏幕的高度,判断是否等于 812.0 896.0,代码如图 3 所示。...后面我们想了一个简便的方法,即获取屏幕的宽度和高度,取较大一方进行比较是等于 812.0 896.0,代码如下: 方式三:通过底部安全区域的高度来判断 在去年 iPhone X 发布后,为了适配顶部的浏览和底部的操作条...欢迎补充~ ---- 结语 最后,绝大部分场景,我们需要检测设备是否iPhone X 是为了适配顶部的刘海区域和底部的操作条区域,但是这里我们更推荐通过 Auto Layout 结合 Safe Area

    1.4K20

    记一次 contentInsetAdjustmentBehavior 引发的bug

    ,再通过设置UIScrollView的contentSize 来限定UIScrollView的滚动范围,保证全部内容可被浏览到 2 实现代码 2.1 伪代码 class CustomView: UIView...{ let scrollView: UIScrollView let titleLabel: UILabel = UILabel() ..........30那么少,估计都有60了,根本没有达到实际想要的效果,而且不同机器上表现出来还不一样。...3 问题的分析 在发现实现的效果没有达到想要的效果后,就开始进入问题的分析排查阶段。...3.3 排查方向三 在前面排查的方向都没有办法解决问题时,我已经没有其他任何的思绪了,只能去翻阅scrollView的接口文档,查看是否有其他接口会影响到子View的位置情况,发现了一个属性contentInsetAdjustmentBehavior

    77620

    Ios常用第三方框架(二)

    DLSlideView - DLSlideView对常见的顶部Tab页点击、滑动分页做了封装。...RDVTabBarController - 一个TabBar组件,可以方便设置底部菜单的文字图片,点击效果,小红点提示等。...WXTabBarController - 在系统 UITabBarController 的基础上完美实现了安卓版微信 TabBar 的滑动切换功能,单手操作 iPhone 6 Plus 切换 TabBar...,可以使用在多种不同形态的APP下,还可以将其做为多页多图的滑动介绍。...实现教程 XWCatergoryView - 一个轻量级的顶部分类视图控件,只需要通过简单的设置,你就可以快速集成该控件, 控件目前暂时有底部横条移动,椭圆背景移动,文字缩放,文字颜色变化,和文字颜色渐变五种效果

    7.7K60

    16款值得一用的iPhone线框图模板 (PSD & Sketch)

    模板中标注了顶部导航栏、底部导航栏以及键盘高度的位置。无论是打印复制粘贴到原型工具中使用都非常方便。可以说设计师非常贴心了。...这是一款专门为iPhone 7 准备的线框图模板,设计师同样标注了顶部导航栏、底部导航栏以及键盘高度的位置,可以直接打印出来做手绘原型线框图设计。...这款iPhone线框模板是原型设计工具Mockplus中自带的线框模板,添加了顶部状态栏和底部home按钮。预览时更加形象化。...这款iPhone X 线框模板在Sketchappsources达到了7K+的下载量。足以见得目前iPhone X的受欢迎程度以及iPhone X应用的巨大市场潜力。...你应该知道的线框图设计的规则和禁忌 线框模板已经准备好了,那么怎样才算是正确的使用方法呢?别急,往下看。

    2K20

    掌握 SwiftUI 的 Safe Area

    通过指定 edges,我们可以让某个某几个边突破安全区域的限制。...// 只扩展到底部.ignoresSafeArea(edges: .bottom) // 扩展到顶部底部.ignoresSafeArea(edges: [.bottom, .trailing]) //...SafeAreaRegions 定义了三种安全区域划分: •container由设备和用户界面内的容器所定义的安全区域,包括诸如顶部底部栏等元素。...使用 safeAreaInset 扩展安全区域 在 SwiftUI 中,所有基于 UIScrollView 的组件(ScrollView、List、Form),在默认情况下都会充满整个屏幕,但仍可确保我们可以在安全区域内看到所有的内容...尽管使用 safeAreaInset 为列表在底部添加状态栏自定义 TabBar 非常方便,但如果你的列表中使用了 TextField,情况将变得很麻烦。

    7.7K31

    iPhone X 适配手Q H5 页面通用解决方案

    目前的H5页面可以分为通栏页面和非通栏页面两种,每种页面都可能有底部操作栏,具体如下: 通栏页面 顶部通栏 某些业务的一级页面多数使用了顶部通栏banner的效果,由于iPhone X在状态栏增加了24px...底部Tab栏/操作栏 有些页面使用了底部Tab栏/操作栏,由于iPhone X去掉了底部Home键,取而代之是34px高度的Home Indicator ,对于目前的底部Tab栏/操作栏会造成一定的阻碍...使用终端方案: 经过跟终端同学的沟通,确定是可以通过终端的方式,针对iPhone X机型,在原生界面初始化的时候可选择是否要增加适配层,这样页面就不需要样式处理了。...具体是通过链接中增加参数来进行适配: 参数名:_wvx 控制iPhone X适配行为 参数名:_wvxTclr 控制顶部适配层颜色 参数名:_wvxBclr 控制底部适配层颜色 _wvx 作用 1 <<...底部适配层颜色在主资源加载完成后填充颜色 对于顶部通栏的页面,通过加URL参数来增加顶部黑色适配层。

    13.1K1911

    VVeboTableView 源码解析

    虽然样式比较复杂,但是滑动起来性能却很好:我在我的iphone 4s上进行了Core Animation测试,在滑动的时候帧率没有低于56,而且也没有觉得有半点卡顿,那么他是怎么做到的呢?...:(UIScrollView *)scrollView{ scrollToToping = NO; [self loadContent]; } //滚动到了顶部 - (void)scrollViewDidScrollToTop...255.0 blue:178/255.0 alpha:.5] andHeight:rect.size.height]; //绘制原帖底部的分割线...作者也采取了类似的方法: 首先看一下在cell实现文件里,关于绘制label文字方法的调用: //将文本内容绘制到图片上,也是异步绘制 - (void)drawText{ //如果发现labeldetailLabel...(当前贴是否是转发贴)是不固定的,所以需要在判断之后,用hidden属性来控制相应控件的隐藏和显示,而不是用addSubView的方法。

    1.2K10

    设置Cell的行高:五种方法及优先级1. 四种基本设置方法2. 四种方法的优先级3. 自动进行计算cell的行高

    代理方法调用频率非常的原因是想算contentSize,(UITableView是UIScrollView的子,所以继承了UIScrollView的属性)。...如果不知道每一行的行高,就没有办法计算出contentSize....但是,tableView计算行高是需要有一个底边的约束,才能自动的根据内容设置cell的高度 用代码给cell内部子控件设置约束自动计算行高时,最好给contentView设置"顶部"底部"及宽度约束...self.tableView.rowHeight = UITableVIewAutomaticDimension; 3.2.2 设置cell最下方的底边约束 // 设置contentView的底部约束...2,如果最下方的控件只有一个,可以直接确定最底部的控件,用代码二。

    1.6K60

    兼容iPhone X* 刘海的正确姿势

    以往的做法 其实对于 web 前端来说,刘海在绝大多数的场景下是可以不用处理的,因为 safari 客户端(微信,手Q等)的 statusBar 已经替我们抹平了顶部刘海,我们只需要关心底部的那条黑色的胡子...,因为如果页面底部有按钮的话,就会被胡子给挡住,以往我们兼容过 iphone x 的下巴,但现在回想起来不是正确的做法。...apple 把安全区域的位置通过 css 属性提供给了开发者,它们可以通过CSS的constant( )函数来完成: constant(safe-area-inset-top):在Viewport顶部的安全区域内设置量...为了达到最大兼容目的,我们可以 constant( ) 和 env( ) 同时使用。...这样在不支持 env 设备中也可以达到兼容的目的。

    65910

    兼容iphone x * 刘海的正确姿势

    以往的做法 其实对于 web 前端来说,刘海在绝大多数的场景下是可以不用处理的,因为 safari 客户端(微信,手Q等)的 statusBar 已经替我们抹平了顶部刘海,我们只需要关心底部的那条黑色的胡子...,因为如果页面底部有按钮的话,就会被胡子给挡住,以往我们兼容过 iphone x 的下巴,但现在回想起来不是正确的做法。...constant(safe-area-inset-top):在Viewport顶部的安全区域内设置量(CSS像素) constant(safe-area-inset-bottom):在Viewport底部的安全区域内设置量...为了达到最大兼容目的,我们可以 constant( ) 和 env( ) 同时使用。...这样在不支持 env 设备中也可以达到兼容的目的。 目前到这,在横屏场景下左侧的内容就不会被刘海遮挡住了: ?

    1.1K30

    六天完成一个简单iOS App - 第四天

    (3)当手指滑动界面进行切换界面时,也将相应的按钮置于选中状态,底部指示条移动到选中按钮,之前的按钮取消选中状态。页面的滑动切换需要用到ScrollView的代理方法对页面的滑动进行判断。...精华页面中全部界面的显示 自定义cell的分析,因为全部页面中有4种cell,4种cell顶部底部都是一样的唯有中间部位不一样。这里自定义cell有两种方案。...使用继承,父类cell显示顶部底部等一些相同的控件,中间内容由四种类型不同的cell继承父类自己显示,这样做功能独立清晰,每种cell显示自己中间内容即可,但是这种方法没有办法使用xib来描述cell...全部使用一种cell,先将顶部底部描述出来,中间不一样的地方放什么,视情况而定,中间部分在代码中动态添加。...",error); // 让[刷新控件]结束刷新 [self.tableView.mj_footer endRefreshing]; }]; } 此时cell的顶部底部相同的部分内容已经可以显示

    1.4K70
    领券