如何获取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
相关产品推荐
相关产品推荐

