根据 UIScrollView 的 contentOffset 更改颜色

2023-12-07

我有一个水平的UIScrollView其宽度为960,足以容纳3个UIViewController view's.

每个视图只有一个背景颜色。第一个是粉色,第二个是蓝色,第三个是绿色。

我想在用户滚动时将可见颜色混合/混合/淡化在一起。

因此,如果您从第 1 页(粉色)滚动到第 2 页(蓝色),当用户完全滑到第二页时,在最终到达最终蓝色之前,会出现某种类型的粉色和蓝色混合/混合/淡出。

我发现了一个关于我正在尝试做什么的问题,并且我已经实现了可以在此处找到的答案:https://stackoverflow.com/a/26159561/3344977

这个答案确实有效,我唯一的问题是这个答案只是为了使用 2 个屏幕/颜色而创建的,而我有 3 个屏幕/颜色。

我了解这个答案的基础知识,它取决于 UIScrollView 的contentOffset.x计算当前颜色,但除此之外,我的数学很糟糕,这阻碍了我弄清楚如何修改它以使用第三种颜色。


Fogmeister 发布的答案非常有效!

这是翻译成 Swift 的相同答案:

// this just gets the percentage offset.
// 0,0 = no scroll
// 1,1 = maximum scroll

func scrollViewdidScrollToPercentageOffset(scrollView: UIScrollView, percentageOffset: CGPoint) {
    // get your colours to fade between
    var colors = [UIColor.redColor(), UIColor.blueColor(), UIColor.greenColor()]

    // choose the colours to fade between based on the percentage.
    if (percentageOffset.x < 0.5) {
        // multiply the offset by 2 because we want 0.5 to be 100%
        scrollView.backgroundColor = fadeFromColor(colors[0], colors[1], percentageOffset.x*2)
    } else {
        // minus 0.5 because we want 0.5 to be 0%
        scrollView.backgroundColor = fadeFromColor(colors[1], colors[2], (percentageOffset.x - 0.5)*2)
    }
}

