swift - 快速百分比项目在屏幕上移动
问题描述
问题:
您正在尝试获取一个从 0 到 1 的数字,具体取决于滚动视图中的视图在可见屏幕上移动了多少。
标准:
当视图位于左侧或屏幕左侧时,该值应返回 0。
当视图位于右侧或屏幕右侧时,该值应返回 1。
试图:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
guard let firstScrollviewView = items.first else {return}
let screenWidth = UIScreen.main.bounds.width
// This should return a value between 0 and 1
let xOffset = firstScrollviewView.convert(CGPoint(x: firstScrollviewView.frame.minX, y: 0), to: view).x
var percentViewMovedOnVisibleScreen: CGFloat = xOffset / screenWidth
let minValue: CGFloat = 0
let maxValue: CGFloat = 1
percentViewMovedOnVisibleScreen = max(min(percentViewMovedOnVisibleScreen, maxValue), minValue)
// RETURN value between 0 and 1 - NOT CORRECT
print("HERE x: ", percentViewMovedOnVisibleScreen)
}
这真的很接近,但我认为 xOffset 属性不正确。
GitHub: https ://github.com/Alexander-Frost/ViewContentOffset
解决方案
xOffset 需要更改为:
let xOffset = scrollView.convert(CGPoint(x:firstScrollviewView.frame.minX, y: 0), to: view).x
推荐阅读
- python - Pipenv:即使使用 pipenv lock --clear 也无法解决依赖关系
- apache - Apache HTTP Server Docker Image - 想要在 Dockerfile 中进行更清洁的配置
- javascript - 需要帮助尝试在 React 中显示图像的动态目录
- python - 使用 python 访问 Amazon API
- python - 将值从一个数据帧替换到另一个
- r - 编程 R 循环
- php - PHP在循环检查之前检查值
- python - Python JSON 对嵌套数据进行排序
- sql - 从 PostgreSQL 中的连接表中过滤数据
- android - 如何从 Adobe XD 链接恢复项目?