You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取ScrollView容器的原点(X/Y)及宽高(Width/Height)

如何从ScrollView的子View数组获取其父容器ScrollView的Frame参数

嗨,这个问题其实很好解决!既然你手里已经有了ScrollView所有子View的NSArray,咱们可以通过子View的父视图关联来拿到目标ScrollView的原点和宽高参数,具体步骤如下:

1. 获取父容器ScrollView实例

因为数组里的每个子View都是直接添加到目标ScrollView中的,所以任意一个子View的superview属性都会指向这个ScrollView。我们可以先取出数组里的一个子View,再转换为UIScrollView类型:

// 假设你的子View数组名为childViews
if (childViews.count > 0) {
    UIView *targetChildView = childViews.firstObject;
    // 先判断父视图是否为ScrollView,避免类型转换出错
    if ([targetChildView.superview isKindOfClass:[UIScrollView class]]) {
        UIScrollView *parentScrollView = (UIScrollView *)targetChildView.superview;
        // 接下来就可以获取ScrollView的frame参数了
    }
}

2. 获取ScrollView的原点与宽高参数

拿到ScrollView实例后,直接通过它的frame属性就能提取你需要的参数:

// 获取原点坐标
CGFloat scrollViewOriginX = parentScrollView.frame.origin.x;
CGFloat scrollViewOriginY = parentScrollView.frame.origin.y;

// 获取宽高尺寸
CGFloat scrollViewWidth = parentScrollView.frame.size.width;
CGFloat scrollViewHeight = parentScrollView.frame.size.height;

小提示

  • 一定要先判断子View数组是否为空,以及父视图是否为UIScrollView类型,这样能避免空指针或者类型转换错误导致的崩溃。
  • 如果你的需求是基于ScrollView自身的坐标系来调整子View,那也可以用bounds属性(parentScrollView.bounds.size.width等),不过frame是相对于ScrollView父视图的位置和尺寸,根据你的需求选择即可。

内容的提问来源于stack exchange,提问作者Amrmsmb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:28:20