func fadeFromColor(fromColor: UIColor, toColor: UIColor, withPercentage: CGFloat) -> UIColor {
    var fromRed: CGFloat = 0.0
    var fromGreen: CGFloat = 0.0
    var fromBlue: CGFloat = 0.0
    var fromAlpha: CGFloat = 0.0

    fromColor.getRed(&fromRed, green: &fromGreen, blue: &fromBlue, alpha: &fromAlpha)

    var toRed: CGFloat = 0.0
    var toGreen: CGFloat = 0.0
    var toBlue: CGFloat = 0.0
    var toAlpha: CGFloat = 0.0

    toColor.getRed(&toRed, green: &toGreen, blue: &toBlue, alpha: &toAlpha)

    //calculate the actual RGBA values of the fade colour
    var red = (toRed - fromRed) * withPercentage + fromRed
    var green = (toGreen - fromGreen) * withPercentage + fromGreen
    var blue = (toBlue - fromBlue) * withPercentage + fromBlue
    var alpha = (toAlpha - fromAlpha) * withPercentage + fromAlpha

    // return the fade colour
    return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据 UIScrollView 的 contentOffset 更改颜色 的相关文章

  • 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

    在 MonoTouch 中进行实时运动模糊的方法是什么 当滚动惯性图片库时 我需要在 UIImageView 上应用运动模糊效果 以强度和方向作为参数 就像在 Photoshop 中一样 我在 CocoaTouch 或 CoreAnimat
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • 使用 Parse.com 上传视频

    我是解析新手 正在尝试保存视频并将其上传到云端 这是我正在使用的代码 但是当调用 didButtonAction 时 它不断收到错误 我相信问题出在将视频保存为文件时 但我不知道如何解决这个问题 先感谢您 void imagePickerC
  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • 在 iOS 中管理和解除多个视图控制器

    我是一名 iPhone 新手程序员 在开发我的第一个游戏 应用程序时 我为自己提出了一个问题 创造了一个问题 我对此进行了研究 并认为我已经看到了答案 但我不明白如何使它们适用于我的应用程序 我有一个游戏 有几个视图控制器 欢迎 玩 高分
  • 在界面生成器/故事板中设置 UIButton 图像

    我有一个视图控制器 我在故事板中添加了一个圆形矩形按钮 该应用程序运行良好 我还使用故事板将按钮连接到 segue 我正在尝试为此按钮设置一个自定义图像以用于其开和关状态 我如何访问此按钮并设置其属性 在本例中为开和关图像 这是一个屏幕截图
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • 使用隐藏的 SFSafariViewController 获取 Safari cookie

    我正在阅读以下关于从移动网页到本机 iOS 9 应用程序对用户进行身份验证的文章 并且想知道如何最好地实现类似于下面讨论的隐藏控制器的隐藏 safari 视图控制器 https library launchkit io how ios 9
  • 如何在我的 iOS 项目中添加和执行 .sql 文件?

    我找到了很多关于在 iOS 中使用 SQLite 数据库的教程 但没有找到任何直接引用 sql 文件的内容 谁能告诉我如何将现有的 SQL 数据库链接到我的应用程序 编辑 这是一个 MySQL 转储 我们有一个基于浏览器的抽认卡程序 现在我
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • 尝试从独立的 Apple Watch 应用发出网络请求

    当应用程序是独立应用程序时 Apple Watch 是否无法进行网络通话 即使手表已连接到 iPhone 我正在使用新的独立应用程序目标 它没有附带可以发出 WatchConnectivity 请求的配对 iOS 应用程序 我十有八九收到
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • iPad 3 中配备 Xcode 4.2 和 Retina 的 iOS 5.1

    我有一台装有 Mac OS X Snow Leopard 的 Mac 我可以添加 iOS 5 1 吗 使用 iPad 3 的新分辨率 我们将如何处理图像 因为如果该应用程序将在 iPhone 3GS 4 和 iPad 3 中运行 我认为我们
  • 在WKWebview中设置useragent

    如何在 WKWebView 中设置自定义用户代理字符串 我正在尝试嵌入我的应用程序的版本 以便我的服务器端可以看到可用的功能 我找到了以下方法 let userAgent MyApp 1 33 7 request setValue user
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐

  • iOS 7 弃用核心蓝牙

    在 iOS 7 中 一些核心蓝牙内容现已被弃用 例如 CBUUIDGenericAccessProfileString 和 CBUUIDDeviceNameString 这苹果文档 state Deprecated There are no
  • 无法使用类型为 (Int, @value Int) 的参数列表调用“+=”

    我有课Transaction其中有一个变量金额类型的Int 我想从另一个班级访问它 我有一个array of Transactions并将其所有金额相加 所以我有这段代码 func computeTotal gt Int let total
  • Java Double 变量有奇怪的值[重复]

    这个问题在这里已经有答案了 可能的重复 Java 中的浮点运算不能产生精确的结果 我正在做这个简单的除法 但我得到了一个非常奇怪的输出 double a 60 1 2 1 1 gt 600 0000000000008 什么时候应该是600
  • MySQL 中日期字段按年份分组

    我有一个 MySQL 数据库 其中有一个客户表 一些虚拟数据是 customer id date 000001 2008 10 10 000002 2008 11 11 000003 2010 01 02 000004 2007 04 03
  • 为每个用户创建子域

    如何为网站的每个注册用户创建一个子域during注册 对于下面的场景 用户打开 site com register 提供详细信息并提交 立即重定向到 newuser site com 用户可以在 newuser site com 区域工作
  • 有没有办法使用 isin() 作为 pandas 数据框中另一列的计算器函数?

    我的 pandas 数据框中有一列 Product ID 我想基于此列创建一个计算列 3 5 8 中的 PRODUCT ID 将采用值 旧 其他值采用 新 现在我正在使用 for 循环来检查数据帧的每个索引 portfoy PRODUCT
  • 将二进制数分成零组和一组

    例如 我有一个二进制数10000111000011 并希望将其分成连续的 1 和 0 组 1 0000 111 0000 11 我认为这是使用环视的绝佳机会 我的正则表达式对数字使用正向后查找 它捕获以供以后反向引用 然后对同一数字使用负向
  • 在Python中的一行中动态打印字符串

    我正在尝试在一行中打印字符串 我已经找到了解决方案 但它们不能正确地与 Windows 一起使用 我有包含名称的文本文件 我想像这样打印它们 name john然后将 john 更改为下一个名字并保留name 我已经编写了这段代码 但在 W
  • 从 Cefsharp 浏览器获取 HTML

    我在我的 WinForm 项目中使用 CefSharp v55 0 页面加载后 我想从中获取 HTML 代码 为此 我正在使用这个 private void WebBrowserFrameLoadEnded object sender Fr
  • 如何用手指在画布上绘画?

    我正在尝试通过 NET Maui 制作一些绘图的东西 我已阅读文档 现在我可以通过命令绘制形状 但我不知道如何使用触摸事件 用手指绘图 来做到这一点 你知道我该怎么做吗 您知道这方面的任何指南或文档吗 我应该读什么 您可以使用 NET MA
  • 如果形状的高度大于表单的高度,则显示滚动条

    如果我的形状高度大于表单高度 我只需要在表单上显示滚动条 这样 当用户向下滚动时 它可以显示形状的末端 这是我的代码 public partial class Form1 Form public Form1 InitializeCompon
  • 使用 Java 设置 Windows 系统变量

    有没有办法将特定目录添加到 Windows 系统变量 PATH 中 这似乎不起作用 String cmd cmd c set PATH PATH c test Runtime getRuntime exec cmd c test 没有出现在
  • R:将 R 因子扩展为每个因子级别的虚拟列

    我在 R 中有一个相当大的数据框 有两列 我正在努力摆脱Code柱子 factor输入 858 个级别 虚拟变量 问题是 当我尝试这样做时 R Studio 总是崩溃 gt str d data frame 649226 obs of 2
  • 如何在不插入空格的情况下用点连接两个宏?

    我正在预处理 InfoPlist 文件以包含我的修订号 我的标题如下所示 import svn h define APP VERSION 1 0 define APP BUILD APP VERSION SVN REVISION 当我从程序
  • SwiftUI 如何为文本字段中的每个字符添加动画?

    当用户在文本字段中键入字符时 我想在每个新键入的字符上显示一些动画 有点像 Cash App 为数字设置动画的方式 但我也想为字母字符实现它 在 SwiftUI 中可以做到这一点吗 我的直觉是 我可能必须桥接到 UIKit 才能更细致地访问
  • 运行 Selenium 脚本时在 Windows 中保持屏幕处于活动状态(不锁定)

    我正在 Windows 计算机中运行 Selenium 脚本 但在执行过程中一段时间 后屏幕被锁定 我什至已经设置了Never for Power Sleep under Settings 但我的笔记本电脑屏幕在执行过程中仍然被锁定 我想同
  • 如何使用 Visual Studio(和/或 ReSharper)从类字段生成构造函数?

    我已经习惯了许多 Java IDE Eclipse NetBeans and 智能IDEA 为您提供一个命令 用于根据类中的字段生成类的默认构造函数 例如 public class Example public decimal MyNumb
  • 使用 scapy 在 python 中编写以太网桥

    我想做这样的事情 10 1 1 0 24 10 1 2 0 24 A d e B f g C
  • iPhone:按月分组 - 核心数据

    我将日期存储在核心数据实体中 属性 然后我将日期显示在 表格单元格 我想将所有分组 细胞根据月份并且仅 显示相关日期 正确的部分 我正在使用的sectionNameKeyPath NSFetchedResultsController 但我需
  • 根据 UIScrollView 的 contentOffset 更改颜色

    我有一个水平的UIScrollView其宽度为960 足以容纳3个UIViewController view s 每个视图只有一个背景颜色 第一个是粉色 第二个是蓝色 第三个是绿色 我想在用户滚动时将可见颜色混合 混合 淡化在一起 因此 如